Versioning degli agenti
Il versioning degli agenti ti consente di sperimentare diverse configurazioni del tuo agente senza mettere a rischio l’ambiente di produzione. Crea branch isolati, testa le modifiche e distribuisci gradualmente gli aggiornamenti usando la distribuzione del traffico in percentuale.
Vuoi eseguire test A/B? Consulta Esperimenti per il workflow consigliato per testare le modifiche agli agenti sul traffico reale.
Panoramica
Il sistema di versioning offre:
- Snapshot immutabili della configurazione del tuo agente in qualsiasi momento
- Branch isolati per testare le modifiche prima della pubblicazione
- Suddivisione del traffico per distribuire gradualmente le modifiche a una percentuale di utenti
- Merge per trasferire le modifiche da qualsiasi branch a qualsiasi altro branch
- Rebase per trasferire in un branch le ultime modifiche del branch principale
Una volta attivato il versioning per un agente, non può essere disattivato. Tienilo presente prima di attivare il versioning per agenti esistenti.
Concetti chiave
Versioni
Una versione è uno snapshot immutabile della configurazione di un agente in un momento specifico. Ogni versione ha un ID univoco (formato: agtvrsn_xxxx) e contiene:
conversation_config- Prompt di sistema, impostazioni LLM, configurazione della voce, strumenti, knowledge baseplatform_settings- Sottoinsieme soggetto a versioning che include impostazioni di valutazione, widget, raccolta dati e sicurezzaworkflow- Definizione completa del workflow con nodi e archi
Le versioni vengono create automaticamente quando salvi le modifiche a un agente con versioning attivato. Una volta creata, una versione non può essere modificata.
Branch
I branch sono linee di sviluppo denominate, simili ai branch git. Ti consentono di lavorare sulle modifiche in isolamento prima di unirle di nuovo al branch principale.
- Ogni agente con versioning ha un branch Main che non può essere eliminato né archiviato
- Puoi creare branch aggiuntivi da qualsiasi versione di qualsiasi branch esistente, non solo da main
- I branch possono essere uniti a qualsiasi altro branch e i branch non-main possono essere sottoposti a rebase su main per includerne le ultime modifiche
- Ogni branch ha: id (
agtbrch_xxxx), nome, descrizione e un elenco di versioni - I nomi dei branch possono contenere: lettere, numeri e
() [] {} - / .(massimo 140 caratteri)
Distribuzione del traffico
Il traffico può essere suddiviso in percentuale tra più branch, consentendo rilasci graduali e test A/B.
- Le percentuali devono sempre totalizzare esattamente 100%
- L’instradamento del traffico è deterministico in base all’ID della conversazione (lo stesso utente viene sempre indirizzato allo stesso branch)
- Possono essere archiviati solo i branch non archiviati con lo 0% di traffico
Bozze
Le modifiche non salvate vengono archiviate come bozze, così puoi lavorare alle modifiche senza creare subito una nuova versione.
- Le bozze sono per utente e per branch (ogni membro del team ha la propria bozza)
- Le bozze vengono eliminate automaticamente quando viene eseguito il commit di una nuova versione
- Le bozze vengono eliminate anche quando esegui un merge in un branch
Attivare il versioning
Il versioning è facoltativo e deve essere attivato esplicitamente. Puoi attivarlo quando crei un nuovo agente o per un agente esistente.
Una volta attivato, il versioning non può essere disattivato. Si tratta di una modifica permanente al tuo agente.
Attiva durante la creazione di un agente
Attiva dalla dashboard
Attiva tramite l'API
Apri il tuo agente nella dashboard, vai a Impostazioni e attiva il versioning. Dopo l’attivazione, la scheda Versioning sarà disponibile per gestire branch, bozze, versioni e distribuzione del traffico.
Attiva per un agente esistente
Attiva dalla dashboard
Attiva tramite l'API
Apri il tuo agente nella dashboard, vai a Impostazioni e attiva il versioning.
L’attivazione del versioning crea il branch iniziale “Main” con la prima versione contenente la configurazione attuale dell’agente.
Lavorare con i branch
Creare un branch
Puoi creare branch da qualsiasi versione di qualsiasi branch, non solo da main. Facoltativamente, puoi includere modifiche alla configurazione che verranno applicate alla versione iniziale del nuovo branch.
Elencare i branch
Ottenere i dettagli di un branch
Eseguire il commit delle modifiche
Quando aggiorni un agente con versioning attivato, specifica branch_id per creare una nuova versione in quel branch.
Aggiorna dalla dashboard
Aggiorna tramite la CLI
Aggiorna tramite l'API
Apri la scheda Versioning del tuo agente, passa al branch di destinazione, modifica la configurazione e salva per creare una nuova versione.
Una nuova versione viene creata automaticamente nel branch specificato e qualsiasi bozza esistente per quell’utente in quel branch viene eliminata.
Distribuire il traffico
Usa l’endpoint deployments per distribuire il traffico tra i branch. Ciò consente rilasci graduali e test A/B.
L’instradamento del traffico è deterministico in base all’ID della conversazione, assicurando che lo stesso utente raggiunga sempre lo stesso branch nelle diverse sessioni.
Unire i branch
Quando sei soddisfatto delle modifiche apportate a un branch, uniscile a un altro branch. Puoi unire qualsiasi branch non archiviato a qualsiasi altro branch non archiviato, non solo a main.
Per far revisionare le modifiche di un branch prima di unirle, oppure per raggiungere un branch per cui non disponi dell’accesso in scrittura, apri invece una proposta di merge, anziché eseguire direttamente il merge.
Il merge:
- Crea una nuova versione nel branch di destinazione con la configurazione del branch di origine
- Archivia facoltativamente il branch di origine (comportamento predefinito)
- Trasferisce automaticamente il traffico dal branch di origine a quello di destinazione
Il merge non riesce con no_new_changes_to_merge se il branch di origine è stato creato dal branch
di destinazione (e non ha nuovi commit oltre a quelli di quest’ultimo), e con branch_already_merged se è già stato unito
a quella destinazione.
Risolvere i conflitti di merge
Se un’impostazione è stata modificata sia nel branch di origine sia in quello di destinazione dopo la loro divergenza, per impostazione predefinita viene mantenuto il valore del branch aggiornato più di recente. Imposta force=True per usare sempre il valore del branch di origine, indipendentemente dai timestamp.
Visualizza l’anteprima del risultato di un merge, inclusi i campi che verrebbero sovrascritti, prima di confermarlo:
Sottoporre i branch a rebase su main
Il rebase trasferisce le ultime modifiche dal branch main a un altro branch, in modo simile a un rebase git. In questo modo, un branch di lunga durata resta aggiornato con main senza ancora unire le modifiche del branch stesso.
Il rebase:
- Crea una nuova versione nel branch che incorpora le ultime modifiche di main
- Conserva le modifiche del branch: se un’impostazione è stata modificata sia nel branch sia in main, viene sempre mantenuto il valore del branch
- Non riesce con
branch_already_up_to_datese il branch include già tutte le modifiche di main
Solo i branch non-main possono essere sottoposti a rebase e solo su main. Il rebase del branch main stesso
restituisce un errore cannot_rebase_main.
Visualizza l’anteprima del risultato di un rebase prima di confermarlo:
Archiviare i branch
Archivia i branch che non ti servono più. Questo ti aiuta a mantenere organizzato l’elenco dei branch.
Non puoi archiviare un branch a cui è allocato del traffico. Rimuovi tutto il traffico prima di archiviarlo.
Puoi ripristinare i branch archiviati impostando archived=False.
Duplicare un agente con versioning
La duplicazione di un agente crea un nuovo agente che contiene una copia di ogni branch non archiviato dell’agente di origine, non solo del branch principale.
Nell’agente duplicato:
- Il branch principale viene creato dall’ultima versione del branch principale dell’agente di origine
- Ogni altro branch non archiviato viene ricreato con lo stesso nome e la stessa descrizione, a partire dall’ultima versione di quel branch
- Ogni branch inizia con una sola versione, perché la cronologia delle versioni non viene copiata
- I branch archiviati e le bozze non vengono copiati
- Le distribuzioni del traffico non vengono copiate, quindi tutto il traffico viene indirizzato al branch principale finché non distribuisci il traffico ad altri branch
Gli ID dei branch e delle versioni nel duplicato sono nuovi, quindi aggiorna tutti i riferimenti agli ID dell’agente di origine.
Recuperare versioni specifiche
Puoi recuperare un agente in corrispondenza di una versione specifica o della punta di un branch.
Ottenere l’agente a una versione specifica
Ottenere l’agente alla punta del branch
Includere le modifiche della bozza
Riferimento delle impostazioni
Impostazioni soggette a versioning
Queste impostazioni possono differire tra versioni e branch:
Impostazioni per agente
Queste impostazioni appartengono all’agente anziché a una versione, quindi sono condivise da tutti i branch:
Le impostazioni per agente possono essere modificate solo nel branch principale. Negli altri branch, la dashboard le mostra come di sola lettura e la pubblicazione di una versione in un branch non-main elimina qualsiasi modifica a tali impostazioni. Neanche l’unione successiva del branch in main le applica. Passa al branch principale per modificarle; una volta pubblicata lì, la modifica si applica a tutti i branch.
Best practice
Crea i test prima di creare un branch
Configura test automatici che rilevino il comportamento previsto prima di creare un nuovo branch. In questo modo stabilisci una baseline e rilevi tempestivamente le regressioni durante l’iterazione sull’esperimento.
Usa nomi descrittivi per i branch
Scegli nomi di branch che comunichino chiaramente lo scopo dell’esperimento. Includi il nome della
funzionalità, l’ipotesi o il numero del ticket per semplificare il riferimento (ad esempio, feature/new-greeting-flow o
experiment/shorter-responses).
Documenta lo scopo dei branch
Usa il campo della descrizione del branch per spiegare quale ipotesi stai testando, quali metriche definiscono il successo e quali sono le dipendenze o le considerazioni. Questo aiuta i membri del team a comprendere gli esperimenti attivi.
Usa le bozze per i lavori in corso
Salva frequentemente le bozze mentre iteri sulle modifiche. In questo modo preservi il tuo lavoro senza creare versioni non necessarie. Esegui il commit solo quando sei pronto a testare o distribuire.
Inizia con piccole percentuali di traffico
Quando distribuisci un nuovo branch, inizia con il 5-10% del traffico. Questo limita l’esposizione in caso di problemi, pur fornendo dati significativi.
Monitora le metriche chiave prima di aumentare il traffico
Usa la dashboard di analisi per confrontare le prestazioni dei branch. Considera i tassi di completamento delle chiamate, la durata media delle conversazioni, i punteggi delle valutazioni di successo e i tassi di esecuzione degli strumenti. Aumenta il traffico solo quando le metriche raggiungono o superano la baseline del branch principale.