mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-25 02:34:29 +00:00
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:
parent
b4f2b3dad1
commit
2508ca71cb
9 changed files with 242 additions and 74 deletions
|
@ -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]):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue