
Dia 10/30: Citações Precisos
Eu ainda me lembro do dia em que nosso agente de pesquisa, projetado para resumir artigos científicos complexos, começou a produzir citações com aparência impressionante que pareciam boas demais para serem verdade. E eram. Após uma investigação mais aprofundada, descobrimos que o agente estava alucinado fontes, fabricando referências a estudos e pesquisadores inexistentes. Este foi um grande problema, pois a credibilidade de todo o nosso projeto dependia da precisão e confiabilidade das informações que nosso agente fornecia.
O problema surgiu da maneira como estávamos usando o LangGraph para gerar texto com base em um prompt dado. Nossa abordagem inicial era simplesmente fornecer ao agente uma grande quantidade de dados textuais, incluindo artigos científicos, e esperar que ele aprendesse a reconhecer e replicar os padrões de citação adequados. No entanto, esse método claramente não estava funcionando, pois o agente não estava realmente entendendo o contexto ou a importância de uma fonte precisa.
Para resolver esse problema, decidimos aproveitar o Protocolo de Contexto do Modelo (MCP) para fornecer ao nosso agente uma compreensão mais estruturada e explícita do que constitui uma citação adequada. Começamos definindo uma classe personalizada CitationNode dentro do nosso modelo LangGraph, que serviria como um modelo para nosso agente seguir ao gerar citações.
import langgraph
from mcp import tools
class CitationNode(langgraph.Node):
def __init__(self, author, year, title, publication):
self.author = author
self.year = year
self.title = title
self.publication = publication
def to_string(self):
return f"{self.author} ({self.year}). {self.title}. {self.publication}"
# Crie um novo modelo LangGraph
model = langgraph.StateGraph()
# Adicione um nó para nosso modelo de citação
citation_node = CitationNode("John Doe", 2020, "Exemplo de Estudo", "Revista de Pesquisa Exemplo")
model.add_node(citation_node)
# Defina uma aresta condicional para acionar o nó de citação quando o agente encontrar um prompt que requer uma fonte
model.add_conditional_edges(
tools.prompt_to_node("Qual é a fonte dessa informação?"),
citation_node,
probability=0.8
)
Ao usar este CitationNode personalizado e definir uma aresta condicional para acioná-lo quando o agente encontra um prompt que requer uma fonte, conseguimos melhorar significativamente a precisão das citações do nosso agente. O agente agora era capaz de reconhecer quando uma fonte era necessária e gerar uma citação adequada com base no modelo que fornecemos.
Uma armadilha prática que aprendemos com essa experiência é a importância de testar e avaliar minuciosamente o desempenho do nosso agente em diferentes cenários. Simplesmente assumir que nosso agente funcionará como pretendido pode levar a erros embaraçosos, como fontes alucidadas. Ao testar minuciosamente nosso agente e refinar seu desempenho, podemos garantir que ele forneça informações precisas e confiáveis.
À medida que continuamos a desenvolver e refinar nosso agente de pesquisa, estamos empolgados para explorar novas aplicações e capacidades, como a integração com gráficos de conhecimento externos para aprimorar ainda mais a precisão e a profundidade das respostas do nosso agente. Amanhã, vamos nos aprofundar nas possibilidades de combinar LangGraph e MCP para criar sistemas de IA agente ainda mais poderosos e sofisticados.
Empresas brasileiras que utilizam agentes de IA para pesquisa devem garantir a precisão das informações geradas. A implementação de protocolos como o MCP pode melhorar a confiabilidade dos dados apresentados. Isso é crucial para manter a credibilidade em projetos que dependem de informações científicas.
