Handle fireworks ai tool calling response (#10130)

* feat(fireworks_ai/chat): handle tool calling with fireworks ai correctly

Fixes https://github.com/BerriAI/litellm/issues/7209

* fix(utils.py): handle none type in message

* fix: fix model name in test

* fix(utils.py): fix validate check for openai messages

* fix: fix model returned

* fix(main.py): fix text completion routing

* test: update testing

* test: skip test - cohere having RBAC issues
This commit is contained in:
Krish Dholakia 2025-04-19 09:37:45 -07:00 committed by GitHub
parent b4f2b3dad1
commit 2508ca71cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 242 additions and 74 deletions

View file

@ -6264,24 +6264,27 @@ def validate_and_fix_openai_messages(messages: List):
Handles missing role for assistant messages.
"""
new_messages = []
for message in messages:
if not message.get("role"):
message["role"] = "assistant"
if message.get("tool_calls"):
message["tool_calls"] = jsonify_tools(tools=message["tool_calls"])
return validate_chat_completion_messages(messages=messages)
convert_msg_to_dict = cast(AllMessageValues, convert_to_dict(message))
cleaned_message = cleanup_none_field_in_message(message=convert_msg_to_dict)
new_messages.append(cleaned_message)
return validate_chat_completion_user_messages(messages=new_messages)
def validate_chat_completion_messages(messages: List[AllMessageValues]):
def cleanup_none_field_in_message(message: AllMessageValues):
"""
Ensures all messages are valid OpenAI chat completion messages.
Cleans up the message by removing the none field.
remove None fields in the message - e.g. {"function": None} - some providers raise validation errors
"""
# 1. convert all messages to dict
messages = [
cast(AllMessageValues, convert_to_dict(cast(dict, m))) for m in messages
]
# 2. validate user messages
return validate_chat_completion_user_messages(messages=messages)
new_message = message.copy()
return {k: v for k, v in new_message.items() if v is not None}
def validate_chat_completion_user_messages(messages: List[AllMessageValues]):