mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-13 08:52:02 +00:00
fix(openai): json_mode stop finish_reason after folding tool call
When json_mode folds a tool call into JSON content, the transform sets
finish_reason to "stop" but then overwrites it by re-reading the raw
provider finish_reason ("tool_calls"), so the choice reports
finish_reason "tool_calls" while message.tool_calls is None. Report the
finish_reason the transform already computed instead. Normal tool-call
responses keep the existing "tool_calls" correction.
Signed-off-by: Saylee <saylee21@users.noreply.github.com>
This commit is contained in:
parent
527d882508
commit
92fbe7698b
2 changed files with 30 additions and 1 deletions
|
|
@ -822,7 +822,7 @@ class OpenAIGPTConfig(BaseLLMModelInfo, BaseConfig):
|
|||
)
|
||||
|
||||
translated_choice.finish_reason = map_finish_reason(
|
||||
self._get_finish_reason(translated_message, choice["finish_reason"])
|
||||
self._get_finish_reason(translated_message, finish_reason)
|
||||
)
|
||||
transformed_choices.append(translated_choice)
|
||||
|
||||
|
|
|
|||
|
|
@ -2215,3 +2215,32 @@ async def test_chat_sends_a_breakpoint_by_the_deployments_own_flag_not_a_sibling
|
|||
"opted-in": True,
|
||||
"flagless": False,
|
||||
}
|
||||
|
||||
|
||||
def test_transform_choices_json_mode_reports_stop_when_tool_call_becomes_content():
|
||||
"""json_mode turns a tool call into JSON content; the choice must then report
|
||||
finish_reason 'stop' instead of 'tool_calls' with no tool_calls attached."""
|
||||
choice = [
|
||||
{
|
||||
"finish_reason": "tool_calls",
|
||||
"index": 0,
|
||||
"logprobs": None,
|
||||
"message": {
|
||||
"content": None,
|
||||
"role": "assistant",
|
||||
"tool_calls": [
|
||||
{
|
||||
"id": "call_1",
|
||||
"type": "function",
|
||||
"function": {"name": "json_tool_call", "arguments": '{"a": 1}'},
|
||||
}
|
||||
],
|
||||
},
|
||||
}
|
||||
]
|
||||
|
||||
out = OpenAIGPTConfig()._transform_choices(choices=choice, json_mode=True)
|
||||
|
||||
assert out[0].message.content == '{"a": 1}'
|
||||
assert out[0].message.tool_calls is None
|
||||
assert out[0].finish_reason == "stop"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue