10-02-03 — Multi-agent Orchestration no Copilot Studio

⏱ 12 minFontes validadas em: 2026-04-29

TL;DR

O Copilot Studio suporta orquestração multi-agente nativamente: um agente orquestrador recebe a solicitação e delega para agentes especializados via handoff ou chamada direta. Em 2025 a Microsoft adicionou suporte ao protocolo A2A (Agent-to-Agent) e ao MCP, permitindo que agentes de diferentes plataformas colaborem. Para equipes .NET, isso se traduz em agentes especializados que são APIs REST chamadas pelo orquestrador.

Padrões de orquestração

graph TD U[Usuário] --> O[Agente Orquestrador
Copilot Studio] O -->|Delega RH| A1[Agente RH
custom engine .NET] O -->|Delega TI| A2[Agente IT Help
declarative] O -->|Delega Vendas| A3[Agente Sales
Python + Fabric] A1 --> R[Resposta consolidada] A2 --> R A3 --> R R --> U

Handoff entre agentes no Copilot Studio

O mecanismo nativo de handoff no Copilot Studio usa o nó Transfer to Agent, que pode apontar para outro agente publicado na mesma organização.

GA 2025: A Microsoft tornou o agent-to-agent handoff GA no Copilot Studio em março de 2025. O agente receptor recebe o contexto da conversa (histórico + variáveis) para continuar sem perda de contexto.

Configurando handoff no manifest

// No topic do agente orquestrador — nó Transfer to Agent
// Via Copilot Studio UI: Actions > Transfer to Agent > selecionar agente publicado

// Para custom engine, via código .NET:
// O orquestrador chama o sub-agente via HTTP
public class OrchestratorAgent : ActivityHandler
{
    private readonly HttpClient _httpClient;
    
    protected override async Task OnMessageActivityAsync(
        ITurnContext<IMessageActivity> turnContext,
        CancellationToken cancellationToken)
    {
        var intent = await ClassifyIntent(turnContext.Activity.Text);
        
        string response = intent switch
        {
            "HR" => await CallSubAgent("https://hr-agent.azurewebsites.net/api/query", 
                                       turnContext.Activity.Text),
            "IT" => await CallSubAgent("https://it-agent.azurewebsites.net/api/query",
                                       turnContext.Activity.Text),
            _ => "Não entendi. Pode reformular?"
        };
        
        await turnContext.SendActivityAsync(MessageFactory.Text(response), cancellationToken);
    }
    
    private async Task<string> CallSubAgent(string url, string query)
    {
        var payload = new { query, context = "from-orchestrator" };
        var response = await _httpClient.PostAsJsonAsync(url, payload);
        var result = await response.Content.ReadFromJsonAsync<AgentResponse>();
        return result?.Answer ?? "Sem resposta do sub-agente";
    }
}

Protocolo A2A (Agent-to-Agent)

O protocolo A2A, proposto pela Google e adotado pela Microsoft em 2025, padroniza a comunicação entre agentes de diferentes plataformas. Um agente A2A expõe um agent card (JSON) que descreve suas capacidades, e outros agentes podem descobri-lo e chamar suas tasks.

// Agent Card simplificado (JSON exposto em /.well-known/agent.json)
{
  "name": "Agente RH Impar",
  "description": "Responde perguntas sobre políticas de RH, férias e benefícios",
  "url": "https://hr-agent.impar.com.br",
  "version": "1.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false
  },
  "skills": [
    {
      "id": "rh-policy",
      "name": "Consulta de Políticas RH",
      "description": "Responde perguntas sobre as políticas internas da Impar",
      "inputModes": ["text"],
      "outputModes": ["text"]
    }
  ]
}

MCP para integração com ferramentas

O Model Context Protocol permite que agentes exponham ou consumam ferramentas de forma padronizada. No contexto multi-agente, um agente pode ser tanto servidor MCP (expondo suas capacidades) quanto cliente MCP (consumindo capacidades de outros).

graph LR O[Orquestrador] -->|MCP Client| S1[MCP Server: Fabric Data] O -->|MCP Client| S2[MCP Server: SharePoint] O -->|A2A| A1[Agente RH] O -->|A2A| A2[Agente Vendas]

Padrões de design para multi-agente

Padrões que funcionam:
  • Hub-and-spoke — Um orquestrador central, vários especialistas. Mais simples, mas single point of failure
  • Peer-to-peer — Agentes se chamam diretamente baseados em capability discovery. Mais resiliente, mais complexo
  • Pipeline — A saída de um agente é entrada do próximo (ex: extração → análise → resposta). Ideal para processamento de documentos
Cuidado com loops: Em arquiteturas multi-agente, é fácil criar loops infinitos de handoff. Implemente sempre um contador de turnos e uma condição de saída. O Copilot Studio tem um limite built-in de 5 handoffs por conversa.

Como isso se conecta

  • Módulo 9 (Semantic Kernel) — AgentGroupChat do SK implementa orquestração multi-agente em .NET
  • 11-03-03 — OneLake MCP Server pode ser usado como fonte por agentes especializados
  • 10-03-01 — A topologia multi-agente inteira publica como um único app Teams

Fontes

  1. Microsoft Learn — Agent handoff in Copilot Studio
  2. Google — Agent2Agent Protocol specification
  3. Tech Community — Microsoft joins Agent2Agent protocol