mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-10 03:28:53 +00:00
Merge pull request #35324 from BerriAI/litellm_gpt56_pricing_test_gaps
test(pricing): cover gpt-5.6 cache-cost plumbing and bedrock_mantle responses billing
This commit is contained in:
commit
d0fe305810
2 changed files with 76 additions and 0 deletions
|
|
@ -709,6 +709,49 @@ def test_generic_cost_per_token_gpt56_flex_above_272k(
|
|||
assert completion_cost == pytest.approx(standard_long_completion_cost / 2)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"service_tier,prompt_tokens,input_rate,cache_write_rate,cache_read_rate",
|
||||
[
|
||||
(None, 100000, 2e-6, 2.5e-6, 2e-7),
|
||||
("flex", 100000, 1e-6, 1.25e-6, 1e-7),
|
||||
("priority", 100000, 4e-6, 5e-6, 4e-7),
|
||||
(None, 300000, 4e-6, 5e-6, 4e-7),
|
||||
("flex", 300000, 2e-6, 2.5e-6, 2e-7),
|
||||
],
|
||||
)
|
||||
def test_generic_cost_per_token_gpt56_terra_cache_costs_by_tier_and_context(
|
||||
service_tier, prompt_tokens, input_rate, cache_write_rate, cache_read_rate
|
||||
):
|
||||
os.environ["LITELLM_LOCAL_MODEL_COST_MAP"] = "True"
|
||||
litellm.model_cost = litellm.get_model_cost_map(url="")
|
||||
|
||||
cached_tokens = 50000
|
||||
cache_write_tokens = 40000
|
||||
text_tokens = prompt_tokens - cached_tokens - cache_write_tokens
|
||||
usage = Usage(
|
||||
prompt_tokens=prompt_tokens,
|
||||
completion_tokens=100,
|
||||
total_tokens=prompt_tokens + 100,
|
||||
prompt_tokens_details=PromptTokensDetailsWrapper(
|
||||
cached_tokens=cached_tokens, cache_write_tokens=cache_write_tokens
|
||||
),
|
||||
)
|
||||
|
||||
prompt_cost, _ = generic_cost_per_token(
|
||||
model="gpt-5.6-terra",
|
||||
usage=usage,
|
||||
custom_llm_provider="openai",
|
||||
service_tier=service_tier,
|
||||
)
|
||||
|
||||
expected_prompt_cost = (
|
||||
text_tokens * input_rate
|
||||
+ cached_tokens * cache_read_rate
|
||||
+ cache_write_tokens * cache_write_rate
|
||||
)
|
||||
assert prompt_cost == pytest.approx(expected_prompt_cost)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"model,input_cost,output_cost,cache_read_cost",
|
||||
[
|
||||
|
|
|
|||
|
|
@ -1534,6 +1534,39 @@ class TestBedrockMantleResponsesPricing:
|
|||
assert info["output_cost_per_token"] == pytest.approx(output_cost)
|
||||
assert info["max_input_tokens"] == 272000
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"model, input_cost, output_cost",
|
||||
[
|
||||
("openai.gpt-5.6-sol", 5.5e-06, 3.3e-05),
|
||||
("openai.gpt-5.6-terra", 2.2e-06, 1.32e-05),
|
||||
("openai.gpt-5.6-luna", 2.2e-07, 1.32e-06),
|
||||
],
|
||||
)
|
||||
def test_gpt_5_6_responses_call_cost(self, local_cost_map, model, input_cost, output_cost):
|
||||
from litellm.types.llms.openai import ResponseAPIUsage, ResponsesAPIResponse
|
||||
|
||||
input_tokens = 100000
|
||||
output_tokens = 10000
|
||||
response = ResponsesAPIResponse(
|
||||
id="resp-1",
|
||||
created_at=1700000000,
|
||||
model=model,
|
||||
output=[],
|
||||
usage=ResponseAPIUsage(
|
||||
input_tokens=input_tokens,
|
||||
output_tokens=output_tokens,
|
||||
total_tokens=input_tokens + output_tokens,
|
||||
),
|
||||
)
|
||||
|
||||
cost = litellm.completion_cost(
|
||||
completion_response=response,
|
||||
model=f"bedrock_mantle/{model}",
|
||||
custom_llm_provider="bedrock_mantle",
|
||||
)
|
||||
|
||||
assert cost == pytest.approx(input_tokens * input_cost + output_tokens * output_cost)
|
||||
|
||||
def test_models_registered(self, local_cost_map):
|
||||
assert "bedrock_mantle/openai.gpt-5.5" in litellm.bedrock_mantle_models
|
||||
assert "bedrock_mantle/openai.gpt-5.4" in litellm.bedrock_mantle_models
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue