Fix tool_choice reset for structured output sampling

Preserve tool_choice='required' when result_type is set to ensure
LLM calls final_response instead of returning text responses.

Fixes #3011

Co-authored-by: Bill Easton <strawgate@users.noreply.github.com>
This commit is contained in:
claude[bot] 2026-01-28 07:02:05 +00:00
commit cfba439417

View file

@ -634,7 +634,8 @@ async def sample_impl(
# Continue with the updated history
current_messages = step.history
# After first iteration, reset tool_choice to auto
tool_choice = None
# After first iteration, reset tool_choice to auto (unless structured output is required)
if result_type is None or result_type is str:
tool_choice = None
raise RuntimeError(f"Sampling exceeded maximum iterations ({max_iterations})")