@@ -169,8 +169,8 @@ def parse_usage_from_chunk(
169169
170170 # Anthropic 格式: message_start 事件 (data.message.usage)
171171 msg = data .get ("message" , {})
172- if isinstance (msg , dict ) and "usage" in msg :
173- u = msg [ "usage" ]
172+ u = msg . get ( "usage" ) if isinstance (msg , dict ) else None
173+ if isinstance ( u , dict ):
174174 input_tokens = u .get ("input_tokens" , 0 ) or u .get ("prompt_tokens" , 0 )
175175 _set_if_nonzero (usage , "input_tokens" , input_tokens )
176176 _set_if_nonzero (
@@ -183,18 +183,17 @@ def parse_usage_from_chunk(
183183 usage ["request_id" ] = msg ["id" ]
184184 if "model" in msg :
185185 usage ["model_served" ] = msg ["model" ]
186- if isinstance (u , dict ):
187- _append_usage_evidence (
188- usage ,
189- evidence_kind = "message_usage" ,
190- raw_usage = dict (u ),
191- request_id = msg .get ("id" ),
192- model_served = msg .get ("model" ),
193- )
186+ _append_usage_evidence (
187+ usage ,
188+ evidence_kind = "message_usage" ,
189+ raw_usage = dict (u ),
190+ request_id = msg .get ("id" ),
191+ model_served = msg .get ("model" ),
192+ )
194193
195194 # Anthropic message_delta / OpenAI 最后一个 chunk (data.usage)
196- if "usage" in data :
197- u = data [ "usage" ]
195+ u = data . get ( "usage" )
196+ if isinstance ( u , dict ):
198197 output_tokens = u .get ("output_tokens" , 0 ) or u .get ("completion_tokens" , 0 )
199198 input_tokens = u .get ("input_tokens" , 0 ) or u .get ("prompt_tokens" , 0 )
200199 cache_creation_tokens = u .get ("cache_creation_input_tokens" , 0 )
@@ -204,14 +203,13 @@ def parse_usage_from_chunk(
204203 _set_if_nonzero (usage , "input_tokens" , input_tokens )
205204 _set_if_nonzero (usage , "cache_creation_tokens" , cache_creation_tokens )
206205 _set_if_nonzero (usage , "cache_read_tokens" , cache_read_tokens )
207- if isinstance (u , dict ):
208- _append_usage_evidence (
209- usage ,
210- evidence_kind = "data_usage" ,
211- raw_usage = dict (u ),
212- request_id = data .get ("id" ),
213- model_served = data .get ("model" ),
214- )
206+ _append_usage_evidence (
207+ usage ,
208+ evidence_kind = "data_usage" ,
209+ raw_usage = dict (u ),
210+ request_id = data .get ("id" ),
211+ model_served = data .get ("model" ),
212+ )
215213
216214 # Gemini SSE 格式: data.usageMetadata.{promptTokenCount, candidatesTokenCount, cachedContentTokenCount, thoughtsTokenCount, toolUsePromptTokenCount}
217215 # Gemini 的流式响应在最后一帧(或每一帧)携带 usageMetadata;字段命名与
0 commit comments