Microsoft Agent Framework + OpenAPI + AIAgents

Author:

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

Leave a Reply

Your email address will not be published. Required fields are marked *