mirror of
https://github.com/tiennm99/litellm.git
synced 2026-08-06 20:25:29 +00:00
style: run black formatter on files from main merge
This commit is contained in:
@@ -12,7 +12,9 @@ sys.path.insert(
|
||||
) # Adds the parent directory to the system path
|
||||
import pytest, uuid
|
||||
from litellm.utils import function_setup, Rules
|
||||
from litellm.litellm_core_utils.prompt_templates.factory import THOUGHT_SIGNATURE_SEPARATOR
|
||||
from litellm.litellm_core_utils.prompt_templates.factory import (
|
||||
THOUGHT_SIGNATURE_SEPARATOR,
|
||||
)
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
@@ -39,7 +41,7 @@ def test_thought_signature_removal_for_non_gemini():
|
||||
Test that thought signatures are removed from tool call IDs when sending to non-Gemini models
|
||||
"""
|
||||
rules_obj = Rules()
|
||||
|
||||
|
||||
# Create messages with thought signatures (as would come from Gemini)
|
||||
messages = [
|
||||
{"role": "user", "content": "What's the weather?"},
|
||||
@@ -51,18 +53,18 @@ def test_thought_signature_removal_for_non_gemini():
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "get_weather",
|
||||
"arguments": '{"location": "SF"}'
|
||||
}
|
||||
"arguments": '{"location": "SF"}',
|
||||
},
|
||||
}
|
||||
]
|
||||
],
|
||||
},
|
||||
{
|
||||
"role": "tool",
|
||||
"tool_call_id": f"call_123{THOUGHT_SIGNATURE_SEPARATOR}sig1",
|
||||
"content": "Sunny, 72°F"
|
||||
}
|
||||
"content": "Sunny, 72°F",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
# Call function_setup with OpenAI model (non-Gemini)
|
||||
logging_obj, kwargs = function_setup(
|
||||
original_function="acompletion",
|
||||
@@ -71,14 +73,16 @@ def test_thought_signature_removal_for_non_gemini():
|
||||
model="gpt-4",
|
||||
messages=messages,
|
||||
litellm_call_id=str(uuid.uuid4()),
|
||||
custom_llm_provider="openai"
|
||||
custom_llm_provider="openai",
|
||||
)
|
||||
|
||||
|
||||
# Verify thought signatures were removed
|
||||
processed_messages = kwargs["messages"]
|
||||
assert processed_messages[1]["tool_calls"][0]["id"] == "call_123"
|
||||
assert processed_messages[2]["tool_call_id"] == "call_123"
|
||||
assert THOUGHT_SIGNATURE_SEPARATOR not in processed_messages[1]["tool_calls"][0]["id"]
|
||||
assert (
|
||||
THOUGHT_SIGNATURE_SEPARATOR not in processed_messages[1]["tool_calls"][0]["id"]
|
||||
)
|
||||
assert THOUGHT_SIGNATURE_SEPARATOR not in processed_messages[2]["tool_call_id"]
|
||||
|
||||
|
||||
@@ -87,7 +91,7 @@ def test_thought_signature_preserved_for_gemini():
|
||||
Test that thought signatures are preserved when sending to Gemini models
|
||||
"""
|
||||
rules_obj = Rules()
|
||||
|
||||
|
||||
# Create messages with thought signatures
|
||||
messages = [
|
||||
{"role": "user", "content": "What's the weather?"},
|
||||
@@ -99,18 +103,18 @@ def test_thought_signature_preserved_for_gemini():
|
||||
"type": "function",
|
||||
"function": {
|
||||
"name": "get_weather",
|
||||
"arguments": '{"location": "NYC"}'
|
||||
}
|
||||
"arguments": '{"location": "NYC"}',
|
||||
},
|
||||
}
|
||||
]
|
||||
],
|
||||
},
|
||||
{
|
||||
"role": "tool",
|
||||
"tool_call_id": f"call_456{THOUGHT_SIGNATURE_SEPARATOR}sig2",
|
||||
"content": "Rainy, 65°F"
|
||||
}
|
||||
"content": "Rainy, 65°F",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
# Call function_setup with Gemini model
|
||||
logging_obj, kwargs = function_setup(
|
||||
original_function="acompletion",
|
||||
@@ -119,9 +123,9 @@ def test_thought_signature_preserved_for_gemini():
|
||||
model="gemini-1.5-pro",
|
||||
messages=messages,
|
||||
litellm_call_id=str(uuid.uuid4()),
|
||||
custom_llm_provider="vertex_ai"
|
||||
custom_llm_provider="vertex_ai",
|
||||
)
|
||||
|
||||
|
||||
# Verify thought signatures were preserved (messages should be unchanged)
|
||||
processed_messages = kwargs["messages"]
|
||||
assert THOUGHT_SIGNATURE_SEPARATOR in processed_messages[1]["tool_calls"][0]["id"]
|
||||
@@ -133,7 +137,7 @@ def test_thought_signature_removal_with_multiple_tool_calls():
|
||||
Test that thought signatures are removed from multiple tool calls
|
||||
"""
|
||||
rules_obj = Rules()
|
||||
|
||||
|
||||
messages = [
|
||||
{"role": "user", "content": "Get weather and time"},
|
||||
{
|
||||
@@ -142,27 +146,27 @@ def test_thought_signature_removal_with_multiple_tool_calls():
|
||||
{
|
||||
"id": f"call_1{THOUGHT_SIGNATURE_SEPARATOR}sig1",
|
||||
"type": "function",
|
||||
"function": {"name": "get_weather", "arguments": "{}"}
|
||||
"function": {"name": "get_weather", "arguments": "{}"},
|
||||
},
|
||||
{
|
||||
"id": f"call_2{THOUGHT_SIGNATURE_SEPARATOR}sig2",
|
||||
"type": "function",
|
||||
"function": {"name": "get_time", "arguments": "{}"}
|
||||
}
|
||||
]
|
||||
"function": {"name": "get_time", "arguments": "{}"},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"role": "tool",
|
||||
"tool_call_id": f"call_1{THOUGHT_SIGNATURE_SEPARATOR}sig1",
|
||||
"content": "Sunny"
|
||||
"content": "Sunny",
|
||||
},
|
||||
{
|
||||
"role": "tool",
|
||||
"tool_call_id": f"call_2{THOUGHT_SIGNATURE_SEPARATOR}sig2",
|
||||
"content": "3:00 PM"
|
||||
}
|
||||
"content": "3:00 PM",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
logging_obj, kwargs = function_setup(
|
||||
original_function="acompletion",
|
||||
rules_obj=rules_obj,
|
||||
@@ -170,11 +174,11 @@ def test_thought_signature_removal_with_multiple_tool_calls():
|
||||
model="claude-3-opus",
|
||||
messages=messages,
|
||||
litellm_call_id=str(uuid.uuid4()),
|
||||
custom_llm_provider="anthropic"
|
||||
custom_llm_provider="anthropic",
|
||||
)
|
||||
|
||||
|
||||
processed_messages = kwargs["messages"]
|
||||
|
||||
|
||||
# Check all tool call IDs are cleaned
|
||||
assert processed_messages[1]["tool_calls"][0]["id"] == "call_1"
|
||||
assert processed_messages[1]["tool_calls"][1]["id"] == "call_2"
|
||||
@@ -187,12 +191,12 @@ def test_messages_without_tool_calls_unchanged():
|
||||
Test that messages without tool calls pass through unchanged
|
||||
"""
|
||||
rules_obj = Rules()
|
||||
|
||||
|
||||
messages = [
|
||||
{"role": "user", "content": "Hello"},
|
||||
{"role": "assistant", "content": "Hi there!"}
|
||||
{"role": "assistant", "content": "Hi there!"},
|
||||
]
|
||||
|
||||
|
||||
logging_obj, kwargs = function_setup(
|
||||
original_function="acompletion",
|
||||
rules_obj=rules_obj,
|
||||
@@ -200,8 +204,8 @@ def test_messages_without_tool_calls_unchanged():
|
||||
model="gpt-4",
|
||||
messages=messages,
|
||||
litellm_call_id=str(uuid.uuid4()),
|
||||
custom_llm_provider="openai"
|
||||
custom_llm_provider="openai",
|
||||
)
|
||||
|
||||
|
||||
# Messages should be unchanged
|
||||
assert kwargs["messages"] == messages
|
||||
|
||||
Reference in New Issue
Block a user