mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-26 03:04:13 +00:00
test - spend/calculate endpoints
This commit is contained in:
parent
02ffed2545
commit
11117665e1
2 changed files with 110 additions and 2 deletions
|
@ -1298,9 +1298,14 @@ async def calculate_spend(request: SpendCalculateRequest):
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
_cost = completion_cost(model=request.model, messages=request.messages)
|
_cost = completion_cost(model=request.model, messages=request.messages)
|
||||||
else:
|
elif request.completion_response is not None:
|
||||||
_completion_response = litellm.ModelResponse(request.completion_response)
|
_completion_response = litellm.ModelResponse(**request.completion_response)
|
||||||
_cost = completion_cost(completion_response=_completion_response)
|
_cost = completion_cost(completion_response=_completion_response)
|
||||||
|
else:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=400,
|
||||||
|
detail="Bad Request - Either 'model' or 'completion_response' must be provided",
|
||||||
|
)
|
||||||
return {"cost": _cost}
|
return {"cost": _cost}
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if isinstance(e, HTTPException):
|
if isinstance(e, HTTPException):
|
||||||
|
|
103
litellm/tests/test_spend_calculate_endpoint.py
Normal file
103
litellm/tests/test_spend_calculate_endpoint.py
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
from fastapi import Request
|
||||||
|
from fastapi.routing import APIRoute
|
||||||
|
|
||||||
|
import litellm
|
||||||
|
from litellm.proxy._types import SpendCalculateRequest
|
||||||
|
from litellm.proxy.spend_tracking.spend_management_endpoints import calculate_spend
|
||||||
|
from litellm.router import Router
|
||||||
|
|
||||||
|
# this file is to test litellm/proxy
|
||||||
|
|
||||||
|
sys.path.insert(
|
||||||
|
0, os.path.abspath("../..")
|
||||||
|
) # Adds the parent directory to the system path
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_spend_calc_model_messages():
|
||||||
|
cost_obj = await calculate_spend(
|
||||||
|
request=SpendCalculateRequest(
|
||||||
|
model="gpt-3.5-turbo",
|
||||||
|
messages=[
|
||||||
|
{"role": "user", "content": "What is the capital of France?"},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
print("calculated cost", cost_obj)
|
||||||
|
cost = cost_obj["cost"]
|
||||||
|
assert cost > 0.0
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_spend_calc_model_on_router_messages():
|
||||||
|
from litellm.proxy.proxy_server import llm_router as init_llm_router
|
||||||
|
|
||||||
|
temp_llm_router = Router(
|
||||||
|
model_list=[
|
||||||
|
{
|
||||||
|
"model_name": "special-llama-model",
|
||||||
|
"litellm_params": {
|
||||||
|
"model": "groq/llama3-8b-8192",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
setattr(litellm.proxy.proxy_server, "llm_router", temp_llm_router)
|
||||||
|
|
||||||
|
cost_obj = await calculate_spend(
|
||||||
|
request=SpendCalculateRequest(
|
||||||
|
model="special-llama-model",
|
||||||
|
messages=[
|
||||||
|
{"role": "user", "content": "What is the capital of France?"},
|
||||||
|
],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
print("calculated cost", cost_obj)
|
||||||
|
_cost = cost_obj["cost"]
|
||||||
|
|
||||||
|
assert _cost > 0.0
|
||||||
|
|
||||||
|
# set router to init value
|
||||||
|
setattr(litellm.proxy.proxy_server, "llm_router", init_llm_router)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.asyncio
|
||||||
|
async def test_spend_calc_using_response():
|
||||||
|
cost_obj = await calculate_spend(
|
||||||
|
request=SpendCalculateRequest(
|
||||||
|
completion_response={
|
||||||
|
"id": "chatcmpl-3bc7abcd-f70b-48ab-a16c-dfba0b286c86",
|
||||||
|
"choices": [
|
||||||
|
{
|
||||||
|
"finish_reason": "stop",
|
||||||
|
"index": 0,
|
||||||
|
"message": {
|
||||||
|
"content": "Yooo! What's good?",
|
||||||
|
"role": "assistant",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"created": "1677652288",
|
||||||
|
"model": "groq/llama3-8b-8192",
|
||||||
|
"object": "chat.completion",
|
||||||
|
"system_fingerprint": "fp_873a560973",
|
||||||
|
"usage": {
|
||||||
|
"completion_tokens": 8,
|
||||||
|
"prompt_tokens": 12,
|
||||||
|
"total_tokens": 20,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
print("calculated cost", cost_obj)
|
||||||
|
cost = cost_obj["cost"]
|
||||||
|
assert cost > 0.0
|
Loading…
Add table
Add a link
Reference in a new issue