Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O Agent Framework 1.13.0 contém pequenas alterações de quebra na execução do fluxo de trabalho em Python. A maioria das aplicações não exige alterações. As alterações afetam aplicações que dependem de contagens exatas de superpassos ou números de iteração, definem max_iterations no limite de convergência, inspecionam o ID de origem da mensagem inicial ou fazem suposições sobre o posicionamento e a ordenação dos pontos de verificação.
Background
Antes da versão 1.13.0, a criação de pontos de verificação não cumpria integralmente a promessa de captar o estado do fluxo de trabalho necessário para retomar a execução a partir de qualquer limite registado. O executor inicial era executado antes do superstep e do ciclo de checkpoints, pelo que o primeiro checkpoint continha a saída do executor inicial e o estado atualizado, mas não a entrada original do fluxo de trabalho. De forma semelhante, as respostas aos eventos solicitados eram entregues e processadas sem serem previamente registadas num ponto de controlo. Como resultado, nenhum checkpoint conseguia reexecutar o executor de arranque a partir da entrada original nem reproduzir uma continuação com intervenção humana a partir da resposta fornecida.
Alterações comportamentais
A versão 1.13.0 elimina estas lacunas. O executor inicial agora executa o primeiro superpasso, um ponto de controlo de entrada regista a entrada inicial antes desse superpasso, e um ponto de verificação resposta-entrada regista as respostas entregues antes de serem processadas. Em conjunto, estas alterações fazem com que um fluxo de trabalho com pontos de controlo seja integralmente reexecutável a partir dos seus dados de entrada, incluindo continuações com intervenção humana.
Importante
Estas alterações não afetam os pontos de controlo criados antes da versão 1.13.0. Os pontos de controlo existentes continuam suportados e ainda podem ser restaurados após atualização.
Alterações que podem exigir ação
| Area | Antes da 1.13.0 | Na versão 1.13.0 e posteriores | Impacto do utilizador |
|---|---|---|---|
| Iniciar executor | O executor de arranque foi executado antes do ciclo de superstep. | A entrada é colocada na fila para o executor inicial, que executa o primeiro superpasso. | Cada nova execução emite mais um evento superstep_started e superstep_completed. |
| Contagem de iterações | A iteração 1 representou o primeiro superpasso após o executor inicial ter sido executado. | A Iteração 1 executa o executor inicial. Os turnos de trabalho seguintes são adiados uma iteração. | Um fluxo de trabalho que antes precisava de iterações $N$ agora precisa de $N + 1$. |
| Fonte da mensagem de entrada | A mensagem inicial tinha o ID "Workflow"de origem codificado fixamente. |
A mensagem inicial é entregue pela ligação interna do executor de arranque e tem o ID de origem INTERNAL_SOURCE_ID(start_executor.id). |
O código que lê ou filtra o ID da fonte inicial da mensagem deve usar o novo valor. |
Melhorias na possibilidade de voltar a jogar
| Area | Antes da 1.13.0 | Na versão 1.13.0 e posteriores | Melhoria |
|---|---|---|---|
| Posto de controlo inicial | O checkpoint iteration-0 foi criado após a execução do executor inicial. Capturava as mensagens de saída do executor e o estado atualizado, mas não a entrada original. | Um ponto de controlo de entrada é criado antes do superpasso 1. Regista a entrada original em fila de espera para o executor de arranque. | O restauro do ponto de verificação de entrada repete a execução completa, incluindo o executor de arranque. |
| Ponto de controlo de resposta | Uma resposta a um evento solicitado era entregue sem antes ser registada num posto de controlo. | É criado um ponto de verificação de entrada da resposta depois de a resposta ser entregue e antes de ser executado o superpasso que a consome. | Ao restaurar o ponto de controlo de entrada da resposta, a continuação que consome a resposta é executada novamente. |
Atualizar a gestão de eventos superstep
Uma nova execução do fluxo de trabalho produz agora um par adicional de eventos de superstep, porque o executor inicial é executado no superstep 1:
-
superstep_startedcomiteration == 1 -
superstep_completedcomiteration == 1
O trabalho do executor subsequente é deslocado em um superpasso. Atualize testes, telemetria, indicadores de progresso ou outro código que assuma uma contagem exata de eventos ou que mapeie um executor específico para uma iteração fixa.
O código que responde aos tipos de eventos sem depender da sua contagem ou iteração não precisa de mudar.
Revise o limite máximo de iteração
O limite max_iterations passa agora a incluir o superstep que executa o executor de arranque. Se um fluxo de trabalho usou anteriormente o seu limite total, aumente o valor configurado em um:
from agent_framework import WorkflowBuilder
workflow = WorkflowBuilder(
start_executor=start_executor,
max_iterations=previous_max_iterations + 1,
).build()
Não é necessária qualquer alteração se o fluxo de trabalho já convergir antes de atingir o limite configurado.
Atualizar as verificações iniciais da fonte da mensagem
Se um executor de início consumir o ID de origem da mensagem inicial, substitua o valor fixo "Workflow" pelo ID de origem da aresta interna do executor de início.
Antes da 1.13.0:
is_workflow_input = ctx.source_executor_ids != ["Workflow"]
Na versão 1.13.0 e posteriores:
from agent_framework import INTERNAL_SOURCE_ID
is_workflow_input = ctx.source_executor_ids != [INTERNAL_SOURCE_ID(self.id)]
INTERNAL_SOURCE_ID(executor_id) atualmente devolve "internal:<executor_id>". Use o helper em vez de construir esta cadeia de caracteres para que o seu código siga o formato de source ID do framework.
Atualização do tratamento de pontos de controlo
Pontos de verificação de entrada iniciais
Quando o ponto de verificação está ativado, cada nova execução cria agora um ponto de verificação inicial em iteration_count == 0. Este checkpoint contém a entrada original como uma mensagem em voo endereçada ao executor inicial. Ao restaurá-lo, reexecuta o executor inicial e reproduz toda a execução do fluxo de trabalho.
Após cada superpasso concluído, a estrutura continua a criar um ponto de controlo. Para uma execução com $N$ superpassos, espere $N + 1$ pontos de controlo: o ponto de controlo inicial, seguido de um ponto de controlo por cada superpasso concluído.
Reveja o código que parte do princípio de que o ponto de controlo da iteração 0 contém o estado produzido pelo executor de arranque. Esse estado aparece agora no ponto de controlo criado após o superstep 1.
Pontos de controlo de pedido e resposta
Quando se continua um fluxo de trabalho com workflow.run(responses=...), o framework cria agora um checkpoint de entrada de resposta após colocar as respostas na fila e antes de executar o superstep que as consome. Restaurar este ponto de controlo volta a entregar as respostas gravadas e repete o resto do fluxo de trabalho.
O ponto de controlo de entrada de resposta tem o mesmo iteration_count que o ponto de controlo anterior que contém o pedido pendente. É um ponto de controlo separado cujo previous_checkpoint_id aponta para esse ponto de controlo de pedido pendente.
Importante
Um iteration_count não é garantidamente único num histórico de checkpoints com intervenção humana. Siga a previous_checkpoint_id cadeia para determinar a ordem dos pontos de controlo. Se precisar do checkpoint mais recente, use a API de armazenamento de checkpoints em vez de selecionar o iteration_count maior.
Lista de verificação da migração
- Atualize asserções e consumidores de eventos que dependam de contagens exatas de superpassos ou números de iteração.
- Aumente
max_iterationsem uma unidade apenas nos fluxos de trabalho que atingiram o limite anterior. - Substitua as verificações iniciais do ID de origem para
"Workflow"porINTERNAL_SOURCE_ID(start_executor.id). - Considere o ponto de verificação da iteração 0 como o ponto de verificação de entrada de pré-execução.
- Ordene os pontos de controlo com intervenção humana com base na linhagem, em vez de assumir que
iteration_counté único. - Verifique se repetir um ponto de controlo de entrada e um ponto de controlo de resposta-entrada produz a saída esperada e os efeitos secundários.
Para obter detalhes de implementação, consulte Permitir a repetição integral do ponto de verificação do fluxo de trabalho.