(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-3` (`claude-3-opus-20240229`, `claude-3-sonnet-20240229`)
- `claude-2` - `claude-2`
- `claude-2.1` - `claude-2.1`
- `claude-instant-1`
- `claude-instant-1.2` - `claude-instant-1.2`
## API Keys ## 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-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.1 | `completion('claude-2.1', messages)` | `os.environ['ANTHROPIC_API_KEY']` |
| claude-2 | `completion('claude-2', 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']` | | claude-instant-1.2 | `completion('claude-instant-1.2', messages)` | `os.environ['ANTHROPIC_API_KEY']` |
## Advanced ## Advanced

View file

@ -121,11 +121,29 @@ def completion(
prompt = prompt_factory( prompt = prompt_factory(
model=model, messages=messages, custom_llm_provider="anthropic" 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: for message in messages:
if message["role"] == "system": if message["role"] == "system":
message["role"] = "assistant" 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 ## Load Config
config = litellm.AnthropicConfig.get_config() config = litellm.AnthropicConfig.get_config()
for k, v in config.items(): for k, v in config.items():

View file

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