fix: chat stops working with Ollama after a tool call with broken arguments

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-03 19:28:22 +01:00
parent 8957ac1397
commit 805cce8122

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)