O framework Microsoft Agent Framework é a merge entre Semantic Kernel and AutoGen. Isso torna esse framework super poderoso na questão de CÓDIGO + AI.
Neste artigo, eu criei um examplo do zero para mostrar a funcionalidade de Agents invocando uma API (Definida pelo padrão OpenAPI).
Sobre o sample
Existe 4 agentes que representam uma filial de vinhos.
Cada agente representa: North, South, East, West
Cada agente realiza uma chamada para um API (OpenAPI) e interpreta qual endpoint chamar e como passar os parâmetros.
Requerimentos
Vc precisa setar a variável de ambiente AZURE_FOUNDRY_PROJECT_ENDPOINT
Flow do processo

Esse é o endpoint que os agentes vão chamar.

Explicação
A mensagem é enviada para o Workflow, que está configurado para realizar o broadcast da mensagem para todos os agents de uma vez só.
Cada agente chama o endpoint, o agent interpreta os parâmetros do endpoint e chama cada um de maneira correta.
Uma vez obtendo todas as respostas de cada agente, mesmo encontrando o vinho ou não, é gerado um evento de resultado do Workflow, mais precisamente um objeto do tipo WorkflowOutputEvent.
Broadcast da mensagem
A mensagem é enviada para o array de targets, ou seja, os 4 agentes recebem a mensagem de uma vez.

Como o agente reconhece a API ?
É preciso criar um ToolDefinition do tipo OpenApiToolDefinition, no nosso caso nossa API não requer autenticação.

Como agente é criado ?
Nesse exemplo, cada agente é criado em runtime, confira o método abaixo.

Como a resposta é tratada ?
Na imagem abaixo existe o método HandleAsync, é nele que a resposta de cada agente é tratado.
Como são 4 agentes eu aguardo a reposta de todos os eles para depois chamar o YieldOutputAsync

Na imagem abaixo, os 4 agentes também invocan essa função.
A linha amarela significa o usuário enviando uma mensagem para um agente, exemplo “Where can I buy ‘Chateau Margaux’ wine ?” Essa mensagem vai ser enviada para todos os agentes, já que nós estamos procurando por vinhos em todas as filiais.
A linha verde é um token que de fato dispara o agent.

No fim, os agentes são deletados no foundry dessa forma:

O print mostra o resultado do processo. O vinho só foi encontrado na filial North

Conclusão.
O cenário de Mult-Agents é complicado de se visualizar o funcionamento, esse é só um exemplo simples do que esse framework é capaz, recomendo baixar o código e rodar local.
Código completo aqui ——-> https://github.com/rpbs/WineAgentFlow