mirror of
https://github.com/BerriAI/litellm.git
synced 2026-11-12 08:42:18 +00:00
fix(accounting): retain input pixel rates for image replay
This commit is contained in:
parent
c1bffc852c
commit
d8df34876e
3 changed files with 20 additions and 6 deletions
|
|
@ -437,6 +437,7 @@ class ModelInfoBase(ProviderSpecificModelInfo, total=False):
|
|||
output_cost_per_token_above_512k_tokens: float | None # MiniMax-M3: prompts >512K priced at 2x output
|
||||
output_cost_per_character_above_128k_tokens: float | None # only for vertex ai models
|
||||
output_cost_per_image: float | None
|
||||
input_cost_per_pixel: ReadOnly[float | None]
|
||||
output_cost_per_pixel: ReadOnly[float | None]
|
||||
output_cost_per_image_token: float | None
|
||||
output_cost_per_image_token_batches: ReadOnly[float | None]
|
||||
|
|
|
|||
|
|
@ -7327,6 +7327,7 @@ def get_model_info_helper(
|
|||
output_cost_per_second_4k=_model_info.get("output_cost_per_second_4k", None),
|
||||
output_cost_per_video_per_second=_model_info.get("output_cost_per_video_per_second", None),
|
||||
output_cost_per_image=_model_info.get("output_cost_per_image", None),
|
||||
input_cost_per_pixel=_model_info.get("input_cost_per_pixel", None),
|
||||
output_cost_per_pixel=_model_info.get("output_cost_per_pixel", None),
|
||||
output_cost_per_image_token=_model_info.get("output_cost_per_image_token", None),
|
||||
output_cost_per_image_token_batches=_model_info.get("output_cost_per_image_token_batches", None),
|
||||
|
|
|
|||
|
|
@ -1618,6 +1618,7 @@ async def test_live_adjustment_reload_is_captured_and_replay_remains_frozen(monk
|
|||
("pixels", 2049, 0.6),
|
||||
("tiered", 2048, 1.5),
|
||||
("tiered-request", 2048, 1.5),
|
||||
("azure-tiered", 2048, 1.5),
|
||||
),
|
||||
)
|
||||
async def test_image_capture_replays_the_existing_image_calculator(
|
||||
|
|
@ -1638,30 +1639,41 @@ async def test_image_capture_replays_the_existing_image_calculator(
|
|||
"pixels": "fal-ai/flux/dev",
|
||||
"tiered": "dall-e-capture",
|
||||
"tiered-request": "dall-e-capture",
|
||||
"azure-tiered": "dall-e-3",
|
||||
}[pricing]
|
||||
provider: Final = "fal_ai" if pricing == "pixels" else "openai"
|
||||
provider: Final = "fal_ai" if pricing == "pixels" else "azure" if pricing == "azure-tiered" else "openai"
|
||||
catalog_provider: Final = provider
|
||||
catalog_key: Final = f"{provider}/{model}" if pricing == "pixels" else model
|
||||
monkeypatch.setitem(
|
||||
litellm.model_cost,
|
||||
catalog_key,
|
||||
{
|
||||
"litellm_provider": provider,
|
||||
"litellm_provider": catalog_provider,
|
||||
"mode": "image_generation",
|
||||
**{
|
||||
"tokens": {"input_cost_per_token": 0.01, "output_cost_per_image_token": 0.02},
|
||||
"images": {"output_cost_per_image": 0.25},
|
||||
"tiered": {"output_cost_per_image": 0.25},
|
||||
"tiered-request": {"output_cost_per_image": 0.25},
|
||||
"azure-tiered": {"input_cost_per_token": 0.0, "output_cost_per_token": 0.0},
|
||||
"pixels": {"output_cost_per_image": 0.1, "output_cost_per_pixel": 0.1 / (1024 * 1024)},
|
||||
}[pricing],
|
||||
},
|
||||
)
|
||||
tier_key: Final = f"hd/1024-x-1024/{model}"
|
||||
if pricing.startswith("tiered"):
|
||||
tier_key: Final = f"{provider}/hd/1024-x-1024/{model}" if pricing == "azure-tiered" else f"hd/1024-x-1024/{model}"
|
||||
if "tiered" in pricing:
|
||||
monkeypatch.setitem(
|
||||
litellm.model_cost,
|
||||
tier_key,
|
||||
{"litellm_provider": provider, "mode": "image_generation", "output_cost_per_image": 0.75},
|
||||
{
|
||||
"litellm_provider": catalog_provider,
|
||||
"mode": "image_generation",
|
||||
**(
|
||||
{"input_cost_per_pixel": 0.75 / (1024 * 1024)}
|
||||
if pricing == "azure-tiered"
|
||||
else {"output_cost_per_image": 0.75}
|
||||
),
|
||||
},
|
||||
)
|
||||
logger: Final = _logger("aimage_generation")
|
||||
logger.model = model
|
||||
|
|
@ -1687,7 +1699,7 @@ async def test_image_capture_replays_the_existing_image_calculator(
|
|||
]
|
||||
* 2,
|
||||
"size": None if pricing == "tiered-request" else "1024x1024",
|
||||
"quality": None if pricing == "tiered-request" else "hd" if pricing == "tiered" else "standard",
|
||||
"quality": None if pricing == "tiered-request" else "hd" if "tiered" in pricing else "standard",
|
||||
"usage": {
|
||||
"input_tokens": 10,
|
||||
"output_tokens": 5,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue