Controle de versão do agente
Controle de versão do agente
Experimente com segurança configurações de agentes usando branches, versões e distribuição de tráfego
O controle de versão de agentes permite experimentar diferentes configurações do seu agente sem colocar em risco a configuração de produção. Crie branches isoladas, teste alterações e implemente atualizações gradualmente usando distribuição por porcentagem de tráfego.
Quer executar testes A/B? Consulte Experimentos para ver o workflow recomendado para testar alterações no agente com tráfego real.
Visão geral
O sistema de controle de versão oferece:
- Snapshots imutáveis da configuração do seu agente a qualquer momento
- Branches isoladas para testar alterações antes de entrar em produção
- Divisão de tráfego para implementar alterações gradualmente para uma porcentagem dos usuários
- Merge para levar alterações de qualquer branch a qualquer outra branch
- Rebase para trazer as alterações mais recentes da branch principal para uma branch
Depois que o controle de versão é ativado em um agente, ele não pode ser desativado. Considere isso antes de ativar o controle de versão em agentes existentes.
Conceitos principais
Versões
Uma versão é um snapshot imutável da configuração de um agente em um momento específico. Cada versão tem um ID único (formato: agtvrsn_xxxx) e contém:
conversation_config- Prompt de sistema, configurações de LLM, configuração de voz, ferramentas, base de conhecimentoplatform_settings- Subconjunto versionado que inclui configurações de avaliação, widget, coleta de dados e segurançaworkflow- Definição completa do workflow com nós e conexões
As versões são criadas automaticamente quando você salva alterações em um agente com controle de versão. Depois de criada, uma versão não pode ser modificada.
Branches
Branches são linhas de desenvolvimento nomeadas, semelhantes a branches do git. Elas permitem trabalhar em alterações de forma isolada antes de fazer o merge de volta na branch principal.
- Todo agente com controle de versão tem uma branch Main que não pode ser excluída nem arquivada
- Branches adicionais podem ser criadas a partir de qualquer versão em qualquer branch existente, não apenas da principal
- Branches podem receber merge em qualquer outra branch, e branches que não são a principal podem receber rebase sobre a principal para incorporar suas alterações mais recentes
- Cada branch tem: ID (
agtbrch_xxxx), nome, descrição e uma lista de versões - Os nomes de branches podem conter: letras, números e
() [] {} - / .(máximo de 140 caracteres)
Distribuição de tráfego
O tráfego pode ser dividido entre várias branches por porcentagem, permitindo implementações graduais e testes A/B.
- As porcentagens devem sempre totalizar exatamente 100%
- O roteamento de tráfego é determinístico com base no ID da conversa (o mesmo usuário é sempre direcionado à mesma branch)
- Apenas branches não arquivadas com 0% de tráfego podem ser arquivadas
Rascunhos
As alterações não salvas são armazenadas como rascunhos, permitindo trabalhar em alterações sem criar imediatamente uma nova versão.
- Os rascunhos são por usuário e por branch (cada membro da equipe tem seu próprio rascunho)
- Os rascunhos são descartados automaticamente quando uma nova versão é confirmada
- Os rascunhos também são descartados ao fazer merge em uma branch
Ativar o controle de versão
O controle de versão é opcional e precisa ser ativado explicitamente. Você pode ativá-lo ao criar um novo agente ou em um agente existente.
Depois de ativado, o controle de versão não pode ser desativado. Esta é uma alteração permanente no seu agente.
Ativar ao criar um agente
Ativar pelo dashboard
Ativar pela API
Abra seu agente no dashboard, acesse Configurações e ative o controle de versão. Depois de ativado, a aba Controle de versão fica disponível para gerenciar branches, rascunhos, versões e distribuição de tráfego.
Ativar em um agente existente
Ativar pelo dashboard
Ativar pela API
Abra seu agente no dashboard, acesse Configurações e ative o controle de versão.
Ativar o controle de versão cria a branch inicial “Main” com a primeira versão que contém a configuração atual do agente.
Trabalhar com branches
Criar uma branch
Branches podem ser criadas a partir de qualquer versão em qualquer branch, não apenas da principal. Opcionalmente, você pode incluir alterações de configuração que serão aplicadas à versão inicial da nova branch.
Listar branches
Ver detalhes de uma branch
Confirmando alterações
Ao atualizar um agente com o versionamento ativado, especifique o branch_id para criar uma nova versão nessa ramificação.
Atualizar pelo painel
Atualizar pela CLI
Atualizar pela API
Abra a aba Versionamento do agente, mude para a ramificação de destino, edite a configuração e salve para criar uma nova versão.
Uma nova versão é criada automaticamente na ramificação especificada, e qualquer rascunho existente desse usuário nessa ramificação é descartado.
Distribuindo tráfego
Use o endpoint de implantações para distribuir o tráfego entre ramificações. Isso permite lançamentos graduais e testes A/B.
O roteamento de tráfego é determinístico com base no ID da conversa, garantindo que o mesmo usuário acesse sempre a mesma ramificação entre sessões.
Mesclando ramificações
Quando estiver satisfeito com as alterações em uma ramificação, mescle-as em outra. Qualquer ramificação não arquivada pode ser mesclada a qualquer outra ramificação não arquivada, não apenas à principal.
Para que as alterações de uma ramificação sejam revisadas antes da mesclagem ou para acessar uma ramificação para a qual você não tem permissão de escrita, abra uma proposta de mesclagem em vez de mesclar diretamente.
A mesclagem:
- Cria uma nova versão na ramificação de destino com a configuração da ramificação de origem
- Opcionalmente arquiva a ramificação de origem (comportamento padrão)
- Transfere automaticamente o tráfego da ramificação de origem para a ramificação de destino
A mesclagem falha com no_new_changes_to_merge se a ramificação de origem foi criada a partir da ramificação de destino
(e não tem novos commits além dela), e com branch_already_merged se ela já tiver sido mesclada
nesse destino.
Resolvendo conflitos de mesclagem
Se uma configuração tiver sido alterada tanto na ramificação de origem quanto na de destino desde que se separaram, o valor da ramificação atualizada mais recentemente será mantido por padrão. Defina force=True para sempre usar o valor da ramificação de origem, independentemente dos registros de data e hora.
Visualize o resultado de uma mesclagem, incluindo os campos que seriam substituídos, antes de confirmá-la:
Rebaseando ramificações na principal
O rebase incorpora as alterações mais recentes da ramificação principal em outra ramificação, de forma semelhante a um rebase do git. Isso mantém uma ramificação de longa duração atualizada com a principal sem ainda mesclar de volta as próprias alterações da ramificação.
O rebase:
- Cria uma nova versão na ramificação que incorpora as alterações mais recentes da principal
- Preserva as próprias alterações da ramificação: se uma configuração foi editada tanto na ramificação quanto na principal, o valor da ramificação é sempre mantido
- Falha com
branch_already_up_to_datese a ramificação já incluir todas as alterações da principal
Somente ramificações que não são a principal podem receber rebase, e apenas a partir da principal. Fazer rebase da própria ramificação principal
retorna um erro cannot_rebase_main.
Visualize o resultado de um rebase antes de confirmá-lo:
Arquivando ramificações
Arquive as ramificações de que você não precisa mais. Isso ajuda a manter sua lista de ramificações organizada.
Você não pode arquivar uma ramificação que tenha tráfego alocado. Remova todo o tráfego antes de arquivá-la.
Ramificações arquivadas podem ser desarquivadas definindo archived=False.
Recuperando versões específicas
Você pode recuperar um agente em uma versão específica ou no ponto mais recente de uma ramificação.
Obter agente em uma versão específica
Obter agente no ponto mais recente da ramificação
Incluir alterações de rascunho
Referência de configurações
Configurações versionadas
Estas configurações podem variar entre versões e ramificações:
Configurações por agente
Estas configurações são compartilhadas entre todas as versões:
Alterações de nome e tags em ramificações que não são a principal não persistem no agente até serem mescladas à principal.
Boas práticas
Crie testes antes de criar uma ramificação
Configure testes automatizados que capturem o comportamento esperado antes de criar uma nova ramificação. Isso estabelece uma referência e ajuda a identificar regressões logo no início ao iterar sobre seu experimento.
Use nomes descritivos para as ramificações
Escolha nomes de ramificações que comuniquem claramente o objetivo do experimento. Inclua o nome do recurso,
a hipótese ou o número do ticket para facilitar a referência (por exemplo, feature/new-greeting-flow ou
experiment/shorter-responses).
Documente os objetivos das ramificações
Use o campo de descrição da ramificação para explicar qual hipótese você está testando, quais métricas definem o sucesso e quais são as dependências ou considerações. Isso ajuda os membros da equipe a entender os experimentos em andamento.
Use rascunhos para trabalhos em andamento
Salve rascunhos com frequência enquanto itera sobre as alterações. Isso preserva seu trabalho sem criar versões desnecessárias. Confirme as alterações apenas quando estiver pronto para testar ou implantar.
Comece com pequenas porcentagens de tráfego
Ao implantar uma nova ramificação, comece com 5 a 10% do tráfego. Isso limita a exposição caso surjam problemas, sem deixar de fornecer dados relevantes.
Monitore métricas importantes antes de aumentar o tráfego
Use o painel de análises para comparar o desempenho das ramificações. Observe as taxas de conclusão de chamadas, a duração média das conversas, as pontuações de avaliação de sucesso e as taxas de execução de ferramentas. Aumente o tráfego apenas quando as métricas atingirem ou superarem a referência da sua ramificação principal.
Aumente o tráfego gradualmente
Amplie o tráfego em incrementos (10% → 25% → 50% → 100%) à medida que a confiança aumentar. Essa abordagem minimiza os riscos enquanto valida o desempenho em cada etapa.
Mantenha as ramificações por pouco tempo
Mescle experimentos bem-sucedidos rapidamente para evitar desvios de configuração. Para ramificações que precisam permanecer abertas por mais tempo, faça rebase delas periodicamente na principal para que não se distanciem demais e se tornem mais difíceis de mesclar.