Anthropic related add

Anthropic related add
This commit is contained in:
zishan-wei authored and GitHub committed 2025-02-20 17:24:05 +01:00
commit daa7128971
5 files changed
+117 -42

No files matched your search

@@ -0,0 +1,62 @@
from unittest.mock import patch
import os
import anthropic
from httpx import Client
import datetime
import pytest
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from util import * # needed for pytest fixtures
pytest_plugins = ("pytest_asyncio")
@pytest.mark.skipif(not os.getenv("ANTHROPIC_API_KEY"), reason="No ANTHROPIC_API_KEY set")
async def test_header(
context, proxy_url, explorer_api_url
):
anthropic_api_key = os.getenv("ANTHROPIC_API_KEY")
dataset_name = "claude_header_test" + str(
datetime.datetime.now().strftime("%Y%m%d%H%M%S")
)
with patch.dict(os.environ, {"ANTHROPIC_API_KEY": anthropic_api_key + "|invariant-auth: <not needed for test>"}):
client = anthropic.Anthropic(
http_client=Client(),
base_url = f"{proxy_url}/api/v1/proxy/{dataset_name}/anthropic",
)
response = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
messages=[
{
"role": "user",
"content": "Give me an introduction to Zurich, Switzerland within 200 words."
}
]
)
assert response is not None
response_text = response.content[0].text
assert "zurich" in response_text.lower()
traces_response = await context.request.get(
f"{explorer_api_url}/api/v1/dataset/byuser/developer/{dataset_name}/traces"
)
traces = await traces_response.json()
assert len(traces) == 1
trace_id = traces[0]["id"]
get_trace_response = await context.request.get(
f"{explorer_api_url}/api/v1/trace/{trace_id}"
)
trace = await get_trace_response.json()
assert trace["messages"] == [
{
"role": "user",
"content": "Give me an introduction to Zurich, Switzerland within 200 words."
},
{
"role": "assistant",
"content": response_text
}
]
@@ -156,7 +156,7 @@ class WeatherAgent:
return response
@pytest.mark.skipif(not os.getenv("ANTHROPIC_API_KEY"), reason="No ANTHROPIC_API_KEY set")
async def test_chat_completion_without_streaming(
async def test_response_with_toolcall(
context, explorer_api_url, proxy_url
):
"""Test the chat completion without streaming for the weather agent."""
@@ -164,7 +164,7 @@ async def test_chat_completion_without_streaming(
weather_agent = WeatherAgent(proxy_url)
queries = [
"What's the weather like in Zurich city?",
"What's the weather like in Zurich, Switzerland?",
"Tell me the weather for New York",
]
cities = ["zurich", "new york"]
@@ -213,14 +213,14 @@ async def test_chat_completion_without_streaming(
@pytest.mark.skipif(not os.getenv("ANTHROPIC_API_KEY"), reason="No ANTHROPIC_API_KEY set")
async def test_chat_completion_with_streaming(
async def test_streaming_response_with_toolcall(
context, explorer_api_url, proxy_url
):
"""Test the chat completion with streaming for the weather agent."""
weather_agent = WeatherAgent(proxy_url)
queries = [
"What's the weather like in Zurich city?",
"What's the weather like in Zurich, Switzerland?",
"Tell me the weather for New York",
]
cities = ["zurich", "new york"]
@@ -10,7 +10,7 @@ from util import * # needed for pytest fixtures
pytest_plugins = ("pytest_asyncio")
@pytest.mark.skipif(not os.getenv("ANTHROPIC_API_KEY"), reason="No ANTHROPIC_API_KEY set")
async def test_chat_completion_without_streaming(
async def test_response_without_toolcall(
context, explorer_api_url,proxy_url
):
dataset_name = "claude_streaming_response_without_toolcall_test" + str(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
@@ -25,7 +25,7 @@ async def test_chat_completion_without_streaming(
cities = ["zurich", "new york", "london"]
queries = [
"Can you introduce Zurich city within 200 words?",
"Can you introduce Zurich, Switzerland within 200 words?",
"Tell me the history of New York within 100 words?",
"How's the weather in London next week?"
]
@@ -71,7 +71,8 @@ async def test_chat_completion_without_streaming(
async def test_streaming_response_without_toolcall(
context,
explorer_api_url,
proxy_url):
proxy_url
):
dataset_name = "claude_streaming_response_without_toolcall_test" + str(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
invariant_api_key = os.environ.get("INVARIANT_API_KEY","None")
@@ -85,7 +86,7 @@ async def test_streaming_response_without_toolcall(
cities = ["zurich", "new york", "london"]
queries = [
"Can you introduce Zurich city within 200 words?",
"Can you introduce Zurich, Switzerland within 200 words?",
"Tell me the history of New York within 100 words?",
"How's the weather in London next week?"
]