Fluxos de trabalho dinâmicos em habilidades hospedadas pelo Azure Functions

Fluxos de trabalho dinâmicos são uma característica das habilidades hospedadas no Azure Functions. Eles permitem que uma habilidade hospedada inicie um fluxo de trabalho durável com várias etapas de chamadas de ferramentas e períodos de espera, sem precisar escrever código de orquestração do Durable Functions.

Para obter a documentação mais atualizada e abrangente sobre o runtime, consulte Fluxos de trabalho dinâmicos no runtime do Agents do Azure Functions.

Importante

As habilidades hospedadas no Azure Functions estão atualmente em versão prévia. Recursos, nomes de configuração e conectores com suporte podem ser alterados antes da disponibilidade geral.

Em vez de chamar as ferramentas uma de cada vez através do ciclo de conversa, fluxos de trabalho dinâmicos permitem que o modelo de IA gere um plano estruturado de chamadas de ferramentas. O runtime executa o plano como uma orquestração do Durable Functions que pode se distribuir em paralelo, aguardar, sobreviver a reinicializações e permanecer observável, enquanto apenas o resultado final é inserido no contexto da habilidade hospedada.

Por que fluxos de trabalho dinâmicos

Existem quatro limitações básicas para que as habilidades hospedadas chamem ferramentas diretamente no ciclo do modelo:

  • Custo do token. Todo resultado intermediário de ferramenta é adicionado ao contexto do modelo. Um plano com várias etapas pode gastar tokens em dados brutos que o modelo precisa apenas resumir.
  • Latência. Cada chamada direta de ferramenta é mais uma ida e volta ao modelo. Trabalhos longos ou ramificados são executados em série pelo loop do modelo em vez de executar trabalhos independentes em paralelo.
  • Durabilidade. O trabalho inline pode ser perdido se o trabalhador reiniciar, e não há uma maneira de dormir com temporizador ou esperar por um sinal externo de longa duração.
  • Observabilidade. Operadores não podem listar, inspecionar ou cancelar facilmente trabalhos durante o voo sem passar pela sessão de chat.

Fluxos de trabalho dinâmicos abordam essas limitações ao mover a execução do plano para uma orquestração duradoura. A habilidade hospedada inicia o fluxo de trabalho, recebe um ID do fluxo de trabalho e pode encerrar seu turno. O orquestrador executa ferramentas seguras para uso em fluxos de trabalho e temporizadores persistentes. A interface de chat e as interfaces operacionais podem acompanhar o fluxo de trabalho independentemente, e a habilidade hospedada retoma quando o fluxo de trabalho é concluído.

Como fluxos de trabalho dinâmicos se relacionam à chamada de ferramentas programáticas

Fluxos de trabalho dinâmicos são semelhantes em formato ao padrão de chamada de ferramentas programáticas da Anthropic. Nesse padrão, o modelo cria um plano estruturado de ferramentas e o runtime o executa fora do ciclo normal de chat ferramenta por ferramenta. Essa abordagem pode reduzir o uso e a latência do token porque os resultados intermediários ficam fora do contexto do modelo, e um plano criado pelo modelo pode representar múltiplas chamadas de ferramenta.

Fluxos de trabalho dinâmicos aplicam esse padrão ao Azure Functions e adicionam uma camada de durabilidade e operações:

Capacidade Padrão de chamada de ferramenta programática Fluxos de trabalho dinâmicos
Chamadas de ferramenta em formato de plano Sim Sim
Menor uso de tokens e latência para trabalho com várias ferramentas Sim Sim
Execução durável em reinicializações de trabalhadores No Sim, usando Durable Functions
Esperas e temporizadores persistentes No Sim
Lista fora do loop, inspecionar, cancelar e encerrar No Sim
Visibilidade do operador no Durable Task Scheduler No Sim, quando configurado

Quando usar fluxos de trabalho dinâmicos

Use fluxos de trabalho dinâmicos quando uma habilidade hospedada precisar executar trabalhos maiores do que um único turno de chat ou uma chamada direta de ferramenta. Os bons ajustes incluem:

  • Padrões de dispersão/ventilação que reúnem evidências de várias fontes independentes em paralelo, como logs, métricas e histórico de implantação.
  • Executar em paralelo habilidades especializadas hospedadas isoladamente e combinar as respostas delas.
  • Executar um plano em múltiplas etapas onde etapas posteriores dependem dos resultados anteriores da ferramenta.
  • Esperar por um temporizador durável sem manter um trabalhador ocupado.
  • Manter resultados intermediários grandes fora do contexto de conversa da habilidade hospedada até que um resultado final ou resumo esteja disponível.
  • Acompanhar e controlar tarefas de longa duração fora do loop do modelo.

Dica

Se o trabalho puder ser concluído em uma única chamada de ferramenta ou precisar de uma resposta imediata do usuário a cada etapa, use chamadas diretas de ferramenta em vez de um fluxo de trabalho dinâmico.

Como um fluxo de trabalho funciona

O diagrama a seguir mostra os principais componentes da arquitetura dinâmica do fluxo de trabalho:

Diagrama que mostra uma habilidade hospedada iniciando um fluxo de trabalho dinâmico que executa atividades de ferramenta, temporizadores e subagentes por meio de um orquestrador Durable.

Um fluxo de trabalho dinâmico percorre esta sequência:

  1. Um evento ativa a habilidade hospedada, ou um usuário envia uma solicitação pela interface do chat.
  2. A habilidade hospedada chama start_workflow com um plano de fluxo de trabalho gerado pelo modelo de IA.
  3. O runtime inicia o plano como uma orquestração do Durable Functions e retorna imediatamente um ID do fluxo de trabalho.
  4. O orquestrador executa em paralelo as atividades prontas da ferramenta e cria temporizadores duráveis para etapas wait. Também pode delegar tarefas a habilidades hospedadas em subagentes, cada uma executada em uma sessão isolada e sem estado.
  5. Quando o fluxo de trabalho atinge um estado terminal, o runtime notifica a habilidade hospedada, que chama get_workflow_status e resume a saída final.

Quando a habilidade hospedada usa a interface de chat embutida, a interface também consulta o status do fluxo de trabalho e mostra um cartão de progresso.

Resultados intermediários permanecem no armazenamento do fluxo de trabalho. A habilidade hospedada só vê o ID do fluxo de trabalho no início e o status final quando recupera o resultado. A habilidade hospedada não faz sondagem enquanto o fluxo de trabalho é executado.

Ferramentas de gerenciamento de fluxos de trabalho

Quando você ativa fluxos de trabalho, o runtime adiciona estas ferramentas à habilidade hospedada:

Tool Purpose
start_workflow Inicia um plano de fluxo de trabalho validado e retorna imediatamente um ID de workflow.
get_workflow_status Recebe o status atual e o resultado final de um fluxo de trabalho.
list_workflows Lista os fluxos de trabalho pertencentes à sessão atual.
cancel_workflow Solicita cancelamento cooperativo.
terminate_workflow Encerra a instância do fluxo de trabalho abruptamente.

A habilidade hospedada chama essas ferramentas. Os usuários não os chamam diretamente no código da aplicação.

Subagentes de fluxo de trabalho

Uma habilidade hospedada com fluxo de trabalho pode conceder acesso a habilidades hospedadas especializadas na configuração workflows.subagents. Cada especialista é mais um arquivo .agent.md no mesmo aplicativo hospedado de habilidades.

O seguinte assunto inicial permite que o coordenador utilize dois especialistas:

---
name: PR Status Portfolio Coordinator
description: Reviews pull requests and produces an actionable report.
workflows:
  enabled: true
  subagents:
    - agent: pr_status_analyst
      when: Review one pull request and summarize its current status
    - agent: actionable_report_writer
      when: Combine pull-request summaries into an actionable portfolio report
---

O agent valor é o slug com nome de arquivo do especialista. Por exemplo, pr_status_analyst refere-se a pr_status_analyst.agent.md. O valor opcional when ajuda o modelo a decidir quando usar o especialista. O ambiente de execução valida cada especialista em relação a essa permissão explícita antes de agendar o fluxo de trabalho.

O modelo pode gerar uma tarefa de fluxo de trabalho sub_agent com id, agent e um task autocontido. Uma tarefa de subagente também pode usar depends_on, when, e for_each.

{
  "id": "analyze_pr",
  "type": "sub_agent",
  "agent": "pr_status_analyst",
  "task": "Review the supplied pull request and summarize its current status."
}

Cada invocação de subagente é sem estado e isolada:

  • O especialista utiliza seu próprio modelo, instruções, ferramentas, servidores MCP, habilidades e timeout.
  • O especialista não recebe o histórico de conversas do coordenador, o sandbox, as ferramentas de gerenciamento de fluxo de trabalho ou as ferramentas de delegação de tempo de conversa.
  • Uma falha ou tempo de espera de especialistas falha no fluxo de trabalho dos pais.
  • Ferramentas especializadas devem tolerar a reexecução porque uma falha de trabalhador pode fazer com que um subagente seja executado mais de uma vez.

Para um exemplo de ponta a ponta que executa tarefas paralelas de analistas de PR e combina seus resumos em um relatório, veja o exemplo de subagentes de fluxo de trabalho.

Backend de armazenamento

Fluxos de trabalho dinâmicos usam o Durable Functions internamente e suportam os mesmos backends de armazenamento. Por padrão, os fluxos de trabalho usam a conta do Armazenamento do Azure que seu aplicativo de funções já possui. Para cargas de trabalho em produção, você pode migrar para o Durable Task Scheduler (DTS), que fornece um painel com o estado da tarefa por instância, histórico de tentativas e controles para trabalho em voo. O guia prático cobre ambas as opções.

Considerations

Tenha em mente essas limitações atuais ao usar fluxos de trabalho dinâmicos:

  • Manipuladores de ferramentas seguros para fluxos de trabalho devem ser síncronos e devolver valores serializáveis em JSON.
  • O modelo de IA gera o plano de fluxo de trabalho em tempo de execução. Você não pode definir templates de fluxo de trabalho estáticos no YAML ou no Markdown.
  • Você não pode configurar políticas de retentativa e de tempo limite para cada tarefa.
  • O gerenciamento de grandes saídas e a integração com MCP Tasks não estão disponíveis.

Próximas Etapas 

Configure ferramentas seguras para fluxos de trabalho e execute seu fluxo localmente: