El problema
Los agentes de LangGraph mantienen el estado de la sesión durante los turnos, lo cual es poderoso para tareas de varios pasos pero peligroso para la precisión de los hechos. El agente recuerda un precio de hace tres conversaciones, un nivel de existencias de ayer o la lista de características de un competidor del mes pasado. Debido a que la memoria parece autorizada para el modelo, cita con confianza datos obsoletos sin volver a verificarlos. Los usuarios confían en el agente porque parece seguro, pero los hechos ya han cambiado. No existe ningún mecanismo incorporado en LangGraph para caducar o actualizar las afirmaciones fácticas almacenadas en la memoria.
La solucion de Scavio
Scavio proporciona una capa de verificación a la que su agente de LangGraph llama antes de citar cualquier hecho memorizado que tenga una dimensión temporal. Precios, disponibilidad, clasificaciones, referencias de noticias, cualquier cosa que pueda haber cambiado se realiza una nueva búsqueda antes de que el agente se comprometa a dar una respuesta. La búsqueda es lo suficientemente rápida como para caber dentro de un turno de agente normal sin una latencia perceptible. Agrega un único nodo de herramienta que verifica la actualización y el agente aprende a verificar antes de afirmar.
Antes
Antes de Scavio, los agentes de LangGraph citaban con confianza precios y hechos de memoria que estaban obsoletos durante horas o días. Los usuarios recibieron respuestas incorrectas que parecían autoritarias y no había forma de detectar la desviación.
Después
Después de Scavio, el agente verifica hechos urgentes con una búsqueda en vivo antes de citarlos. La memoria obsoleta se actualiza en línea y los usuarios obtienen respuestas basadas en datos de los últimos minutos.
Para quien es
Los desarrolladores de LangGraph crean agentes de múltiples turnos que mantienen el estado en todas las sesiones. Si su agente cita precios, disponibilidad o datos urgentes de memoria sin volver a verificarlos, esto evita alucinaciones obsoletas.
Beneficios clave
- Verificación en vivo de hechos memorizados antes de que el agente los cite
- La latencia de menos de dos segundos cabe dentro de los turnos de conversación normales
- Funciona como un nodo de herramienta LangGraph estándar sin infraestructura personalizada
- Cubre precios, niveles de existencias, clasificaciones y noticias recientes
- El agente aprende cuándo verificar y cuándo confiar en la memoria caché
Ejemplo en Python
import requests
from langgraph.graph import StateGraph, END
from typing import TypedDict
API_KEY = "your_scavio_api_key"
class AgentState(TypedDict):
query: str
memory_claim: str
verified: bool
fresh_data: str
def verify_freshness(state: AgentState) -> AgentState:
"""Check if a memorized claim is still accurate."""
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": state["query"]},
timeout=10,
)
res.raise_for_status()
data = res.json()
top_results = data.get("organic", [])[:3]
fresh = " | ".join(r.get("snippet", "") for r in top_results)
return {
**state,
"verified": True,
"fresh_data": fresh,
}
def should_verify(state: AgentState) -> str:
stale_keywords = ["price", "cost", "stock", "available", "ranking", "latest"]
if any(kw in state["query"].lower() for kw in stale_keywords):
return "verify"
return "skip"
graph = StateGraph(AgentState)
graph.add_node("verify", verify_freshness)
graph.add_node("respond", lambda s: s)
graph.set_entry_point("verify")
graph.add_conditional_edges("verify", should_verify, {"verify": "verify", "skip": "respond"})
graph.add_edge("verify", "respond")
graph.add_edge("respond", END)
app = graph.compile()
result = app.invoke({"query": "macbook pro m4 price", "memory_claim": "$1999", "verified": False, "fresh_data": ""})
print(f"Fresh data: {result['fresh_data'][:200]}")Ejemplo en JavaScript
const API_KEY = "your_scavio_api_key";
async function verifyFreshness(query, memoryClaim) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
const topResults = (data.organic ?? []).slice(0, 3);
const freshSnippets = topResults.map((r) => r.snippet ?? "").join(" | ");
const claimStillValid = freshSnippets.toLowerCase().includes(
memoryClaim.toLowerCase().replace("$", "")
);
return {
verified: true,
claimStillValid,
freshData: freshSnippets,
source: topResults[0]?.link ?? null,
};
}
// Use in LangGraph.js tool node
const result = await verifyFreshness("macbook pro m4 price 2026", "$1999");
console.log(result.claimStillValid ? "Memory is current" : "Memory is stale");
console.log(`Fresh data: ${result.freshData.slice(0, 200)}`);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Amazon
Búsqueda de productos con precios, calificaciones y reseñas
YouTube
Búsqueda de videos con transcripciones y metadatos
Walmart
Búsqueda de productos con precios y datos de cumplimiento