Pular para o conteúdo principal

AG-UI: Um protocolo leve para interação entre agente e usuário

Descubra como a AG-UI padroniza a comunicação entre agentes de IA e interfaces de usuário por meio de um design orientado a eventos, possibilitando experiências em tempo real, multimodais e com intervenção humana.
Atualizado 19 de dez. de 2025  · 9 min lido

A mudança de bots simples de geração de texto para agentes autônomos quebrou a maneira tradicional como criamos software. Antes, você mandava uma solicitação e recebia uma resposta. Mas os modelos com capacidade de agente (como o novo GPT-5.2-Codex, por exemplo) não funcionam assim. Eles raciocinam, planejam, usam ferramentas e podem levar alguns minutos para terminar uma tarefa. Eles mostram sinais de progresso e pedem permissões antes de poderem atualizar um painel em tempo real.

Tentar encaixar essas interações fluidas e de longa duração em uma API REST padrão é como tentar transmitir um vídeo ao vivo por e-mail. O resultado geralmente é uma bagunça de código personalizado que liga seu front-end ao seu back-end, dificultando a troca de ferramentas ou a escalabilidade.

Este guia apresenta o Protocolo de Interação Agente-Usuário (AG-UI), um padrão real que está ganhando força e foi projetado para corrigir esse “silo de interação”. Vou mostrar como o AG-UI cria uma linguagem universal para agentes e interfaces de usuário, como ele lida com estados complexos e como você pode começar a usá-lo para criar aplicativos agenticos robustos.

Antes de começarmos, uma observação: A linguagem deste artigo pode parecer estranha, a menos que você seja versado em desenvolvimento web backend/frontend e padrões de design de API.

Introdução aos agentes de IA

Aprenda os fundamentos dos agentes de IA, seus componentes e o uso no mundo real - não é necessário programar.
Explorar o curso

Por que os aplicativos agenticos precisam da AG-UI

Antes de vermos o código, deixa eu explicar por que precisávamos de um novo protocolo. Tudo se resume à diferença fundamental entre uma função e um agente.

A limitação da solicitação/resposta

No desenvolvimento web tradicional, as interações são transacionais. Você pede um perfil de usuário e o servidor manda pra você. É uma troca única.

Os agentes, no entanto, são imprevisíveis e demoram. Quando você pede a um agente para “depurar por que seu pipeline de CI de repente começou a falhar depois que um colega de equipe fez uma fusão”, ele não retorna um objeto JSON imediatamente. Em vez disso, pode:

  1. Pega os últimos 50 registros de commit do GitHub (Ação).
  2. Percebeu que uma nova dependência foi adicionada sem atualizar o arquivo de bloqueio (Observação).
  3. Compare a versão do pacote com CVEs conhecidos (Raciocínio).
  4. Pergunte se você quer reverter a fusão ou corrigi-la (Human-in-the-loop).

Vou explicar isso mais tarde na seção “Tipos de eventos”, mas, por enquanto, basta saber que uma solicitação HTTP padrão expiraria enquanto aguardava que tudo isso acontecesse. Você precisa de uma maneira de transmitir essas atualizações parciais para que o usuário não fique olhando para uma tela congelada.

As necessidades específicas dos agentes

Os agentes precisam de um fluxo de informações que vai além do texto. Eles precisam sincronizar o Estado.

Imagina um agente te ajudando a escrever um relatório. Não é só bater papo; é editar um documento. Você e o agente podem estar digitando ao mesmo tempo. O AG-UI resolve isso tratando o “documento” como um estado compartilhado, usando atualizações eficientes para manter sua tela e a memória do agente sincronizadas, sem sobrescrever o trabalho um do outro.

Como os agentes e as interfaces do usuário se comunicam

A AG-UI substitui o antigo modelo de Chamada de Procedimento Remoto (RPC) por um modelo de Event-Sourcing. Em vez de ficar esperando por uma resposta final, o agente manda um monte de eventos que mostram o que ele está fazendo.

A transmissão do evento

Pense no fluxo AG-UI como um ticker de notícias para o cérebro do seu agente. O aplicativo cliente (seu front-end) assina esse ticker e atualiza a interface do usuário com base no que vê. Essa abordagem separa a lógica: seu front-end React não precisa saber como o agente está pensando, só precisa saber o que mostrar.

Comparação cronológica que mostra a alta latência das solicitações e respostas HTTP tradicionais em comparação com o feedback imediato e em tempo real do streaming de eventos AG-UI.

O AG-UI evita a espera. Imagem do autor.

Tipos de eventos principais

O protocolo define tipos de eventos padrão que cobrem quase todos os cenários de interação. Aqui estão os principais que você vai ver:

  1. TEXT_MESSAGE_*: Eventos que transmitem texto gerado peça por peça. Isso normalmente envolve eventos _START, _CONTENT (o fluxo de tokens) e _END, que juntos criam o efeito familiar de “digitação”.

  2. TOOL_CALL: Sinais de que o agente quer fazer algo, tipo ver o tempo ou consultar um banco de dados. O mais importante é que o AG-UI consegue transmitir osargumentos da chamada da ferramenta, permitindo que sua interface do usuário preencha formulários antes mesmo que o agente termine de “falar”.

  3.  STATE_DELTA: Esse é o grande responsável pela colaboração. Em vez de reenviar o documento inteiro toda vez que uma letra muda, o agente manda um pequeno “diff” (tipo “adicionar 'olá' no índice 5”).

  4. INTERRUPT: A válvula de segurança. Se um agente executar uma ação sensível (como “Excluir banco de dados”), ele emitirá um evento de interrupção. O fluxo fica parado até o usuário mandar de volta um evento de aprovação.

Multimodalidade e etapas de raciocínio

O protocolo não se limita ao texto. Ele lida com multimodalidade, ou seja, streaming de imagens, áudio e anexos de arquivos junto com a conversa. Ele também padroniza as etapas de raciocínio, separando os pensamentos internos do agente (traços de raciocínio) da resposta pública final. Você pode ter notado um padrão parecido ao usar ferramentas como o chatGPT, onde os indicadores de progresso ou etapas intermediárias aparecem separadamente da resposta final. Isso permite que você decida se quer mostrar aos usuários o andamento da execução ou só o resultado final.

Blocos de construção AG-UI

Agora que você já entendeu o fluxo, vamos ver os recursos específicos que tornam a AG-UI tão útil para os desenvolvedores.

Interface do usuário generativa

O texto é ótimo, mas às vezes um gráfico é melhor. A interface do usuário generativa permite que um agente decida, durante a execução, que deve mostrar um componente da interface do usuário em vez de texto.

Diagrama comparando AG-UI como a camada de transporte que transmite eventos e A2UI como a interface que define os componentes da carga útil.

AG-UI transmite eventos; A2UI define componentes. Imagem do autor.

Tem uma diferença aqui que muitas vezes confunde as pessoas (vou falar sobre isso de novo na seção sobre estrutura): AG-UI é o mecanismo de entrega (camada de transporte), e A2UI (Interface Agente-para-Usuário) é a definição da interface do usuário (carga útil). Um agente pode usar um evento AG-UI TOOL_CALL para transportar uma carga útil A2UI, uma árvore JSON declarativa que descreve um componente da interface do usuário (como um “Cartão de Preço de Ações”). O seu frontend recebe isso e gera o gráfico de verdade.

Estado compartilhado com JSON Patch

Lidar com o estado compartilhado é complicado. Se o agente enviar um objeto de contexto enorme de 5 MB a cada segundo, seu aplicativo ficará lento.

O AG-UI resolveisso com o JSON Patch (RFC 6902). Como eufalei antes sobre sincronização de estado, quando o agente muda um valor na sua memória, ele calcula a diferença e manda um eventoSTATE_DELTA.

[
  {
    "op": "replace",
    "path": "/user/status",
    "value": "active"
  }
]

O cliente recebe essa instrução leve e aplica-a ao seu estado local. Essa eficiência é o que torna possível a colaboração em tempo real com os agentes.

AG-UI no panorama dos protocolos

Você já deve ter ouvido falar de outros protocolos, como o MCP (Protocolo de Contexto de Modelo). É importante saber onde o AG-UI se encaixa na pilha para não usar a ferramenta errada para o trabalho.

A pilha de agentes

Gosto de pensar nisso como um triângulo de comunicação:

  1. MCP (Agente ↔ Ferramentas): Isso conecta o agente ao mundo backend: bancos de dados, repositórios GitHub e APIs internas. É sobre conseguir informações.
  2. A2A (Agente ↔ Agente): Isso permite que os agentes conversem entre si, delegando tarefas a subagentes.
  3. AG-UI (Agente ↔ Usuário): Essa é a “Última Milha”. Ele conecta a inteligência do agente ao usuário humano.

Diagrama mostrando os três protocolos principais do agente: AG-UI conectando agentes a usuários, MCP conectando agentes a ferramentas e A2A conectando agentes a outros agentes.

O Protocolo Trinity conectando agentes. Imagem do autor.

O AG-UI não liga pra como o agente conseguiu os dados (isso é tarefa do MCP, como eu falei antes); ele só se preocupa em como mostrar esses dados pra você.

Implementando a AG-UI

Vamos ver como isso funciona na prática. Os desenvolvedores geralmente interagem com a AG-UI de uma das três maneiras: criando 1) aplicativos de agente (conectando um front-end a um agente), criando 2) integrações (tornando uma estrutura compatível) ou criando 3) clientes (criando novos front-ends). A maioria de vocês vai estar na primeira categoria.

Vou explicar o código daqui a pouco, mas primeiro entenda que normalmente você não vai escrever os manipuladores de protocolo brutos sozinho. As bibliotecas cuidam da embalagem. Mas é preciso entender o fluxo para fazer a depuração.

Criando o canal de eventos

A maioria das implementações usa Server-Sent Events (SSE) porque são simples, compatíveis com firewalls e perfeitos para streaming unidirecional do servidor para o cliente. Eu já tinha dado uma dica disso antes, mas o SSE é o segredo que deixa esse protocolo tão leve em comparação com os WebSockets.

Em uma configuração típica (como com o Microsoft Agent Framework ou CopilotKit), seu servidor expõe um endpoint que atualiza a conexão para um fluxo.

Assinatura simples de eventos

Aqui está um exemplo conceitual de como um cliente front-end escuta o fluxo. Observe como lidamos com diferentes tipos de eventos para atualizar a interface do usuário.

// Connect to the AG-UI stream
const eventSource = new EventSource('/api/agent/stream');

eventSource.onmessage = (event) => {
  const data = JSON.parse(event.data);

  switch (data.type) {
    case 'TEXT_MESSAGE_CONTENT':
      // Append text to the chat window
      updateChatLog(data.content);
      break;

    case 'TOOL_CALL_START':
      // Show a "Processing..." indicator or the specific tool UI
      showToolIndicator(data.tool_name);
      break;

    case 'STATE_DELTA':
      // Apply the JSON patch to our local state store
      applyPatch(localState, data.patch);
      break;

    case 'INTERRUPT':
      // Prompt the user for permission
      showApprovalModal(data.message);
      break;
  }
};

Esse padrão esconde a complexidade da lógica interna do agente. Seu front-end é só um “reprodutor” dos eventos que o agente manda.

Integrações e suporte ao ecossistema

Você não precisa criar tudo isso do zero. O ecossistema está amadurecendo rapidamente, com as principais plataformas e estruturas convergindo para padrões de interação semelhantes, orientados por eventos.

O “Triângulo de Ouro” das ferramentas

A Microsoft fala de um “Triângulo de Ouro” para o desenvolvimento de agentes:

  1. DevUI: Para visualizar o processo de pensamento do agente (depuração).
  2. OpenTelemetry: Para medir o desempenho e o custo.
  3. AG-UI: Para se conectar ao usuário.

Estruturas compatíveis

O ecossistema está crescendo rapidinho. Além dos principais participantes, o apoio está crescendo em todos os setores:

  1. Estrutura do Microsoft Agent: Tem middleware nativo para ASP.NET Core (Microsoft.Agents.AI.Hosting.AGUI).

  2. CopilotKit: Funciona como o “navegador” para AG-UI, oferecendo um front-end React completo que sabe como renderizar esses eventos prontos para uso.

  3. Ecossistema Python: Frameworks como LangGraph, CrewAI, Mastra, Pydantic AI, Agno e LlamaIndex podem ser expostos como pontos finais AG-UI.

  4. SDKs: Embora o, o TypeScript e o Python sejam os mais usados, os SDKs estão ativos ou em desenvolvimento para Kotlin, Go, Dart, Java eRust.

Confiabilidade, depuração e segurança

Abrir uma linha direta de comunicação entre uma IA e um navegador traz alguns riscos. Veja como manter seu aplicativo seguro.

O servidor front-end confiável

Nunca deixe um cliente se conectar diretamente ao seu agente em tempo real. Como eu falei na seção “Por que os aplicativos agenticos precisam de AG-UI”, sempre use um servidor front-end confiável (padrão BFF). Esse servidor funciona como um guardião. Ele adiciona autenticação, limitação de taxa e validação de entrada antes de passar a mensagem do usuário para o agente.

Considerações de segurança

Injeção imediata

Usuários mal-intencionados podem tentar ignorar as instruções do seu agentepor meio de ataques de injeção de prompt. Como eu faleiantes, seu middleware deve limpar as entradas.

Chamadas de ferramentas não autorizadas

Só porque um agente pode excluir um arquivo, não significa que o usuário atual deva ter permissão para fazê-lo. Seu servidor de confiança precisa filtrar as ferramentas disponíveis para o agente com base nas permissões do usuário.

Segurança do Estado

Como o estado é compartilhado por meio de patches JSON, tome cuidado com a poluição de protótipos. Certifique-se de que sua biblioteca de patches não permite modificações em propriedades protegidas, como __proto__.

Depurando com o Dojo

Se o seu agente estiver agindo de forma estranha, useo AG-UI Dojo. É um site de testeque permite visualizar o fluxo bruto de eventos. Isso ajuda você a detectar problemas como patches JSON malformados ou chamadas de ferramentas que estão sendo disparadas, mas não retornando resultados.

Conclusão

A gente falou sobre a arquitetura, os tipos de eventos e os padrões de implementação do AG-UI.

Agora, eu entendo que o desenvolvedor solo comum ou alguém em uma empresa pequena não vai, na real, “adotar AG-UI” e de repente “desacoplar seu front-end do back-end”. Tudo isso exigiria decisões arquitetônicas importantes, apoio de várias equipes e recursos que a maioria das pessoas não tem.

Mas entender a AG-UI é importante, mesmo que você não esteja implementando ela. Quando você está avaliando estruturas de agentes ou decidindo se deve criar internamente ou usar uma plataforma, saber como é uma “boa” comunicação entre o agente e a interface do usuário ajuda a tomar uma decisão melhor. Você vai perceber quando uma ferramenta estiver te forçando a seguir padrões rígidos.

Se você quiser se aprofundar na criação desses sistemas, confira nossos cursos Introdução aos agentes de IA e Criação de sistemas agenticos escaláveis para levar suas habilidades para o próximo nível.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Engenheiro de dados com experiência em tecnologias de nuvem Python e Azure, especializado na criação de pipelines de dados escaláveis e processos de ETL. Atualmente está cursando Bacharelado em Ciência da Computação na Universidade de Tanta. Engenheiro de dados certificado pela DataCamp com experiência comprovada em gerenciamento e programação de dados. Ex-estagiário de engenharia de dados da Microsoft na Digital Egypt Pioneers Initiative e Microsoft Beta Student Ambassador, liderando workshops técnicos e organizando hackathons.

Perguntas frequentes sobre a AG-UI

O streaming realmente torna o agente mais rápido?

Isso não faz com que a IA pense mais rápido, mas faz com que pareça mais rápid e para o usuário. Ver a primeira palavra aparecer em 200 ms mantém as pessoas interessadas, mesmo que a resposta completa demore dez segundos. É tanto um truque psicológico quanto técnico.

E se eu quiser adicionar suporte de voz mais tarde?

Você já está na metade do caminho. Como o AG-UI separa o conteúdo da exibição, você pode simplesmente conectar um serviço de conversão de texto em fala para ler os eventos TEXT_MESSAGE_* à medida que eles chegam. O protocolo cuida do fluxo de dados; você só precisa escolher como renderizá-lo.

É difícil depurar se algo der errado?

Na verdade, pode ser mais fácil do que o código tradicional. Como tudo é um evento, você pode literalmente “reproduzir” um bug. Se um usuário relatar uma falha, basta pegar o log de eventos dele e executá-lo no seu ambiente de desenvolvimento para ver exatamente o que aconteceu.

Isso significa que estou preso a um fornecedor específico?

Não, e essa é a melhor parte. AG-UI é um padrão aberto, não um produto. Você pode mudar seu backend do LangChain para o Microsoft Semantic Kernel sem precisar reescrever a lógica de conexão do seu frontend.

Como eu lido com as atualizações do protocolo?

O protocolo usa versão semântica. A maioria das bibliotecas é feita pra ser compatível com versões futuras, ou seja, se o servidor mandar um tipo de evento novo que o seu cliente não conhece, ele geralmente vai simplesmente ignorar, em vez de travar.

Posso rodar os agentes AG-UI localmente sem um backend na nuvem?

Com certeza. AG-UI é só um padrão de comunicação, não um serviço. Você pode rodar tanto o agente quanto o frontend no seu laptop, se quiser. Alguns desenvolvedores usam isso para demonstrações offline ou aplicativos sensíveis à privacidade.

E se meu servidor for lento e os eventos demorarem uma eternidade para chegar?

O legal do streaming é que é melhor ser lento do que travar. Mesmo que seu agente demore 30 segundos para terminar, o usuário vê o progresso a cada poucas centenas de milissegundos. Compare isso com uma chamada REST, em que eles ficam olhando para um spinner por 30 segundos e acham que o sistema travou.

Vários usuários podem falar com o mesmo agente ao mesmo tempo?

Sim, mas você precisa cuidar do isolamento da sessão. Cada usuário recebe seu próprio fluxo de eventos (normalmente vinculado a um ID de sessão ou conexão WebSocket). O agente pode atender centenas de usuários ao mesmo tempo, assim como um servidor web lida com várias solicitações HTTP.

Como faço pra impedir que alguém encha meu agente de solicitações?

Aqui, vale a regra padrão de limitação de taxa. Seu servidor front-end de confiança deve limitar as solicitações por usuário (por exemplo, no máximo 10 mensagens por minuto). Como o AG-UI funciona com HTTP ou WebSockets, você pode usar as mesmas ferramentas que já usa para limitar a taxa da API.

Como faço para escrever testes automatizados para um agente AG-UI?

Você pode simular o fluxo de eventos. Grave os eventos de uma sessão real em um arquivo e, em seguida, reproduza-os em seu conjunto de testes para verificar se o front-end os processa corretamente. É tipo um teste instantâneo, mas para conversas em vez de componentes da interface do usuário.

Tópicos

Aprenda com o DataCamp

Curso

Projetando sistemas agênticos com LangChain

3 h
8.5K
Conheça os componentes básicos dos agentes LangChain e crie agentes de bate-papo personalizados
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Tipos de agentes de IA: Compreensão de suas funções, estruturas e aplicações

Saiba mais sobre os principais tipos de agentes de IA, como eles interagem com os ambientes e como são usados em todos os setores. Entenda o reflexo simples, baseado em modelo, baseado em meta, baseado em utilidade, agentes de aprendizagem e muito mais.
Vinod Chugani's photo

Vinod Chugani

14 min

blog

O que é IA multimodal?

Descubra a IA multimodal, uma das tendências mais promissoras da IA generativa.
Javier Canales Luna's photo

Javier Canales Luna

8 min

Tutorial

Guia para iniciantes no uso da API do ChatGPT

Este guia o orienta sobre os conceitos básicos da API ChatGPT, demonstrando seu potencial no processamento de linguagem natural e na comunicação orientada por IA.
Moez Ali's photo

Moez Ali

Tutorial

Tutorial da API de assistentes da OpenAI

Uma visão geral abrangente da API Assistants com nosso artigo, que oferece uma análise aprofundada de seus recursos, usos no setor, orientação de configuração e práticas recomendadas para maximizar seu potencial em vários aplicativos de negócios.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

IA explicável - Entendendo e confiando nos modelos de aprendizado de máquina

Mergulhe na IA explicável (XAI) e saiba como criar confiança em sistemas de IA com LIME e SHAP para interpretabilidade de modelos. Entenda a importância da transparência e da justiça nas decisões baseadas em IA.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Um guia para iniciantes na engenharia de prompts do ChatGPT

Descubra como fazer com que o ChatGPT forneça os resultados que você deseja, fornecendo a ele as entradas necessárias.
Matt Crabtree's photo

Matt Crabtree

Ver maisVer mais