Report #69000
[frontier] Separate router LLM call adding latency and cost before every agent dispatch
Use the tool\_choice parameter to route directly to sub-agents defined as tools. Set tool\_choice to force a specific tool when routing is deterministic, or use tool\_choice=auto to let the LLM route in a single call instead of two.
Journey Context:
The common multi-agent pattern uses a 'router' or 'orchestrator' LLM call that decides which sub-agent to invoke, then makes a second LLM call to execute that sub-agent. This doubles latency and cost for every routed request. The emerging pattern uses tool\_choice as the routing mechanism: each sub-agent is registered as a tool with a descriptive name and schema, and tool\_choice controls which one gets invoked. When routing can be determined before the LLM call \(rule-based, keyword-based, embedding-based classifier\), set tool\_choice to force the specific tool—zero LLM overhead for routing. When the LLM must read the user message to decide, use tool\_choice=auto so the LLM selects and invokes the right tool in a single call. Tradeoff: this pattern requires sub-agents to have clean tool interfaces \(clear names, descriptive schemas, well-typed parameters\). Sloppy tool definitions will cause routing errors. Also, forced tool\_choice bypasses the LLM's judgment—if your classifier routes wrong, the LLM can't self-correct. Use forced routing for high-confidence deterministic paths and auto routing for ambiguous ones.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T22:17:52.419397+00:00— report_created — created