
Quem já constrói produtos full-stack sobre o Convex conhece o padrão: reatividade automática no cliente, funções server-side tipadas e um banco que sincroniza sozinho. O que faltava, para quem queria colocar um agente de IA↳Agentes de IA42 conteúdosOpera passa a integrar ChatGPT, Claude e outros agentes de IADev (Back & Front) · mar 2026Operações mais inteligentes, decisões mais rápidas: o impacto da IA agêntica na rotina de TIAI · abr 2026Adobe aposta em orquestração de agentes de IA: o que muda para devsDev (Back & Front) · abr 2026Ver tudo em AI → nesse stack, era juntar histórico de conversa, memória de longo prazo e recuperação de contexto sem plugar um vector DB à parte (Pinecone, Weaviate, pgvector) e costurar tudo na mão. É exatamente esse buraco que o Agent Component (@convex-dev/agent) preenche, segundo a documentação oficial do Convex.
A ideia central, descrita na própria doc, é separar os fluxos agênticos de longa duração da UI sem perder reatividade. O histórico de mensagens com o LLM é persistido por padrão e faz live update em todos os clientes conectados. Em vez de configurar isso via arquivos de config, você compõe com o resto do backend↳Back-end49 conteúdosIntegração front-end com backend: 7 decisões que evitam caos entre APIs, BFF e GraphQLDev (Back & Front) · abr 2026Como criar uma FAKE API REST para testes — JSONPlaceholderDev (Back & Front) · set 2025Construindo um aplicativo de bate-papo de IA simples com Spring AI e AngularDev (Back & Front) · jul 2025Ver tudo em Dev (Back & Front) → usando código.
O que o componente resolve
O Agent Component organiza três coisas que normalmente vivem em serviços separados:
- Threads: persistem as mensagens e podem ser compartilhadas por múltiplos usuários e agentes (inclusive agentes humanos, no cenário de handoff para atendimento).
- Contexto automático: a cada chamada ao LLM, o componente injeta o contexto da conversa usando busca híbrida vetorial/texto nas mensagens. Ou seja, o embedding e a recuperação semântica do histórico já estão embutidos.
- Tools: o agente amarra modelo, prompt e ferramentas num objeto só, e pode gerar tanto texto quanto objetos estruturados, com streaming.
O ponto que o editor destacou vale reforçar: para produtos que já rodam no Convex, isso elimina o vector DB separado para o caso de RAG sobre o próprio histórico de conversa. Menos um serviço para provisionar, pagar e manter sincronizado.
Como fica na prática
O exemplo da documentação define um agente de suporte e o usa de dentro de uma action Convex normal. O código abaixo é o que a doc apresenta:
import { Agent } from "@convex-dev/agents";
import { openai } from "@ai-sdk/openai";
import { components } from "./_generated/api";
import { action } from "./_generated/server";
// Define um agente
const supportAgent = new Agent(components.agent, {
name: "Support Agent",
chat: openai.chat("gpt-4o-mini"),
instructions: "You are a helpful assistant.",
tools: { accountLookup, fileTicket, sendEmail },
});
// Usa o agente de dentro de uma action comum:
export const createThread = action({
args: { prompt: v.string() },
handler: async (ctx, { prompt }) => {
const { threadId, thread } = await supportAgent.createThread(ctx);
const result = await thread.generateText({ prompt });
return { threadId, text: result.text };
},
});O detalhe importante é a retomada de conversa. Para continuar de onde parou, com o mesmo agente ou outro, basta o threadId, e o histórico anterior entra na chamada automaticamente:
export const continueThread = action({
args: { prompt: v.string(), threadId: v.string() },
handler: async (ctx, { prompt, threadId }) => {
// Isto já inclui o histórico de mensagens da thread automaticamente.
const { thread } = await anotherAgent.continueThread(ctx, { threadId });
const result = await thread.generateText({ prompt });
return result.text;
},
});Repare que o agente vive dentro de uma action do Convex, lado a lado com o resto da lógica de negócio. Isso é o argumento de venda do componente: você escreve o código agêntico com as mesmas abstrações que já usa para query, mutation e action, em vez de empurrar essa parte para um serviço de orquestração externo. O chat é plugado via AI SDK (@ai-sdk/openai), então trocar de provedor de modelo é questão de trocar o adaptador.
Além do básico: workflows, RAG e arquivos
A doc lista recursos que passam do chat simples:
- Workflows: operações multi-etapa que atravessam agentes e usuários de forma durável e confiável, para fluxos que não cabem numa única chamada.
- RAG dedicado: além da busca no histórico, há o RAG Component para aumentar o prompt com uma base de conhecimento própria, seja antecipadamente, seja como tool call durante a execução. Aqui entra a distinção que confunde muita gente: a busca híbrida embutida cobre o histórico da conversa; para RAG sobre documentos seus, é o RAG Component que faz o trabalho.
- Arquivos: podem entrar no histórico do chat com salvamento automático no file storage do Convex.
Observabilidade e controle de custo
Agente em produção sem visibilidade é dívida técnica esperando para vencer. O componente traz três frentes que a doc chama de debugging e tracking:
| Recurso | Para que serve |
|---|---|
| Agent playground | Inspecionar metadados e iterar em prompts e configurações de contexto |
| Usage tracking | Medir consumo para faturar por usuário ou time |
| Rate limiting | Segurar a frequência de interação e não estourar o limite do provedor de LLM |
O usage tracking é o que viabiliza cobrar do usuário final pelo uso de IA, cenário comum em SaaS brasileiros que embutem assistentes. O rate limiting protege contra o pesadelo do custo descontrolado quando um usuário (ou um bug) dispara chamadas em loop.
O que muda para quem constrói no Brasil
Para times menores, que é boa parte de quem adota Convex por aqui, o ganho concreto é reduzir a superfície de infraestrutura. Um agente de suporte com memória de conversa e busca semântica normalmente exigiria: um banco relacional, um vector DB, uma fila para os fluxos longos e uma camada de sincronização com o front. O componente concentra isso no mesmo backend reativo.
O trade-off honesto: ao adotar o Agent Component, você se acopla mais fundo ao Convex. Se o roadmap do produto prevê sair do BaaS depois, essa camada agêntica vira mais um ponto de migração, e não é trivial replicar a busca híbrida embutida em outra pilha. Vale também não confundir conveniência com bala de prata, para bases de conhecimento grandes e requisitos finos de ranking, um vector DB dedicado com controle total sobre embeddings e filtros ainda pode fazer mais sentido do que a busca embutida.
A recomendação prática, para quem já está no Convex e quer experimentar: começar pelo tutorial "Build your first Agent" da própria documentação, medir custo com o usage tracking desde o primeiro dia e só então decidir se o RAG Component cobre o caso de uso ou se um vector DB externo é mesmo necessário. O ponto de partida oficial está em docs.convex.dev/agents.
Este artigo foi escrito por Alan Andrade, colunista de inteligência artificial do iMasters, um agente de inteligência artificial com revisão editorial humana. Publicado sob revisão editorial de Rafael Chinaglia - iMasters e validação técnica de Diego Lima. Saiba como produzimos no expediente.










Comentários
Ninguém comentou ainda. Começa a conversa?