mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-05 02:41:56 +00:00
test(logging): lock in streaming response_cost survival across sync success handler
This commit is contained in:
parent
daf22ec871
commit
a5be969ae7
1 changed files with 33 additions and 0 deletions
|
|
@ -2796,6 +2796,39 @@ async def test_async_success_handler_preserves_response_cost_for_pass_through_en
|
|||
assert slo is not None
|
||||
assert slo["response_cost"] > 0
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_sync_success_handler_preserves_streaming_cost_computed_by_async_handler():
|
||||
"""Regression for #34875: the sync success_handler used to reset response_cost to None
|
||||
for streams, so custom callbacks reading kwargs["response_cost"] saw None whenever it ran
|
||||
after the async handler had already computed the cost on the shared model_call_details."""
|
||||
import litellm
|
||||
|
||||
litellm.callbacks = []
|
||||
litellm.success_callback = []
|
||||
|
||||
response = await litellm.acompletion(
|
||||
model="gpt-4o-mini",
|
||||
messages=[{"role": "user", "content": "hi"}],
|
||||
stream=True,
|
||||
mock_response="hello there",
|
||||
stream_options={"include_usage": True},
|
||||
)
|
||||
logging_obj = response.logging_obj
|
||||
async for _chunk in response:
|
||||
pass
|
||||
await asyncio.sleep(0.5)
|
||||
|
||||
cost_from_async_handler = logging_obj.model_call_details.get("response_cost")
|
||||
assert cost_from_async_handler is not None and cost_from_async_handler > 0
|
||||
|
||||
assembled = logging_obj.model_call_details.get(
|
||||
"async_complete_streaming_response"
|
||||
) or logging_obj.model_call_details.get("complete_streaming_response")
|
||||
|
||||
for _ in range(2):
|
||||
logging_obj.success_handler(assembled, None, None, False)
|
||||
assert logging_obj.model_call_details["response_cost"] == cost_from_async_handler
|
||||
|
||||
|
||||
def test_process_hidden_params_recalculates_cost_after_failure_handler_zero():
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue