Versiebeheer voor agents
Met versiebeheer voor agents kun je experimenteren met verschillende configuraties van je agent zonder je productieconfiguratie in gevaar te brengen. Maak geïsoleerde branches, test wijzigingen en rol updates geleidelijk uit met deployment op basis van trafficpercentages.
Wil je A/B-tests uitvoeren? Zie Experimenten voor de aanbevolen workflow om agentwijzigingen te testen met live traffic.
Overzicht
Het versiebeheersysteem biedt:
- Onveranderlijke snapshots van je agentconfiguratie op elk moment
- Geïsoleerde branches om wijzigingen te testen voordat je live gaat
- Trafficverdeling om wijzigingen geleidelijk uit te rollen naar een percentage van de gebruikers
- Mergen om wijzigingen vanuit elke branch naar elke andere branch over te brengen
- Rebasen om de nieuwste wijzigingen van de main branch naar een branch over te halen
Zodra versiebeheer voor een agent is ingeschakeld, kan het niet worden uitgeschakeld. Houd hier rekening mee voordat je versiebeheer voor bestaande agents inschakelt.
Kernconcepten
Versies
Een versie is een onveranderlijke snapshot van de configuratie van een agent op een bepaald moment. Elke versie heeft een unieke ID (indeling: agtvrsn_xxxx) en bevat:
conversation_config- Systeemprompt, LLM-instellingen, stemconfiguratie, tools, kennisbankplatform_settings- Versiebeheerde subset met instellingen voor evaluatie, widget, gegevensverzameling en veiligheidworkflow- Volledige workflowdefinitie met nodes en edges
Versies worden automatisch gemaakt wanneer je wijzigingen opslaat in een agent met versiebeheer. Een versie kan na het maken niet meer worden gewijzigd.
Branches
Branches zijn benoemde ontwikkellijnen, vergelijkbaar met git-branches. Hiermee kun je geïsoleerd aan wijzigingen werken voordat je ze terugmerget naar de main branch.
- Elke agent met versiebeheer heeft een branch Main die niet kan worden verwijderd of gearchiveerd
- Aanvullende branches kunnen worden gemaakt vanuit elke versie op elke bestaande branch, niet alleen vanuit main
- Branches kunnen worden gemerged met elke andere branch en niet-main branches kunnen op main worden gerebased om de nieuwste wijzigingen daarvan op te halen
- Elke branch heeft: id (
agtbrch_xxxx), naam, beschrijving en een lijst met versies - Branchnamen kunnen bevatten: letters, cijfers en
() [] {} - / .(maximaal 140 tekens)
Traffic deployment
Traffic kan per percentage worden verdeeld over meerdere branches, wat geleidelijke uitrol en A/B-tests mogelijk maakt.
- Percentages moeten altijd samen precies 100% zijn
- Trafficrouting is deterministisch op basis van de gespreks-ID (dezelfde gebruiker wordt consequent naar dezelfde branch gerouteerd)
- Alleen niet-gearchiveerde branches met 0% traffic kunnen worden gearchiveerd
Concepten
Niet-opgeslagen wijzigingen worden als concepten opgeslagen, zodat je aan wijzigingen kunt werken zonder meteen een nieuwe versie te maken.
- Concepten zijn per gebruiker, per branch (elk teamlid heeft een eigen concept)
- Concepten worden automatisch verwijderd wanneer een nieuwe versie wordt vastgelegd
- Concepten worden ook verwijderd wanneer er naar een branch wordt gemerged
Versiebeheer inschakelen
Versiebeheer is opt-in en moet expliciet worden ingeschakeld. Je kunt het inschakelen bij het maken van een nieuwe agent of voor een bestaande agent.
Zodra versiebeheer is ingeschakeld, kan het niet worden uitgeschakeld. Dit is een permanente wijziging voor je agent.
Inschakelen bij het maken van een agent
Inschakelen via het dashboard
Inschakelen via de API
Open je agent in het dashboard, ga naar Settings en schakel versiebeheer in. Na inschakeling is het tabblad Versioning beschikbaar om branches, concepten, versies en traffic deployment te beheren.
Inschakelen voor een bestaande agent
Inschakelen via het dashboard
Inschakelen via de API
Open je agent in het dashboard, ga naar Settings en schakel versiebeheer in.
Door versiebeheer in te schakelen, wordt de initiële branch “Main” gemaakt met de eerste versie die de huidige agentconfiguratie bevat.
Werken met branches
Een branch maken
Branches kunnen worden gemaakt vanuit elke versie op elke branch, niet alleen vanuit main. Je kunt optioneel configuratiewijzigingen opnemen die worden toegepast op de initiële versie van de nieuwe branch.
Branches weergeven
Branchdetails ophalen
Wijzigingen vastleggen
Wanneer je een agent met ingeschakeld versiebeheer bijwerkt, geef je de branch_id op om een nieuwe versie op die branch te maken.
Bijwerken via het dashboard
Bijwerken via de CLI
Bijwerken via de API
Open het tabblad Versioning van je agent, schakel over naar de doelbranch, bewerk de configuratie en sla op om een nieuwe versie te maken.
Er wordt automatisch een nieuwe versie gemaakt op de opgegeven branch en elk bestaand concept van die gebruiker op die branch wordt verwijderd.
Traffic deployen
Gebruik het deployments-endpoint om traffic over branches te verdelen. Hiermee kun je geleidelijk uitrollen en A/B-tests uitvoeren.
Trafficrouting is deterministisch op basis van de gespreks-ID, zodat dezelfde gebruiker in verschillende sessies consequent dezelfde branch bereikt.
Branches samenvoegen
Wanneer je tevreden bent met wijzigingen in een branch, voeg je deze samen met een andere branch. Elke niet-gearchiveerde branch kan worden samengevoegd met elke andere niet-gearchiveerde branch, niet alleen met main.
Als je de wijzigingen van een branch wilt laten beoordelen voordat ze worden samengevoegd, of een branch wilt bereiken waarvoor je geen schrijftoegang hebt, open dan een merge proposal in plaats van rechtstreeks samen te voegen.
Samenvoegen:
- Maakt een nieuwe versie in de doelbranch met de configuratie van de bronbranch
- Archiveert optioneel de bronbranch (standaardgedrag)
- Zet verkeer automatisch over van de bronbranch naar de doelbranch
Samenvoegen mislukt met no_new_changes_to_merge als de bronbranch is gemaakt vanuit de doelbranch (en geen
nieuwe commits heeft die verder gaan dan de doelbranch), en met branch_already_merged als deze al is samengevoegd
met die doelbranch.
Mergeconflicten oplossen
Als een instelling in zowel de bron- als doelbranch is gewijzigd sinds ze uiteenliepen, wordt standaard de waarde
van de branch die het meest recent is bijgewerkt behouden. Stel force=True in om altijd de waarde van de
bronbranch te gebruiken, ongeacht timestamps.
Bekijk het resultaat van een merge vooraf, inclusief alle velden die zouden worden overschreven, voordat je deze vastlegt:
Branches rebasen op main
Rebasen haalt de nieuwste wijzigingen uit de main-branch naar een andere branch, vergelijkbaar met een git rebase. Zo blijft een branch die langere tijd bestaat up-to-date met main zonder de eigen wijzigingen van de branch al terug samen te voegen.
Rebasen:
- Maakt een nieuwe versie in de branch waarin de nieuwste wijzigingen van main zijn opgenomen
- Behoudt de eigen wijzigingen van de branch: als een instelling zowel in de branch als in main is bewerkt, blijft altijd de waarde van de branch behouden
- Mislukt met
branch_already_up_to_dateals de branch al alle wijzigingen uit main bevat
Alleen niet-main-branches kunnen worden gerebased, en alleen op main. Het rebasen van de main-branch zelf
geeft een foutmelding cannot_rebase_main.
Bekijk het resultaat van een rebase vooraf voordat je deze vastlegt:
Branches archiveren
Archiveer branches die je niet langer nodig hebt. Zo houd je je branchlijst overzichtelijk.
Je kunt geen branch archiveren waaraan verkeer is toegewezen. Verwijder al het verkeer voordat je archiveert.
Je kunt gearchiveerde branches dearchiveren door archived=False in te stellen.
Een geversioneerde agent dupliceren
Door een agent te dupliceren maak je een nieuwe agent die een kopie bevat van elke niet-gearchiveerde branch van de bronagent, niet alleen van de main-branch.
In de gedupliceerde agent:
- Wordt de main-branch gemaakt op basis van de nieuwste versie in de main-branch van de bronagent
- Wordt elke andere niet-gearchiveerde branch opnieuw gemaakt met dezelfde naam en beschrijving, vanaf de nieuwste versie in die branch
- Begint elke branch met één versie, omdat de versiegeschiedenis niet wordt gekopieerd
- Worden gearchiveerde branches en concepten niet gekopieerd
- Worden verkeersdeployments niet gekopieerd, waardoor al het verkeer naar de main-branch gaat totdat je verkeer uitrolt naar andere branches
De branch- en versie-ID’s in het duplicaat zijn nieuw, dus werk alle verwijzingen naar de ID’s van de bronagent bij.
Specifieke versies ophalen
Je kunt een agent ophalen bij een specifieke versie of branch tip.
Agent ophalen bij specifieke versie
Agent ophalen bij branch tip
Conceptwijzigingen opnemen
Referentie voor instellingen
Geversioneerde instellingen
Deze instellingen kunnen verschillen tussen versies en branches:
Instellingen per agent
Deze instellingen horen bij de agent in plaats van bij een versie, dus elke branch deelt ze:
Instellingen per agent kunnen alleen worden gewijzigd in de main-branch. In andere branches toont het dashboard ze als alleen-lezen, en bij het publiceren van een versie naar een niet-main-branch worden alle wijzigingen eraan verworpen. Ook als je de branch daarna samenvoegt met main, worden ze niet toegepast. Schakel over naar de main-branch om ze te wijzigen; zodra ze daar zijn gepubliceerd, geldt de wijziging voor elke branch.
Best practices
Maak tests voordat je een branch maakt
Stel geautomatiseerde tests in die het verwachte gedrag vastleggen voordat je een nieuwe branch maakt. Dit creëert een basislijn en helpt regressies vroeg te ontdekken terwijl je je experiment iteratief verbetert.
Gebruik beschrijvende branchnamen
Kies branchnamen die het doel van het experiment duidelijk aangeven. Voeg de naam van de feature,
hypothese of het ticketnummer toe voor eenvoudige referentie (bijv. feature/new-greeting-flow of
experiment/shorter-responses).
Documenteer het doel van branches
Gebruik het beschrijvingsveld van de branch om uit te leggen welke hypothese je test, welke statistieken succes bepalen en welke afhankelijkheden of overwegingen er zijn. Dit helpt teamleden actieve experimenten te begrijpen.
Gebruik concepten voor werk in uitvoering
Sla concepten regelmatig op terwijl je wijzigingen iteratief verbetert. Zo blijft je werk behouden zonder onnodige versies te maken. Leg wijzigingen pas vast wanneer je klaar bent om te testen of uit te rollen.
Begin met kleine verkeerspercentages
Begin bij het uitrollen van een nieuwe branch met 5-10% van het verkeer. Dit beperkt de impact als er problemen ontstaan, terwijl je toch bruikbare gegevens krijgt.
Monitor belangrijke statistieken voordat je verkeer verhoogt
Gebruik het analytics dashboard om de prestaties van branches te vergelijken. Let op voltooiingspercentages van gesprekken, gemiddelde gespreksduur, scores voor sucevaluatie en uitvoeringspercentages van tools. Verhoog het verkeer alleen wanneer de statistieken voldoen aan of beter zijn dan de basislijn van je main-branch.