Skip to content

[Bug]: server_tool_use missing in usage when using stream=True #16631

@KeremTurgutlu

Description

@KeremTurgutlu

What happened?

Usage field server_tool_use is missing when using streaming.

For example when running the following code:

from litellm import completion 

o = completion(
  model="claude-sonnet-4-5-20250929",
  messages=[
    {"role": "user", "content": "What is the weather today in NYC?"},
  ],
  web_search_options = {"search_context_size": "medium"}
)
print(o)

usage metadata includes web_search_requets.

Usage(completion_tokens=326, prompt_tokens=9457, total_tokens=9783, completion_tokens_details=None, prompt_tokens_details=PromptTokensDetailsWrapper(audio_tokens=None, cached_tokens=0, text_tokens=None, image_tokens=None), server_tool_use=ServerToolUse(web_search_requests=1), cache_creation_input_tokens=0, cache_read_input_tokens=0)

But this is not the case when streaming is enabled, it only includes WebSearchResultBlock:

o = completion(
  model="claude-sonnet-4-5-20250929",
  messages=[
    {"role": "user", "content": "What is the weather today in NYC?"},
  ],
  web_search_options = {"search_context_size": "medium"},
  stream=True,
  stream_options={"include_usage": True}
)

for chunk in o: print(chunk)
('usage', Usage(completion_tokens=287, prompt_tokens=9463, total_tokens=9750, completion_tokens_details=CompletionTokensDetailsWrapper(accepted_prediction_tokens=None, audio_tokens=None, reasoning_tokens=0, rejected_prediction_tokens=None, text_tokens=None), prompt_tokens_details=None)

Relevant log output

Are you a ML Ops Team?

No

What LiteLLM version are you on ?

1.76.0

Twitter / LinkedIn details

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions