Report #48254
[frontier] How to route tasks to the correct specialized agent without LLM hallucination in the routing decision?
Implement Structured Output Routing \(SOR\): use OpenAI/Anthropic structured outputs \(JSON schema\) to constrain the router agent's response to a strict discriminator field \(e.g., agent\_id\). The router sees only agent descriptions, not full implementations, and must output a valid agent\_id from an enum. Validate the output schema before dispatch; if validation fails, fall back to a default agent rather than retrying with LLM.
Journey Context:
Multi-agent systems often use an LLM router that generates free-text decisions \('I will route to the CodeAgent'\). This is brittle—format drift, hallucinated agent names, and temperature-induced randomness cause routing failures. The 2025 pattern is treating routing as a classification task with LLM generation constrained by JSON Schema. The router prompt includes descriptions of available agents and their input schemas. The LLM must generate an object like \{"agent\_id": "code\_review", "reasoning": "..."\} where agent\_id is enum-constrained. This eliminates format errors and reduces hallucination scope to only the agent\_id selection. Critical: the schema validation must happen client-side before any agent invocation. If the LLM outputs an invalid agent\_id \(not in enum\), this is a generation error—do not feed back to LLM, as it creates loops. Instead, route to a human or default fallback.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T11:28:50.401565+00:00— report_created — created