litellm - 💡(How to fix) Fix Responses API streaming fails: ContentPartDonePartOutputText.logprobs missing default value

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

Error Message

pydantic_core._pydantic_core.ValidationError: 5 validation errors for ContentPartDoneEvent
part.ContentPartDonePartOutputText.logprobs
  Field required [type=missing, input_value={'type': 'output_text', ...}, input_type=dict]

Root Cause

In litellm/types/llms/openai.py, ContentPartDonePartOutputText defines:

logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]]

In Pydantic v2, Optional[X] without = None means "field is required but accepts None". Since upstream models (Gemini, etc.) do NOT return logprobs in their response, Pydantic validation fails.

Fix Action

Fix

logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]] = None

Workaround

Runtime patch the file on container startup:

# In /usr/lib/python3.13/site-packages/litellm/types/llms/openai.py
# Change:  logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]]
# To:      logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]] = None

Code Example

pydantic_core._pydantic_core.ValidationError: 5 validation errors for ContentPartDoneEvent
part.ContentPartDonePartOutputText.logprobs
  Field required [type=missing, input_value={'type': 'output_text', ...}, input_type=dict]

---

logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]]

---

logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]] = None

---

curl -X POST http://localhost:4000/v1/responses \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"gemini/gemini-2.5-flash","input":"hello","stream":true}'

---

# In /usr/lib/python3.13/site-packages/litellm/types/llms/openai.py
# Change:  logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]]
# To:      logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]] = None
RAW_BUFFERClick to expand / collapse

Bug Description

When using the /v1/responses endpoint with streaming enabled, LiteLLM fails with a Pydantic validation error for ContentPartDoneEvent because logprobs field in ContentPartDonePartOutputText lacks a default value.

Error

pydantic_core._pydantic_core.ValidationError: 5 validation errors for ContentPartDoneEvent
part.ContentPartDonePartOutputText.logprobs
  Field required [type=missing, input_value={'type': 'output_text', ...}, input_type=dict]

Root Cause

In litellm/types/llms/openai.py, ContentPartDonePartOutputText defines:

logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]]

In Pydantic v2, Optional[X] without = None means "field is required but accepts None". Since upstream models (Gemini, etc.) do NOT return logprobs in their response, Pydantic validation fails.

Fix

logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]] = None

Reproduction

curl -X POST http://localhost:4000/v1/responses \
  -H "Authorization: Bearer sk-xxx" \
  -H "Content-Type: application/json" \
  -d '{"model":"gemini/gemini-2.5-flash","input":"hello","stream":true}'

Environment

  • LiteLLM version: 1.81.0 (also confirmed in v1.85.1 source on GitHub)
  • Python: 3.13
  • Pydantic: v2.12
  • Backend models: Google Gemini (but affects any model that does not return logprobs)

Workaround

Runtime patch the file on container startup:

# In /usr/lib/python3.13/site-packages/litellm/types/llms/openai.py
# Change:  logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]]
# To:      logprobs: Optional[List[OpenAIChatCompletionLogprobsContent]] = None

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

litellm - 💡(How to fix) Fix Responses API streaming fails: ContentPartDonePartOutputText.logprobs missing default value