O A2A, ou protocolo Agent2Agent, é um padrão aberto que permite a comunicação estruturada entre agentes de IA, clientes e ferramentas. Neste tutorial, você pode construir um sistema de agentes em que um cliente de chat processa as consultas do usuário e as envia para um agente de IA executado em um servidor compatível com o A2A.
A maioria das aplicações de IA agêntica implementa comunicação personalizada entre componentes (por exemplo, o ChatChain do ChatDev), dificultando a reutilização do mesmo agente em diferentes aplicações ou a integração de ferramentas externas. Essa falta de padronização impede a interoperabilidade e limita o desenvolvimento de um ecossistema de agentes mais amplo.
A A2A soluciona essa limitação separando a camada de comunicação da lógica do agente por meio de um protocolo padronizado criado em HTTP, JSON-RPC 2.0 e eventos enviados pelo servidor (SSE). Essa separação permite que os agentes colaborem com outros agentes, atendam às solicitações dos clientes e acessem ferramentas externas sem um código de integração personalizado.
O A2A é compatível com arquiteturas descentralizadas que permitem que as equipes evoluam seus sistemas de IA de forma incremental, sem quebrar o código do cliente. As equipes podem atualizar ferramentas, trocar modelos ou modificar o comportamento dos agentes enquanto mantêm uma interface consistente em fluxos de trabalho complexos.
Os agentes trocam informações em mensagens estruturadas no formato JSON-RPC, que incluem metadados que enriquecem as interações dos agentes com clareza e consistência. Cada servidor A2A expõe um AgentCard em um endpoint conhecido (.well-known/agent-card.json), que descreve os recursos do agente como dados JSON estruturados. Assim, ele permite que os clientes descubram dinamicamente o que um agente pode fazer, semelhante a como a documentação das APIs descreve os endpoints disponíveis.
Acompanhe para criar e executar um sistema de agentes A2A e ganhar experiência prática com:
Observação: se você já trabalhou com o ACP (Agent Communication Protocol), reconhece as semelhanças. O ACP, originalmente desenvolvido pelo BeeAI da IBM, uniu forças com o Google A2A sob a Linux Foundation. O BeeAI agora usa adaptadores A2A (A2AServer e A2AAgent) para fornecer comunicação compatível com A2A. O A2A também trabalha ao lado do MCP (Model Context Protocol) para permitir que os agentes interajam com fontes de dados e ferramentas, criando ecossistemas de agentes interoperáveis.
Este projeto demonstra como o A2A permite uma separação clara entre a interface do cliente e a lógica do agente.
O fluxo de trabalho segue esta sequência:
Esse fluxo de trabalho demonstra um padrão reutilizável aplicável a casos de uso que exigem comunicação estruturada entre cliente e agente, como chatbots, sistemas de automação de tarefas, agentes de suporte ao cliente e assistentes de pesquisa com orquestração de ferramentas.
Este projeto usa um único agente de IA com vários recursos de ferramentas. Em sistemas mais complexos, você pode implementar vários agentes especializados, cada um focado em domínios ou tarefas específicas.
RequirementAgent (BeeAI): um agente declarativo que seleciona e coordena dinamicamente várias ferramentas com base na solicitação do usuário. Ele usa:
O servidor A2A (
2. Configuração de agentes: cria um RequirementAgent com ferramentas e memória para lidar com o ciclo de vida dos agentes
3. Configuração do servidor: expõe o agente por meio de endpoint HTTP compatível com A2A
O servidor expõe automaticamente um AgentCard em /.well-known/agent-card.json que descreve os recursos dos agentes e ajuda a validar as configurações dos agentes.
O cliente A2A (
Configuração de conexão: cria um adaptador de cliente A2A
O
Troca de mensagens: envia prompts assíncronos e processa respostas:
O
Estes são os requisitos do sistema para executar este projeto:
Antes de começar, aqui está uma visão geral das ferramentas necessárias para este projeto:
Esse projeto usa o Ollama como provedor de modelos para o agente de IA. Siga estas etapas para configurar o Ollama:
Observação: você pode usar qualquer modelo compatível com o Ollama configurando a
Para executar esse projeto, clone o repositório do GitHub usando https://github.com/IBM/ibmdotcom-tutorials.git como a URL HTTPS. Para ver etapas detalhadas sobre como clonar um repositório, consulte a documentação do GitHub.
Este tutorial pode ser encontrado dentro do diretório de projetos do repo.
Dentro de um terminal, navegue até o diretório deste tutorial:
Este projeto exige dois scripts Python separados para execução simultânea, um para o servidor e o outro para o cliente. Você precisa abrir duas janelas ou guias de terminal.
Mantenha seu terminal atual aberto e, em seguida, abra um segundo terminal e certifique-se de que ambos sejam navegados para o diretório de projeto correto (o
Usando um IDE?
Se você estiver usando um IDE como o Visual Studio Code, você pode usar a funcionalidade Dividir terminal para gerenciar vários terminais lado a lado.
Caso contrário, abra duas janelas de terminal independentes e navegue até o diretório do projeto.
Os ambientes virtuais ajudam a deixar as dependências separadas e com manutenção. Para manter as dependências do servidor e do cliente separadas, crie um ambiente virtual para cada componente.
Para o servidor:
Navegue até o
Crie um ambiente virtual com o Python 3.11:
Ative o ambiente virtual:
Observação para usuários do Windows: use venv\Scripts\activate para ativar o ambiente virtual.
Para o cliente:
Navegue até o
Crie e ative um ambiente virtual:
Instale as dependências necessárias para cada componente executando este código em cada terminal:
Você pode executar
No primeiro terminal, inicie o servidor do agente A2A:
Você deverá ver:
O servidor agora está atendendo às solicitações recebidas da aplicação do cliente, pronto para atender à comunicação entre agentes.
No outro terminal, inicie o cliente A2A:
Isso deve solicitar uma entrada de sua parte:
Digite uma mensagem no terminal do cliente e pressione
No terminal do servidor, é possível ver os logs do protocolo A2A mostrando a comunicação com notificações por push:
A primeira solicitação recupera o AgentCard que descreve os recursos do agente. A segunda solicitação envia sua mensagem como um
Observação: as saídas dos LLMs são probabilísticas e podem variar cada vez que você executa o fluxo de trabalho, mesmo com a mesma entrada.
Experimente com diferentes tipos de consultas para testar as várias ferramentas do agente:
Navegue até https://0.0.0.0:9999/.well-known/agent-card.json no seu navegador para visualizar o
Este documento JSON descreve:
Esse AgentCard permite que qualquer cliente em conformidade com o A2A descubra e interaja com o agente sem conhecimento prévio dos detalhes de implementação.
Neste tutorial, você criou um sistema de chat usando um servidor de reclamações A2A que expôs uma interface estruturada para comunicação entre cliente e agente. Ao separar a camada de mensagens da lógica interna, o protocolo Agent2Agent permite que as equipes atualizem os recursos do agente, troquem modelos ou modifiquem as configurações de ferramentas sem alterar o código do cliente. Essa flexibilidade é especialmente valiosa ao coordenar tarefas que exigem entradas, acompanhar o status das tarefas ou tratar cada operação como uma unidade discreta de trabalho.
O A2A funciona definindo um formato de mensagem comum que qualquer componente compatível pode entender, permitindo que agentes autônomos colaborem com outros agentes. A especificação do protocolo define como as mensagens são estruturadas no formato JSON-RPC e enriquecidas com metadados para garantir consistência e clareza entre as interações.
Este tutorial baseia-se nos exemplos básicos fornecidos pelo repositório de amostras A2A. Para mais informações sobre a implementação original, consulte o arquivo readme no repositório, que traz mais contexto e exemplos para a criação de sistemas em conformidade com o A2A.
Para implementações no mundo real, os servidores A2A podem implementar mecanismos de autenticação para proteger os endpoints dos agentes, usar eventos enviados pelo servidor para transmitir respostas e escalar para lidar com fluxos de trabalho de produção. Seguindo esse fluxo de trabalho, você viu como um cliente de linha de comando pode interagir com um agente de IA por meio de um protocolo padronizado, permitindo que o agente coordene várias ferramentas e forneça respostas contextuais. Essa abordagem demonstra o poder do A2A para permitir sistemas de IA sustentáveis, escaláveis e flexíveis.
Quando você terminar de experimentar o sistema, siga estas etapas para encerrar corretamente todos os componentes em execução:
Em cada janela do terminal, pressione Ctrl+C para interromper o processo de execução.
Você deverá ver a saída como:
Se o servidor não responder ou travar ao ser desligado, você poderá pará-lo à força:
Encontre a ID do processo (PID):
Identifique a PID do processo que você está tentando interromper.
Encerre o processo:
repita esse processo para cada servidor, se necessário.
É isso. Você executou com sucesso um sistema de chat completo em conformidade com o A2A.
Crie, implemente e gerencie assistentes e agentes de IA potentes que automatizam fluxos de trabalho e processos com a IA generativa.
Construa o futuro do seu negócio com soluções de IA em que você pode confiar.
Os serviços de IA da IBM Consulting ajudam a reinventar a forma como as empresas trabalham com IA para gerar transformação.