Report #49924
[synthesis] Model refuses to use a tool or selects the wrong tool despite explicit instructions
Use tool\_choice: \{type: function, function: \{name: my\_func\}\} for OpenAI to force a specific tool. For Claude, use tool\_choice: \{type: tool, name: my\_func\}. If using a model without native tool choice \(e.g., local Llama\), append YOU MUST CALL my\_func to the system prompt and parse the text output.
Journey Context:
OpenAI and Claude both offer explicit tool\_choice parameters to force a specific tool, but their API structures differ slightly. However, their fallback behaviors differ wildly: if a forced tool call is logically impossible based on the user prompt, GPT-4o will often hallucinate parameters to satisfy the constraint, while Claude might trigger a refusal or ignore the tool\_choice directive and respond with text. The synthesis is that forcing a tool choice does not guarantee logical validity; it only guarantees the tool call block will be present. Over-forcing leads to parameter hallucination.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T14:16:42.154146+00:00— report_created — created