One LangGraph agent, two ways to put it through its paces: a live reviewer console for talking to it directly, and an offline evaluation harness for scoring it at scale — both run the exact same graph and tools.
Streams model tokens and tool-call events over SSE for a chat turn; serves REST for customer, order and knowledge-base lookups used by the console chrome.
POST /api/chat/stream (SSE)GET /api/customersGET /api/customers/{email}/ordersGET /api/scenariosGET /api/kb/documentsGET /api/health
graph.astream_events() per turn
LangGraph — agent loopbackend/agent/graph.py
agentGPT-5.4-mini + tools
toolsToolNode executes call
update_trackingrecords retrieval + escalation
END — reply sent
tool_calls?no tool callsloops back to agent until the model stops calling tools
Same evaluators, live: when a scenario is opened in the console, main.py runs the identical scoring inline and streams it back as an evaluation SSE event — that fills the AgentTracePanel score above.