
Falha na API LangGraph
Curadoria, tradução e análise: Redação Triplo Hub.
Todos nós já passamos por isso - você construiu um sistema de IA agente usando LangGraph e MCP, e ele estava funcionando muito bem, até que um dia, uma API de terceiros da qual um dos seus primitivos da ferramenta MCP depende, de repente, muda seu formato de resposta. Seu agente, que anteriormente se adaptava lindamente à entrada do usuário, agora está preso em um loop infinito, incapaz de se recuperar da resposta inesperada da API. Isso é exatamente o que aconteceu conosco recentemente, e neste post, vamos mergulhar na análise pós-morte da falha e explorar estratégias para implementar robustez contra falhas semelhantes no futuro.
A questão específica que encontramos foi com um primitivo da ferramenta MCP que usava a API do Google Maps para obter as condições de tráfego atuais. O primitivo foi projetado para se adaptar a mudanças nas condições de tráfego, ajustando a rota recomendada de acordo. No entanto, quando a API do Google Maps mudou repentinamente seu formato de resposta, nosso primitivo não conseguiu analisar a resposta, e nosso agente LangGraph não conseguiu se adaptar ao novo formato. O agente continuou tentando executar o primitivo, mas o primitivo continuou falhando, fazendo com que o agente entrasse em um loop indefinido.
Para entender por que isso aconteceu, vamos dar uma olhada no código do primitivo da ferramenta MCP:
import json
from mcp import Tool
class TrafficConditions(Tool):
def __init__(self, api_key):
self.api_key = api_key
def execute(self, context):
url = f"https://maps.googleapis.com/maps/api/traffic/json?key={self.api_key}"
response = requests.get(url)
data = json.loads(response.content)
traffic_conditions = data["traffic"]["conditions"]
context["traffic_conditions"] = traffic_conditions
return context
A questão aqui é que o primitivo assume um formato de resposta específico da API do Google Maps, e quando esse formato muda, o primitivo falha. Para tornar o primitivo mais robusto, podemos adicionar algum tratamento de erros para lidar com formatos de resposta inesperados. Também podemos usar o método add_conditional_edges do LangGraph para especificar arestas alternativas a serem seguidas quando o primitivo falha.
Aqui está uma versão atualizada do primitivo que inclui tratamento de erros e arestas alternativas:
import json
from mcp import Tool
from langgraph import StateGraph
class TrafficConditions(Tool):
def __init__(self, api_key):
self.api_key = api_key
def execute(self, context):
try:
url = f"https://maps.googleapis.com/maps/api/traffic/json?key={self.api_key}"
response = requests.get(url)
data = json.loads(response.content)
traffic_conditions = data["traffic"]["conditions"]
context["traffic_conditions"] = traffic_conditions
return context
except KeyError:
# tratar formato de resposta inesperado
context["error"] = "Formato de resposta inesperado da API do Google Maps"
return context
# criar um gráfico de estado LangGraph
graph = StateGraph()
# adicionar um nó para o primitivo TrafficConditions
node = graph.add_node("TrafficConditions", TrafficConditionsEmpresas brasileiras que utilizam sistemas de IA agentiva devem estar atentas a mudanças em APIs de terceiros, pois isso pode impactar diretamente a funcionalidade de suas aplicações. A implementação de tratamento de erros e robustez é essencial para evitar interrupções. Aprender com falhas passadas pode melhorar a resiliência dos sistemas.
Noticias relacionadas

Contagem de ferramentas é custo de contexto: por que meu servidor MCP expõe 6 ferramentas em vez de 26
O artigo discute a importância de limitar o número de ferramentas expostas em um servidor MCP para otimizar o desempenho e reduzir custos operacionais.
Comparação de Servidores MCP da Zillow: 6 Testados, 3 Funcionam
O artigo analisa seis servidores MCP de terceiros para acessar dados de aluguel no Zillow, destacando a eficácia e latência de cada um.

Controle Direto do Claude sobre Mensagens In-App em SaaS
O artigo explora como o Model Context Protocol (MCP) pode ser utilizado para orquestração de aplicativos em tempo real, permitindo que agentes de IA gerenciem mensagens in-app sem a necessidade de código UI efêmero.
Gostou do conteudo?
Receba toda semana as principais novidades sobre WebMCP.