Hoppa till navigering

Versionshantering för agenter

Experimentera säkert med agentkonfigurationer med hjälp av grenar, versioner och trafikdistribution

Versionshantering för agenter gör att du kan experimentera med olika konfigurationer för din agent utan att riskera din produktionskonfiguration. Skapa isolerade grenar, testa ändringar och rulla gradvis ut uppdateringar med trafikdistribution baserad på procentandelar.

Vill du köra A/B-tester? Se Experiment för det rekommenderade arbetsflödet för att testa agentändringar mot aktiv trafik.

Översikt

Versionshanteringssystemet erbjuder:

  • Oföränderliga ögonblicksbilder av din agentkonfiguration vid varje tidpunkt
  • Isolerade grenar för att testa ändringar innan de går live
  • Trafikdelning för att gradvis rulla ut ändringar till en andel av användarna
  • Sammanslagning för att föra in ändringar från valfri gren i valfri annan gren
  • Rebase för att hämta de senaste ändringarna från huvudgrenen till en gren

När versionshantering har aktiverats för en agent kan den inte inaktiveras. Tänk på detta innan du aktiverar versionshantering för befintliga agenter.

Grundläggande begrepp

Versioner

En version är en oföränderlig ögonblicksbild av en agents konfiguration vid en specifik tidpunkt. Varje version har ett unikt ID (format: agtvrsn_xxxx) och innehåller:

  • conversation_config - Systemprompt, LLM-inställningar, röstkonfiguration, verktyg, kunskapsbas
  • platform_settings - Versionshanterad delmängd som omfattar inställningar för utvärdering, widget, datainsamling och säkerhet
  • workflow - Fullständig workflow-definition med noder och kanter

Versioner skapas automatiskt när du sparar ändringar i en versionshanterad agent. När en version har skapats kan den inte ändras.

Grenar

Grenar är namngivna utvecklingslinjer, liknande git-grenar. De låter dig arbeta med ändringar isolerat innan du slår samman dem tillbaka till huvudgrenen.

  • Varje versionshanterad agent har en Main-gren som inte kan tas bort eller arkiveras
  • Ytterligare grenar kan skapas från valfri version på valfri befintlig gren, inte bara huvudgrenen
  • Grenar kan slås samman med valfri annan gren, och andra grenar än huvudgrenen kan rebasas på huvudgrenen för att hämta dess senaste ändringar
  • Varje gren har: id (agtbrch_xxxx), namn, beskrivning och en lista över versioner
  • Grennamn kan innehålla: bokstäver, siffror och () [] {} - / . (högst 140 tecken)

Trafikdistribution

Trafik kan delas mellan flera grenar efter procentandel, vilket möjliggör gradvisa utrullningar och A/B-testning.

  • Procentandelarna måste alltid uppgå till exakt 100 %
  • Trafikdirigeringen är deterministisk baserat på konversations-ID:t (samma användare dirigeras konsekvent till samma gren)
  • Endast icke-arkiverade grenar med 0 % trafik kan arkiveras

Utkast

Osparade ändringar lagras som utkast, så att du kan arbeta med ändringar utan att omedelbart skapa en ny version.

  • Utkast är per användare, per gren (varje teammedlem har sitt eget utkast)
  • Utkast kasseras automatiskt när en ny version sparas
  • Utkast kasseras också när de slås samman till en gren

Aktivera versionshantering

Versionshantering är valfri och måste aktiveras uttryckligen. Du kan aktivera den när du skapar en ny agent eller för en befintlig agent.

När versionshantering har aktiverats kan den inte inaktiveras. Detta är en permanent ändring av din agent.

Aktivera när du skapar en agent

Öppna din agent på instrumentpanelen, gå till Settings och aktivera versionshantering. När den har aktiverats blir fliken Versioning tillgänglig för att hantera grenar, utkast, versioner och trafikdistribution.

Aktivera för en befintlig agent

Öppna din agent på instrumentpanelen, gå till Settings och aktivera versionshantering.

När du aktiverar versionshantering skapas den första grenen “Main” med den första versionen som innehåller den aktuella agentkonfigurationen.

Arbeta med grenar

Skapa en gren

Grenar kan skapas från valfri version på valfri gren, inte bara huvudgrenen. Du kan valfritt inkludera konfigurationsändringar som tillämpas på den nya grenens första version.

branch = client.conversational_ai.agents.branches.create(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
parent_version_id="agtvrsn_xxxx",
name="experiment-v2",
description="Testing new prompt and voice settings"
)
print(f"Created branch: {branch.created_branch_id}")
print(f"Initial version: {branch.created_version_id}")

Lista grenar

branches = client.conversational_ai.agents.branches.list(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6"
)
for branch in branches.branches:
print(f"{branch.name}: {branch.id}")

Hämta grendetaljer

branch = client.conversational_ai.agents.branches.get(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
branch_id="agtbrch_xxxx"
)
print(f"Branch: {branch.name}")
print(f"Versions: {len(branch.versions)}")

Spara ändringar

När du uppdaterar en agent med versionshantering aktiverad anger du branch_id för att skapa en ny version på den grenen.

Öppna fliken Versioning för din agent, växla till målgrenen, redigera konfigurationen och spara för att skapa en ny version.

En ny version skapas automatiskt på den angivna grenen och eventuella befintliga utkast för den användaren på den grenen kasseras.

Distribuera trafik

Använd distributionsändpunkten för att fördela trafik mellan grenar. Det möjliggör gradvisa utrullningar och A/B-testning.

deployment = client.conversational_ai.agents.deployments.create(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
deployments=[
{"branch_id": "agtbrch_main", "percentage": 90},
{"branch_id": "agtbrch_xxxx", "percentage": 10}
]
)
Alla procentandelar måste tillsammans bli exakt 100 %. Distributionen misslyckas annars.

Trafikdirigeringen är deterministisk baserat på konversations-ID:t, vilket säkerställer att samma användare konsekvent når samma gren mellan sessioner.

Sammanfoga grenar

När du är nöjd med ändringarna i en gren kan du sammanfoga dem med en annan gren. Alla icke-arkiverade grenar kan sammanfogas med andra icke-arkiverade grenar, inte bara med main.

Om du vill att en grens ändringar ska granskas innan de sammanfogas, eller om du vill nå en gren som du inte har skrivåtkomst till, öppnar du i stället ett sammanfogningsförslag i stället för att sammanfoga direkt.

merge = client.conversational_ai.agents.branches.merge(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
source_branch_id="agtbrch_xxxx",
target_branch_id="agtbrch_main",
archive_source_branch=True, # Default: true
force=False # Default: false
)

Sammanfogning:

  • Skapar en ny version på målgrenen med källgrenens konfiguration
  • Arkiverar valfritt källgrenen (standardbeteende)
  • Överför automatiskt trafik från källgrenen till målgrenen

Sammanfogning misslyckas med no_new_changes_to_merge om källgrenen skapades från (och inte har några nya commits utöver) målgrenen, och med branch_already_merged om den redan har sammanfogats med det målet.

Lösa sammanfogningskonflikter

Om en inställning har ändrats på både käll- och målgrenen sedan de delades upp behålls som standard värdet från den gren som uppdaterades senast. Ange force=True för att alltid använda källgrenens värde i stället, oavsett tidsstämplar.

Förhandsgranska resultatet av en sammanfogning, inklusive eventuella fält som skulle åsidosättas, innan du bekräftar den:

preview = client.conversational_ai.agents.branches.preview_merge(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
source_branch_id="agtbrch_xxxx",
target_branch_id="agtbrch_main",
force=False
)
print(preview.overridden_fields)
print(preview.conflicts)

Rebase av grenar på main

En rebase hämtar de senaste ändringarna från main-grenen till en annan gren, ungefär som git rebase. Det håller en långlivad gren uppdaterad med main utan att ännu sammanfoga grenens egna ändringar tillbaka.

client.conversational_ai.agents.branches.rebase(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
branch_id="agtbrch_xxxx"
)

Rebase:

  • Skapar en ny version på grenen som innehåller mains senaste ändringar
  • Bevarar grenens egna ändringar: om en inställning har redigerats både på grenen och i main behålls alltid grenens värde
  • Misslyckas med branch_already_up_to_date om grenen redan innehåller alla ändringar från main

Endast andra grenar än main kan rebasa, och endast på main. En rebase av själva main-grenen returnerar felet cannot_rebase_main.

Förhandsgranska resultatet av en rebase innan du bekräftar den:

preview = client.conversational_ai.agents.branches.preview_rebase(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
branch_id="agtbrch_xxxx"
)
print(preview.overridden_fields)

Arkivera grenar

Arkivera grenar som du inte längre behöver. Det hjälper dig att hålla grenlistan organiserad.

client.conversational_ai.agents.branches.update(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
branch_id="agtbrch_xxxx",
archived=True
)

Du kan inte arkivera en gren som har tilldelad trafik. Ta bort all trafik före arkivering.

Arkiverade grenar kan avarkiveras genom att ange archived=False.

Hämta specifika versioner

Du kan hämta en agent vid en specifik version eller vid en grentopp.

Hämta agent vid specifik version

agent = client.conversational_ai.agents.get(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
version_id="agtvrsn_xxxx"
)

Hämta agent vid grentopp

agent = client.conversational_ai.agents.get(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
branch_id="agtbrch_xxxx"
)

Inkludera utkaständringar

agent = client.conversational_ai.agents.get(
agent_id="agent_7101k5zvyjhmfg983brhmhkd98n6",
branch_id="agtbrch_xxxx",
include_draft=True
)

Inställningsreferens

Versionshanterade inställningar

Dessa inställningar kan skilja sig mellan versioner och grenar:

KategoriInställningar
Konfiguration för konversationerSystemprompt, agentpersonlighet, val av LLM och parametrar, röstinställningar (TTS-modell, röst-ID), verktygskonfiguration, kunskapsbas, första meddelande, språkinställningar, turdetektering, avbrottsinställningar
Versionshanterade plattformsinställningarevaluation – utvärderingskriterier, widget – widgetens utseende och beteende, data_collection – extrahering av strukturerade data, overrides – åsidosättningar för konversationsstart, workspace_overrides – konfiguration av webhooks, testing – testkonfigurationer, safety – skyddsräcken (IVC-/icke-IVC-inställningar)
WorkflowFullständig workflow-definition (noder och kanter)

Inställningar per agent

Dessa inställningar delas mellan alla versioner:

InställningBeskrivning
name, tagsAgentnamn och taggar (uppdateras endast vid commit till main-grenen)
authAutentiseringsinställningar och tillåtelselista
call_limitsSamtidighets- och dagliga gränser
privacyLagringsinställningar och läge utan lagring
banBanstatus (endast administratörer)

Ändringar av namn och taggar på grenar som inte är main sparas inte för agenten förrän de har sammanfogats med main.

Bästa praxis

1

Skapa tester innan du skapar en gren

Konfigurera automatiserade tester som fångar det förväntade beteendet innan du skapar en ny gren. Det ger dig en baslinje och hjälper dig att hitta regressioner tidigt när du itererar på experimentet.

2

Använd beskrivande namn på grenar

Välj grensnamn som tydligt beskriver syftet med experimentet. Inkludera funktions- namnet, hypotesen eller ärendenumret för enkel referens (t.ex. feature/new-greeting-flow eller experiment/shorter-responses).

3

Dokumentera grenarnas syfte

Använd fältet för grenbeskrivning för att förklara vilken hypotes du testar, vilka mått som avgör framgång och eventuella beroenden eller överväganden. Det hjälper teammedlemmar att förstå aktiva experiment.

4

Använd utkast för pågående arbete

Spara utkast ofta medan du itererar på ändringar. Det bevarar ditt arbete utan att skapa onödiga versioner. Gör commit först när du är redo att testa eller driftsätta.

5

Börja med små trafikandelar

När du driftsätter en ny gren börjar du med 5–10 % av trafiken. Det begränsar exponeringen om problem uppstår och ger samtidigt användbar data.

6

Övervaka nyckeltal innan du ökar trafiken

Använd analysdashboarden för att jämföra grenarnas prestanda. Titta på samtalsfrekvens för slutförande, genomsnittlig konversationslängd, poäng för framgångsutvärdering och frekvens för verktygskörning. Öka bara trafiken när måtten når eller överträffar baslinjen för main-grenen.

7

Öka trafiken gradvis

Skala upp trafiken stegvis (10 % → 25 % → 50 % → 100 %) när förtroendet ökar. Detta tillvägagångssätt minimerar risken samtidigt som prestandan valideras i varje steg.

8

Håll grenarna kortlivade

Sammanfoga lyckade experiment snabbt för att undvika att konfigurationer glider isär. För grenar som behöver vara öppna längre bör du regelbundet rebasa dem på main så att de inte glider för långt isär och blir svårare att sammanfoga.

Nästa steg