fix: chat stops working with Ollama after a tool call with broken arguments (#33697)

A tool call whose arguments were cut off, rejected before it ran or sent empty made every later message with an Ollama model fail, so the chat stayed stuck until that message was edited or removed. Such calls are now sent to Ollama with empty arguments and the conversation continues.

Fixes #33671
This commit is contained in:
Classic298 2026-11-05 14:27:27 +01:00 • committed by GitHub
parent 75f8ae5584
commit b6d861645b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -328,12 +328,19 @@ def convert_chat_completions_messages_to_ollama(messages: list[dict]) -> list[di
# If tool calls are present, add them to the message
ollama_tool_calls = []
for tool_call in tool_calls:
arguments = tool_call.get('function', {}).get('arguments')
if isinstance(arguments, str):
try:
arguments = JSONCodec.loads(arguments)
except JSONCodec.JSONDecodeError:
arguments = {}
ollama_tool_call = {
'index': tool_call.get('index', 0),
'id': tool_call.get('id', None),
'function': {
'name': tool_call.get('function', {}).get('name', ''),
'arguments': JSONCodec.loads(tool_call.get('function', {}).get('arguments', {})),
'arguments': arguments if isinstance(arguments, dict) else {},
},
}
ollama_tool_calls.append(ollama_tool_call)