mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-08 03:08:45 +00:00
test: update test - anthropic returns input tokens in final usage chunk now
This commit is contained in:
parent
2de4ddd194
commit
6e853c7de9
2 changed files with 31 additions and 33 deletions
|
|
@ -96,7 +96,6 @@ class AnthropicPassthroughLoggingHandler:
|
|||
handles streaming and non-streaming responses
|
||||
"""
|
||||
try:
|
||||
|
||||
response_cost = litellm.completion_cost(
|
||||
completion_response=litellm_model_response,
|
||||
model=model,
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ async def test_anthropic_basic_completion_with_headers():
|
|||
max_retries = 2
|
||||
for attempt in range(max_retries):
|
||||
print(f"Attempt {attempt + 1}/{max_retries} to check spend logs")
|
||||
|
||||
|
||||
async with session.get(
|
||||
f"http://0.0.0.0:4000/spend/logs?request_id={litellm_call_id}",
|
||||
headers={"Authorization": "Bearer sk-1234"},
|
||||
|
|
@ -66,32 +66,30 @@ async def test_anthropic_basic_completion_with_headers():
|
|||
print(f"Spend response: {spend_response}")
|
||||
spend_data = await spend_response.json()
|
||||
print(f"Spend data: {spend_data}")
|
||||
|
||||
|
||||
# Check if spend data exists and has entries
|
||||
if spend_data and len(spend_data) > 0:
|
||||
print("Spend logs found!")
|
||||
break
|
||||
else:
|
||||
print("Spend logs not found yet...")
|
||||
if attempt < max_retries - 1: # Don't wait after the last attempt
|
||||
if (
|
||||
attempt < max_retries - 1
|
||||
): # Don't wait after the last attempt
|
||||
print("Waiting 10 seconds before retry...")
|
||||
await asyncio.sleep(10)
|
||||
|
||||
|
||||
assert spend_data is not None, "Should have spend data for the request"
|
||||
assert len(spend_data) > 0, "Should have at least one spend log entry"
|
||||
|
||||
log_entry = spend_data[
|
||||
0
|
||||
] # Get the first (and should be only) log entry
|
||||
log_entry = spend_data[0] # Get the first (and should be only) log entry
|
||||
|
||||
# Basic existence checks
|
||||
assert spend_data is not None, "Should have spend data for the request"
|
||||
assert isinstance(log_entry, dict), "Log entry should be a dictionary"
|
||||
|
||||
# Request metadata assertions
|
||||
assert (
|
||||
log_entry["request_id"] == litellm_call_id
|
||||
), "Request ID should match"
|
||||
assert log_entry["request_id"] == litellm_call_id, "Request ID should match"
|
||||
assert (
|
||||
log_entry["call_type"] == "pass_through_endpoint"
|
||||
), "Call type should be pass_through_endpoint"
|
||||
|
|
@ -126,9 +124,7 @@ async def test_anthropic_basic_completion_with_headers():
|
|||
), "Start time should be before end time"
|
||||
|
||||
# Metadata assertions
|
||||
assert (
|
||||
str(log_entry["cache_hit"]).lower() != "true"
|
||||
), "Cache should be off"
|
||||
assert str(log_entry["cache_hit"]).lower() != "true", "Cache should be off"
|
||||
assert log_entry["request_tags"] == [
|
||||
"test-tag-1",
|
||||
"test-tag-2",
|
||||
|
|
@ -197,12 +193,19 @@ async def test_anthropic_streaming_with_headers():
|
|||
json.dumps(anthropic_api_usage_chunks, indent=4, default=str),
|
||||
)
|
||||
|
||||
anthropic_api_input_tokens = sum(
|
||||
[usage.get("input_tokens", 0) for usage in anthropic_api_usage_chunks]
|
||||
)
|
||||
anthropic_api_output_tokens = max(
|
||||
[usage.get("output_tokens", 0) for usage in anthropic_api_usage_chunks]
|
||||
)
|
||||
print("anthropic_api_usage_chunks: ", anthropic_api_usage_chunks)
|
||||
# Get the most recent value of input tokens (iterate backwards to find last non-zero value)
|
||||
anthropic_api_input_tokens = 0
|
||||
for usage in reversed(anthropic_api_usage_chunks):
|
||||
if usage.get("input_tokens", 0) > 0:
|
||||
anthropic_api_input_tokens = usage.get("input_tokens", 0)
|
||||
break
|
||||
anthropic_api_output_tokens = 0
|
||||
for usage in reversed(anthropic_api_usage_chunks):
|
||||
if usage.get("output_tokens", 0) > 0:
|
||||
anthropic_api_output_tokens = usage.get("output_tokens", 0)
|
||||
break
|
||||
|
||||
print("anthropic_api_input_tokens", anthropic_api_input_tokens)
|
||||
print("anthropic_api_output_tokens", anthropic_api_output_tokens)
|
||||
|
||||
|
|
@ -214,39 +217,37 @@ async def test_anthropic_streaming_with_headers():
|
|||
max_retries = 2
|
||||
for attempt in range(max_retries):
|
||||
print(f"Attempt {attempt + 1}/{max_retries} to check spend logs")
|
||||
|
||||
|
||||
async with session.get(
|
||||
f"http://0.0.0.0:4000/spend/logs?request_id={litellm_call_id}",
|
||||
headers={"Authorization": "Bearer sk-1234"},
|
||||
) as spend_response:
|
||||
spend_data = await spend_response.json()
|
||||
print(f"Spend data: {spend_data}")
|
||||
|
||||
|
||||
# Check if spend data exists and has entries
|
||||
if spend_data and len(spend_data) > 0:
|
||||
print("Spend logs found!")
|
||||
break
|
||||
else:
|
||||
print("Spend logs not found yet...")
|
||||
if attempt < max_retries - 1: # Don't wait after the last attempt
|
||||
if (
|
||||
attempt < max_retries - 1
|
||||
): # Don't wait after the last attempt
|
||||
print("Waiting 10 seconds before retry...")
|
||||
await asyncio.sleep(10)
|
||||
|
||||
|
||||
assert spend_data is not None, "Should have spend data for the request"
|
||||
assert len(spend_data) > 0, "Should have at least one spend log entry"
|
||||
|
||||
log_entry = spend_data[
|
||||
0
|
||||
] # Get the first (and should be only) log entry
|
||||
log_entry = spend_data[0] # Get the first (and should be only) log entry
|
||||
|
||||
# Basic existence checks
|
||||
assert spend_data is not None, "Should have spend data for the request"
|
||||
assert isinstance(log_entry, dict), "Log entry should be a dictionary"
|
||||
|
||||
# Request metadata assertions
|
||||
assert (
|
||||
log_entry["request_id"] == litellm_call_id
|
||||
), "Request ID should match"
|
||||
assert log_entry["request_id"] == litellm_call_id, "Request ID should match"
|
||||
assert (
|
||||
log_entry["call_type"] == "pass_through_endpoint"
|
||||
), "Call type should be pass_through_endpoint"
|
||||
|
|
@ -281,9 +282,7 @@ async def test_anthropic_streaming_with_headers():
|
|||
), "Start time should be before end time"
|
||||
|
||||
# Metadata assertions
|
||||
assert (
|
||||
str(log_entry["cache_hit"]).lower() != "true"
|
||||
), "Cache should be off"
|
||||
assert str(log_entry["cache_hit"]).lower() != "true", "Cache should be off"
|
||||
assert log_entry["request_tags"] == [
|
||||
"test-tag-stream-1",
|
||||
"test-tag-stream-2",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue