Workflows dinâmicos em competências alojadas pelo Funções do Azure

Fluxos de trabalho dinâmicos são uma funcionalidade das competências alojadas no Funções do Azure. Permitem que uma competência hospedada inicie um fluxo de trabalho persistente, com várias etapas de chamadas a ferramentas e períodos de espera, sem teres de escrever código de orquestração do Durable Functions.

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

Importante

As habilidades hospedadas do Funções do Azure estão atualmente em pré-visualização. Funcionalidades, nomes de configuração e conectores suportados podem mudar antes da disponibilidade geral.

Em vez de chamar as ferramentas uma a uma através do ciclo de conversa, os fluxos de trabalho dinâmicos permitem ao modelo de IA gerar um plano estruturado de chamadas de ferramentas. O runtime executa o plano como uma orquestração Durable Functions que pode dispersar-se, esperar, sobreviver a reinicios e permanecer observável enquanto apenas o resultado final entra no contexto da habilidade hospedada.

Porquê fluxos de trabalho dinâmicos

Existem quatro limitações básicas na chamada direta de ferramentas por competências hospedadas no ciclo do modelo:

  • Custo de token. Cada resultado intermédio de ferramenta é adicionado ao contexto do modelo. Um plano de múltiplas etapas pode gastar tokens em dados brutos que o modelo só precisa de resumir.
  • Latência. Cada chamada direta a uma ferramenta corresponde a mais uma ida e volta ao modelo. O trabalho longo ou com ramificações é executado em série no ciclo do modelo, em vez de executar trabalho independente em paralelo.
  • Durabilidade. O trabalho em linha pode ser perdido se o trabalhador reiniciar, e não há uma forma perfeita de dormir com temporizador ou esperar por um sinal externo de longa duração.
  • Observabilidade. Os operadores não conseguem listar, inspecionar ou cancelar facilmente trabalhos durante o voo sem passar pela sessão de chat.

Fluxos de trabalho dinâmicos resolvem estas limitações ao mover a execução do plano para uma orquestração duradoura. A competência hospedada inicia o fluxo de trabalho, recebe um ID de workflow e pode terminar o seu turno. O orquestrador executa ferramentas compatíveis com fluxos de trabalho e temporizadores persistentes. A interface do chat e as superfícies de operações podem acompanhar o fluxo de trabalho de forma independente, e a competência alojada volta a ser ativada quando o fluxo de trabalho termina.

Como os fluxos de trabalho dinâmicos se relacionam com a chamada de ferramentas programáticas

Os fluxos de trabalho dinâmicos são semelhantes em forma ao padrão de chamada de ferramentas programáticas da Anthropic. Nesse padrão, o modelo cria um plano estruturado de utilização de ferramentas e o ambiente de execução executa esse plano fora do ciclo normal de conversa, ferramenta a ferramenta. Esta abordagem pode reduzir o uso de tokens e a latência porque os resultados intermédios 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 Funções do Azure 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 ferramentas estruturadas em plano Sim Sim
Menor utilização de tokens e latência para trabalho com várias ferramentas Sim Sim
Execução duradoura através dos reinícios dos trabalhadores No Sim, utilizando o Durable Functions
Esperas e temporizadores persistentes No Sim
Listar fora do ciclo, 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 competência alojada precisar de executar trabalho maior do que um simples turno de chat ou uma chamada direta de ferramenta. Boas opções incluem:

  • Padrões de dispersão/ventilação que recolhem evidências de várias fontes independentes em paralelo, como registos, métricas e histórico de implementação.
  • Executar capacidades especializadas isoladas alojadas em paralelo e combinar as suas respostas.
  • Executar um plano em vários passos onde os passos seguintes dependem dos resultados anteriores da ferramenta.
  • Esperar por um temporizador durável sem manter um trabalhador ocupado.
  • Manter resultados intermédios grandes fora do contexto de conversa da competência hospedada até que um resultado final ou resumo esteja disponível.
  • Acompanhar e controlar tarefas de longa duração fora do ciclo do modelo.

Dica

Se o trabalho puder terminar numa única chamada de ferramenta ou precisar de uma resposta imediata do utilizador em cada etapa, use a chamada direta de ferramenta em vez de um fluxo de trabalho dinâmico.

Como funciona um fluxo de trabalho

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

Diagrama que mostra um agente alojado que inicia um fluxo de trabalho dinâmico que executa atividades de ferramentas, temporizadores e subagentes por meio de um orquestrador do Durable.

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

  1. Um evento ativa a competência hospedada, ou um utilizador envia um pedido através da interface do chat.
  2. A competência alojada 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 devolve de imediato um ID de fluxo de trabalho.
  4. O orquestrador executa em paralelo as atividades de ferramenta que estão prontas e cria temporizadores duráveis para os passos wait. Também pode delegar trabalho a capacidades alojadas em subagentes, cada uma delas a executar numa sessão isolada e sem estado.
  5. Quando o fluxo de trabalho atinge um estado terminal, o runtime notifica a skill hospedada, que chama get_workflow_status e resume a saída final.

Quando a habilidade alojada usa a interface de chat incorporada, a interface também consulta o estado do fluxo de trabalho e mostra um cartão de progresso.

Os resultados intermédios mantêm-se no armazenamento do fluxo de trabalho. A skill alojada apenas vê o ID do workflow no momento do arranque e o estado final quando obtém o resultado. A skill alojada não efetua verificações periódicas enquanto o fluxo de trabalho está em execução.

Ferramentas de gestão de fluxos de trabalho

Quando ativas fluxos de trabalho, o runtime adiciona estas ferramentas à skill alojada:

Tool Purpose
start_workflow Inicia um plano de fluxo de trabalho validado e devolve imediatamente um ID de workflow.
get_workflow_status Obtém o estado atual e o resultado final de um fluxo de trabalho.
list_workflows Lista os fluxos de trabalho pertencentes à sessão atual.
cancel_workflow Solicita o cancelamento cooperativo.
terminate_workflow Termina abruptamente a instância do workflow.

A habilidade hospedada chama estas ferramentas. Os utilizadores não os chamam diretamente no código da aplicação.

Subagentes de fluxo de trabalho

Uma competência alojada com fluxo de trabalho pode conceder acesso a competências especializadas alojadas na sua configuração workflows.subagents. Cada especialista é outro ficheiro .agent.md na mesma aplicação alojada de competências.

O seguinte assunto inicial permite ao coordenador usar 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 ficheiro 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 face a esta autorização explícita antes de programar o fluxo de trabalho.

O modelo pode gerar uma tarefa de fluxo de trabalho sub_agent com id, agent e um task autónomo. 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 o seu próprio modelo, instruções, ferramentas, servidores MCP, capacidades e tempo limite.
  • O especialista não recebe o histórico de conversas do coordenador, o sandbox, as ferramentas de gestão de fluxos de trabalho ou as ferramentas de delegação de tempo de chat.
  • Uma falha ou um tempo limite excedido de um especialista faz falhar o fluxo de trabalho principal.
  • As ferramentas especializadas devem tolerar a reexecução porque uma falha de trabalhador pode fazer com que um subagente seja executado mais do que uma vez.

Para um exemplo de ponta a ponta que executa tarefas paralelas de analistas de relações públicas e combina os seus resumos num relatório, veja o exemplo de subagentes de fluxo de trabalho.

Backend de armazenamento

Fluxos de trabalho dinâmicos utilizam o Durable Functions internamente e suportam os mesmos backends de armazenamento. Por defeito, os fluxos de trabalho usam a conta do Armazenamento do Azure que a sua aplicação de funções já tem. Para cargas de trabalho de produção, pode passar para o Durable Task Scheduler (DTS), que fornece um painel com o estado das tarefas por instância, o histórico de novas tentativas e controlos para trabalho em curso. O guia prático cobre ambas as opções.

Considerations

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

  • Os 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. Não podes definir templates de workflow estáticos no YAML ou no Markdown.
  • Não é possível configurar políticas de repetição e tempo limite por tarefa.
  • O processamento de grandes volumes de saída e a integração com MCP Tasks não estão disponíveis.

Passos seguintes

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