mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 03:04:13 +00:00
(test) claude fixes
This commit is contained in:
parent
d179ae376e
commit
ba460e6838
3 changed files with 18 additions and 8 deletions
|
@ -125,12 +125,19 @@ def completion(
|
||||||
format messages for anthropic
|
format messages for anthropic
|
||||||
1. Anthropic supports roles like "user" and "assistant", (here litellm translates system-> assistant)
|
1. Anthropic supports roles like "user" and "assistant", (here litellm translates system-> assistant)
|
||||||
2. The first message always needs to be of role "user"
|
2. The first message always needs to be of role "user"
|
||||||
|
3. Each message must alternate between "user" and "assistant" (this is not addressed as now by litellm)
|
||||||
|
4. final assistant content cannot end with trailing whitespace (anthropic raises an error otherwise)
|
||||||
"""
|
"""
|
||||||
# 1. Anthropic only supports roles like "user" and "assistant"
|
# 1. Anthropic only supports roles like "user" and "assistant"
|
||||||
for message in messages:
|
for idx, message in enumerate(messages):
|
||||||
if message["role"] == "system":
|
if message["role"] == "system":
|
||||||
message["role"] = "assistant"
|
message["role"] = "assistant"
|
||||||
|
|
||||||
|
# if this is the final assistant message, remove trailing whitespace
|
||||||
|
# TODO: only do this if it's the final assistant message
|
||||||
|
if message["role"] == "assistant":
|
||||||
|
message["content"] = message["content"].strip()
|
||||||
|
|
||||||
# 2. The first message always needs to be of role "user"
|
# 2. The first message always needs to be of role "user"
|
||||||
if len(messages) > 0:
|
if len(messages) > 0:
|
||||||
if messages[0]["role"] != "user":
|
if messages[0]["role"] != "user":
|
||||||
|
@ -211,6 +218,11 @@ def completion(
|
||||||
message=str(completion_response["error"]),
|
message=str(completion_response["error"]),
|
||||||
status_code=response.status_code,
|
status_code=response.status_code,
|
||||||
)
|
)
|
||||||
|
elif len(completion_response["content"]) == 0:
|
||||||
|
raise AnthropicError(
|
||||||
|
message="No content in response",
|
||||||
|
status_code=response.status_code,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
text_content = completion_response["content"][0].get("text", None)
|
text_content = completion_response["content"][0].get("text", None)
|
||||||
model_response.choices[0].message.content = text_content # type: ignore
|
model_response.choices[0].message.content = text_content # type: ignore
|
||||||
|
|
|
@ -47,8 +47,9 @@ test_function_call_non_openai_model()
|
||||||
## case 2: add_function_to_prompt set
|
## case 2: add_function_to_prompt set
|
||||||
def test_function_call_non_openai_model_litellm_mod_set():
|
def test_function_call_non_openai_model_litellm_mod_set():
|
||||||
litellm.add_function_to_prompt = True
|
litellm.add_function_to_prompt = True
|
||||||
|
litellm.set_verbose = True
|
||||||
try:
|
try:
|
||||||
model = "claude-instant-1"
|
model = "claude-instant-1.2"
|
||||||
messages = [{"role": "user", "content": "what's the weather in sf?"}]
|
messages = [{"role": "user", "content": "what's the weather in sf?"}]
|
||||||
functions = [
|
functions = [
|
||||||
{
|
{
|
||||||
|
|
|
@ -92,7 +92,6 @@ def test_completion_claude_3():
|
||||||
response = completion(
|
response = completion(
|
||||||
model="anthropic/claude-3-opus-20240229",
|
model="anthropic/claude-3-opus-20240229",
|
||||||
messages=messages,
|
messages=messages,
|
||||||
max_tokens=10,
|
|
||||||
)
|
)
|
||||||
# Add any assertions, here to check response args
|
# Add any assertions, here to check response args
|
||||||
print(response)
|
print(response)
|
||||||
|
@ -198,19 +197,17 @@ def test_completion_mistral_api_modified_input():
|
||||||
|
|
||||||
def test_completion_claude2_1():
|
def test_completion_claude2_1():
|
||||||
try:
|
try:
|
||||||
|
litellm.set_verbose = True
|
||||||
print("claude2.1 test request")
|
print("claude2.1 test request")
|
||||||
messages = [
|
messages = [
|
||||||
{
|
{
|
||||||
"role": "system",
|
"role": "system",
|
||||||
"content": "Your goal is generate a joke on the topic user gives",
|
"content": "Your goal is generate a joke on the topic user gives.",
|
||||||
},
|
},
|
||||||
{"role": "assistant", "content": "Hi, how can i assist you today?"},
|
|
||||||
{"role": "user", "content": "Generate a 3 liner joke for me"},
|
{"role": "user", "content": "Generate a 3 liner joke for me"},
|
||||||
]
|
]
|
||||||
# test without max tokens
|
# test without max tokens
|
||||||
response = completion(
|
response = completion(model="claude-2.1", messages=messages)
|
||||||
model="claude-2.1", messages=messages, request_timeout=10, max_tokens=10
|
|
||||||
)
|
|
||||||
# Add any assertions here to check the response
|
# Add any assertions here to check the response
|
||||||
print(response)
|
print(response)
|
||||||
print(response.usage)
|
print(response.usage)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue