
Agentes que Diagnostiquem, Planejem e Consultem uma Saga Distribuída
Nos posts anteriores, eu configurei o LangChain4j e conectei agentes de IA a 5 microsserviços via MCP. A parte de infraestrutura foi feita. Agora para os agentes reais, a parte que me fez repensar como abordo operações em sistemas distribuídos.
Eu construí 3 agentes, cada um com um gatilho diferente e um trabalho diferente. Nenhum deles são chatbots. Eles são trabalhadores em segundo plano e interfaces de consulta que usam LLMs para raciocinar sobre dados reais do sistema.
Agente 1: OperationsAgent (Auto-Diagnóstico em Caso de Falha)
Gatilho: consumidor Kafka no tópico notify-ending (apenas quando status = FAIL)
Trabalho: Descobrir por que uma saga falhou, encontrar incidentes passados semelhantes, escrever um relatório de diagnóstico
Armazenamento: pgvector (embeddings) + PostgreSQL (tabela de diagnósticos)
Este foi o primeiro agente que construí, e é o que mais me surpreendeu.
Como Funciona
Cada saga, seja ela bem-sucedida ou falha, termina com um evento notify-ending no Kafka. Meu agente escuta esse tópico:
@KafkaListener(
topics = "${spring.kafka.topic.notify-ending}",
groupId = "ai-agent-group")
public void onSagaEnded(String payload) {
Event event = objectMapper.readValue(payload, Event.class);
// Vetoriza TODOS os eventos, constrói a base histórica
String historyText = buildHistoryText(event);
vectorize(event, historyText);
// Diagnostica apenas falhas
if (event.getStatus() == FAIL) {
diagnose(event, historyText);
}
}
Duas coisas acontecem aqui. Primeiro, cada evento é vetorizado, convertido em um embedding e armazenado no pgvector. Isso constrói uma base de conhecimento ao longo do tempo. Em segundo lugar, as falhas são diagnosticadas.
O Pipeline RAG
O diagnóstico usa RAG. Antes de perguntar qualquer coisa ao LLM, eu busco por incidentes passados semelhantes:
private String findSimilarIncidents(String historyText) {
var queryEmbedding = embeddingModel.embed(historyText).content();
var results = embeddingStore.search(
EmbeddingSearchRequest.builder()
.queryEmbedding(queryEmbedding)
.maxResults(3)
.minScore(0.75)
.build());
if (results.matches().isEmpty())
return "Nenhum incidente semelhante encontrado na história.";
return results.matches().stream()
.map(m -> "--- Incidente semelhante (pontuação=" +
String.format("%.2f", m.score()) + ") ---\n" + m.embedded().text())
.collect(Collectors.joining("\n\n"));
}
O modelo de embedding é Ollama’s nomic-embed-text. Funciona localmente e não custa nada. O armazenamento vetorial é pgvector no PostgreSQL. Nada exótico.
Então eu construo um prompt com a história da saga + contexto RAG e passo para o agente:
private void diagnose(Event event, String historyText) {
String ragContext = findSimilarIncidents(historyText);
String prompt = """
SAGA FALHOU, DIAGNOSTIQUE
OrderId: %s | TransactionId: %s
Status final: %s | Valor total: R$ %.2f
HISTÓRICO DA SAGA:
%s
INCIDENTES SEMELHANTES (RAG):
%s
""".formattedA implementação de agentes de IA para diagnóstico em sistemas distribuídos pode revolucionar a forma como as empresas brasileiras gerenciam operações. Com a automação de diagnósticos, as empresas podem reduzir o tempo de inatividade e melhorar a eficiência operacional. Isso é especialmente relevante em um mercado cada vez mais competitivo.
Noticias relacionadas

Criei um Agente de Consulta LEI + FIGI Verificado por $5/mês — Chamável por Qualquer Agente de IA via x402
Um agente de normalização de dados financeiros que qualquer agente de IA pode descobrir e pagar em USDC, sem necessidade de cadastro ou chaves de API. Ideal para pipelines de trading e ferramentas de compliance.

Sistemas Multi-Agentes: Como Funcionam e Quando Usá-los
O mercado de IA agentiva está migrando para sistemas multi-agentes, que oferecem otimização de processos de 25-45%. Este guia explora arquiteturas, protocolos e quando evitar esses sistemas.

Desenvolvi um Sistema de Memória para Agentes e obtive 90,8% no LongMemEval
O artigo discute a criação de um sistema de memória bitemporal para agentes de IA, abordando desafios e soluções para melhorar a retenção de informações em conversas longas e múltiplas sessões.
Gostou do conteudo?
Receba toda semana as principais novidades sobre WebMCP.