From 1d44660635c0b6456f3bf53e19f05c2a42242a56 Mon Sep 17 00:00:00 2001 From: Ishaan Jaff Date: Wed, 20 Nov 2024 17:38:01 -0800 Subject: [PATCH] tests - add e2e tests for anthropic pass through --- .circleci/config.yml | 1 + .../test_anthropic_passthrough.py | 38 +++++++++++++++++++ .../test_anthropic_passthrough.py | 38 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 tests/anthropic_passthrough/test_anthropic_passthrough.py create mode 100644 tests/pass_through_tests/test_anthropic_passthrough.py diff --git a/.circleci/config.yml b/.circleci/config.yml index 0a6327bb3..f10e09f46 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1104,6 +1104,7 @@ jobs: -e DATABASE_URL=$PROXY_DATABASE_URL \ -e LITELLM_MASTER_KEY="sk-1234" \ -e OPENAI_API_KEY=$OPENAI_API_KEY \ + -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \ -e LITELLM_LICENSE=$LITELLM_LICENSE \ --name my-app \ -v $(pwd)/litellm/proxy/example_config_yaml/pass_through_config.yaml:/app/config.yaml \ diff --git a/tests/anthropic_passthrough/test_anthropic_passthrough.py b/tests/anthropic_passthrough/test_anthropic_passthrough.py new file mode 100644 index 000000000..beffcbc95 --- /dev/null +++ b/tests/anthropic_passthrough/test_anthropic_passthrough.py @@ -0,0 +1,38 @@ +""" +This test ensures that the proxy can passthrough anthropic requests +""" + +import pytest +import anthropic + +client = anthropic.Anthropic( + base_url="http://0.0.0.0:4000/anthropic", api_key="sk-1234" +) + + +def test_anthropic_basic_completion(): + print("making basic completion request to anthropic passthrough") + response = client.messages.create( + model="claude-3-5-sonnet-20241022", + max_tokens=1024, + messages=[{"role": "user", "content": "Say 'hello test' and nothing else"}], + ) + print(response) + + +def test_anthropic_streaming(): + print("making streaming request to anthropic passthrough") + collected_output = [] + + with client.messages.stream( + max_tokens=10, + messages=[ + {"role": "user", "content": "Say 'hello stream test' and nothing else"} + ], + model="claude-3-5-sonnet-20241022", + ) as stream: + for text in stream.text_stream: + collected_output.append(text) + + full_response = "".join(collected_output) + print(full_response) diff --git a/tests/pass_through_tests/test_anthropic_passthrough.py b/tests/pass_through_tests/test_anthropic_passthrough.py new file mode 100644 index 000000000..beffcbc95 --- /dev/null +++ b/tests/pass_through_tests/test_anthropic_passthrough.py @@ -0,0 +1,38 @@ +""" +This test ensures that the proxy can passthrough anthropic requests +""" + +import pytest +import anthropic + +client = anthropic.Anthropic( + base_url="http://0.0.0.0:4000/anthropic", api_key="sk-1234" +) + + +def test_anthropic_basic_completion(): + print("making basic completion request to anthropic passthrough") + response = client.messages.create( + model="claude-3-5-sonnet-20241022", + max_tokens=1024, + messages=[{"role": "user", "content": "Say 'hello test' and nothing else"}], + ) + print(response) + + +def test_anthropic_streaming(): + print("making streaming request to anthropic passthrough") + collected_output = [] + + with client.messages.stream( + max_tokens=10, + messages=[ + {"role": "user", "content": "Say 'hello stream test' and nothing else"} + ], + model="claude-3-5-sonnet-20241022", + ) as stream: + for text in stream.text_stream: + collected_output.append(text) + + full_response = "".join(collected_output) + print(full_response)