@@ -351,7 +351,7 @@ def _process_response(self, response: BetaMessage) -> ModelResponse:
351351
352352 return ModelResponse (
353353 parts = items ,
354- usage = _map_usage (response , self ._provider .name , self ._model_name ),
354+ usage = _map_usage (response , self ._provider .name , self ._provider . base_url , self . _model_name ),
355355 model_name = response .model ,
356356 provider_response_id = response .id ,
357357 provider_name = self ._provider .name ,
@@ -375,6 +375,7 @@ async def _process_streamed_response(
375375 _response = peekable_response ,
376376 _timestamp = _utils .now_utc (),
377377 _provider_name = self ._provider .name ,
378+ _provider_url = self ._provider .base_url ,
378379 )
379380
380381 def _get_tools (self , model_request_parameters : ModelRequestParameters ) -> list [BetaToolUnionParam ]:
@@ -619,6 +620,7 @@ def _map_tool_definition(f: ToolDefinition) -> BetaToolParam:
619620def _map_usage (
620621 message : BetaMessage | BetaRawMessageStartEvent | BetaRawMessageDeltaEvent ,
621622 provider : str ,
623+ provider_url : str ,
622624 model : str ,
623625 existing_usage : usage .RequestUsage | None = None ,
624626) -> usage .RequestUsage :
@@ -637,7 +639,13 @@ def _map_usage(
637639 key : value for key , value in response_usage .model_dump ().items () if isinstance (value , int )
638640 }
639641
640- return usage .RequestUsage .extract (dict (model = model , usage = details ), provider_id = provider , details = details )
642+ return usage .RequestUsage .extract (
643+ dict (model = model , usage = details ),
644+ provider = provider ,
645+ provider_url = provider_url ,
646+ provider_fallback = 'anthropic' ,
647+ details = details ,
648+ )
641649
642650
643651@dataclass
@@ -648,13 +656,14 @@ class AnthropicStreamedResponse(StreamedResponse):
648656 _response : AsyncIterable [BetaRawMessageStreamEvent ]
649657 _timestamp : datetime
650658 _provider_name : str
659+ _provider_url : str
651660
652661 async def _get_event_iterator (self ) -> AsyncIterator [ModelResponseStreamEvent ]: # noqa: C901
653662 current_block : BetaContentBlock | None = None
654663
655664 async for event in self ._response :
656665 if isinstance (event , BetaRawMessageStartEvent ):
657- self ._usage = _map_usage (event , self ._provider_name , self ._model_name )
666+ self ._usage = _map_usage (event , self ._provider_name , self ._provider_url , self . _model_name )
658667 self .provider_response_id = event .message .id
659668
660669 elif isinstance (event , BetaRawContentBlockStartEvent ):
@@ -735,7 +744,7 @@ async def _get_event_iterator(self) -> AsyncIterator[ModelResponseStreamEvent]:
735744 pass
736745
737746 elif isinstance (event , BetaRawMessageDeltaEvent ):
738- self ._usage = _map_usage (event , self ._provider_name , self ._model_name , self ._usage )
747+ self ._usage = _map_usage (event , self ._provider_name , self ._provider_url , self . _model_name , self ._usage )
739748 if raw_finish_reason := event .delta .stop_reason : # pragma: no branch
740749 self .provider_details = {'finish_reason' : raw_finish_reason }
741750 self .finish_reason = _FINISH_REASON_MAP .get (raw_finish_reason )
0 commit comments