Voltar as noticias
Falha na API LangGraph
MCP ProtocolAltaEN

Falha na API LangGraph

Dev.to - MCP·16 de agosto de 2026

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", TrafficConditions
Contexto Triplo Up

Empresas 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

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.