(feat) claude-3 test fixes

This commit is contained in:
ishaan-jaff 2024-03-04 07:53:06 -08:00
parent 25bbb73ce3
commit d179ae376e
3 changed files with 21 additions and 5 deletions

View file

@ -4,7 +4,6 @@ LiteLLM supports
- `claude-3` (`claude-3-opus-20240229`, `claude-3-sonnet-20240229`)
- `claude-2`
- `claude-2.1`
- `claude-instant-1`
- `claude-instant-1.2`
## API Keys
@ -56,7 +55,6 @@ for chunk in response:
| claude-3-sonnet | `completion('claude-3-sonnet-20240229', messages)` | `os.environ['ANTHROPIC_API_KEY']` |
| claude-2.1 | `completion('claude-2.1', messages)` | `os.environ['ANTHROPIC_API_KEY']` |
| claude-2 | `completion('claude-2', messages)` | `os.environ['ANTHROPIC_API_KEY']` |
| claude-instant-1 | `completion('claude-instant-1', messages)` | `os.environ['ANTHROPIC_API_KEY']` |
| claude-instant-1.2 | `completion('claude-instant-1.2', messages)` | `os.environ['ANTHROPIC_API_KEY']` |
## Advanced

View file

@ -121,11 +121,29 @@ def completion(
prompt = prompt_factory(
model=model, messages=messages, custom_llm_provider="anthropic"
)
"""
format messages for anthropic
1. Anthropic supports roles like "user" and "assistant", (here litellm translates system-> assistant)
2. The first message always needs to be of role "user"
"""
# 1. Anthropic only supports roles like "user" and "assistant"
for message in messages:
if message["role"] == "system":
message["role"] = "assistant"
# 2. The first message always needs to be of role "user"
if len(messages) > 0:
if messages[0]["role"] != "user":
# find the index of the first user message
for i, message in enumerate(messages):
if message["role"] == "user":
break
# remove the user message at existing position and add it to the front
messages.pop(i)
# move the first user message to the front
messages = [message] + messages
## Load Config
config = litellm.AnthropicConfig.get_config()
for k, v in config.items():

View file

@ -56,7 +56,7 @@ def test_completion_custom_provider_model_name():
def test_completion_claude():
litellm.set_verbose = True
litellm.cache = None
litellm.AnthropicConfig(max_tokens_to_sample=200, metadata={"user_id": "1224"})
litellm.AnthropicConfig(max_tokens=200, metadata={"user_id": "1224"})
messages = [
{
"role": "system",
@ -67,7 +67,7 @@ def test_completion_claude():
try:
# test without max tokens
response = completion(
model="claude-instant-1",
model="claude-instant-1.2",
messages=messages,
request_timeout=10,
)