Declarative Workflows 1.0 do Agent Framework: seu grafo de orquestração agora é um arquivo YAML
O Microsoft Agent Framework lançou o Declarative Workflows 1.0 em 2026-07-23. O pacote agent-framework-declarative 1.0.0 do Python alcança paridade com o pacote .NET Microsoft.Agents.AI.Workflows.Declarative, então o roteamento multiagente vive em YAML em vez de C#.
A Microsoft lançou o Declarative Workflows 1.0 para o Agent Framework em 2026-07-23. O destaque é a paridade: o agent-framework-declarative do Python chegou ao 1.0.0, igualando o pacote .NET Microsoft.Agents.AI.Workflows.Declarative, que já era estável. Os dois agora carregam o mesmo dialeto de YAML e o executam sobre o mesmo runtime de workflows que executa os grafos definidos em código.
Se você construiu um sistema multiagente com os padrões de orquestração que chegaram ao 1.0 no início deste mês, escreveu o roteamento em C#. Toda vez que o time de produto queria um novo ramo de triagem, você editava uma cadeia de builders, recompilava e implantava de novo. Os workflows declarativos tiram esse grafo do assembly e o colocam em um arquivo que você pode comparar com diff, revisar e versionar como configuração.
Como o YAML realmente se parece
Um workflow é um documento kind: Workflow com um trigger e uma lista de ações. As expressões são Power Fx, com o prefixo =, e leem dos escopos System.* e Local.*:
kind: Workflow
trigger:
kind: OnConversationStart
id: support_router
actions:
- kind: SetVariable
id: set_category
variable: Local.category
value: =System.LastMessage.Text
- kind: ConditionGroup
id: route_request
conditions:
- condition: =Local.category = "billing"
id: billing_route
actions:
- kind: InvokeAzureAgent
id: billing_agent
agent:
name: BillingAgent
conversationId: =System.ConversationId
elseActions:
- kind: InvokeAzureAgent
id: general_agent
agent:
name: GeneralAgent
conversationId: =System.ConversationId
Esse é o roteador inteiro. ConditionGroup dá ramificação, SetVariable dá estado e InvokeAzureAgent chama um agente do Foundry pelo nome. O conjunto de ações do 1.0 também cobre laços, InvokeFunctionTool para funções locais, chamadas a ferramentas MCP e HTTP, pausas com humano no circuito para aprovações, e checkpoint mais retomada.
Carregando a partir do C#
O lado .NET são dois tipos. DeclarativeWorkflowOptions encapsula um provedor de agentes, e DeclarativeWorkflowBuilder.Build<TInput> compila o YAML no mesmo objeto Workflow que você teria construído na mão:
using Azure.Identity;
using Microsoft.Agents.AI.Workflows;
using Microsoft.Agents.AI.Workflows.Declarative;
AzureAgentProvider agentProvider = new(
new Uri(foundryEndpoint),
new DefaultAzureCredential());
DeclarativeWorkflowOptions options = new(agentProvider)
{
Configuration = configuration,
};
Workflow workflow = DeclarativeWorkflowBuilder.Build<string>(
Path.Combine(AppContext.BaseDirectory, "support-router.yaml"),
options);
StreamingRun run = await InProcessExecution.RunStreamingAsync(
workflow,
"billing",
CheckpointManager.CreateInMemory());
await foreach (WorkflowEvent evt in run.WatchStreamAsync())
{
if (evt is AgentResponseEvent response)
{
Console.WriteLine(response.Response.Text);
}
}
Repare que Build<string> é genérico sobre o tipo de entrada, e o Workflow retornado flui para o InProcessExecution exatamente como um construído programaticamente. O checkpointing, os eventos de streaming e os eventos de erro não mudam, então o código do seu host não se importa com a forma de autoria do grafo.
Onde isso deixa de ser a ferramenta certa
O declarativo é uma serialização do modelo de workflows, não um substituto dele. Executores personalizados, máquinas de estado sob medida e qualquer coisa que precise de controle de fluxo real além de condições e laços continuam pertencendo ao C#. A divisão prática: coloque o roteamento de agentes e o encadeamento de ferramentas em YAML, onde alguém que não programa consegue ler, e mantenha em código o comportamento realmente personalizado. Você pode misturar os dois em uma única aplicação.
Comece pela referência de workflows declarativos no MS Learn para ver o catálogo completo de ações.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.