TestOpenAIResponsesAPITest

This commit is contained in:
Ishaan Jaffer 2026-02-12 10:44:38 -08:00
parent 281f128e42
commit 3718a59f1a

View file

@ -1179,6 +1179,24 @@ class ResponseAPIUsage(BaseLiteLLMOpenAIResponseObject):
model_config = {"extra": "allow"}
# Optional typing for reasoning fields; API may add new values. Prefer Dict[str, Any]
# for response parsing so new effort/summary values and new fields are accepted.
ResponsesAPIReasoningEffort = str # known: "none", "minimal", "low", "medium", "high", "xhigh"
class ResponsesAPIReasoning(BaseLiteLLMOpenAIResponseObject):
"""
Reasoning info on a Responses API response. All fields are optional str to accept
current API values and any new values OpenAI adds. Extra fields are allowed.
"""
model_config = ConfigDict(extra="allow")
effort: Optional[str] = None
generate_summary: Optional[str] = None
summary: Optional[str] = None
ResponsesAPIStatus = Literal[
"completed", "failed", "in_progress", "cancelled", "queued", "incomplete"
]
@ -1217,7 +1235,7 @@ class ResponsesAPIResponse(BaseLiteLLMOpenAIResponseObject):
top_p: Optional[float] = None
max_output_tokens: Optional[int] = None
previous_response_id: Optional[str] = None
reasoning: Optional[Reasoning] = None
reasoning: Optional[Dict[str, Any]] = None
status: Optional[str] = None
text: Optional[Union["ResponseText", Dict[str, Any]]] = None
truncation: Optional[Literal["auto", "disabled"]] = None
@ -1227,6 +1245,18 @@ class ResponsesAPIResponse(BaseLiteLLMOpenAIResponseObject):
# Define private attributes using PrivateAttr
_hidden_params: dict = PrivateAttr(default_factory=dict)
@field_validator("reasoning", mode="before")
@classmethod
def validate_reasoning_to_dict(cls, value: Any) -> Optional[Dict[str, Any]]:
"""Accept API reasoning dict (including effort 'none'/'xhigh'); always store as dict."""
if value is None:
return None
if isinstance(value, dict):
return value
if hasattr(value, "model_dump"):
return value.model_dump()
return value
@field_validator("usage", mode="before")
@classmethod
def validate_usage(cls, value):
@ -1626,12 +1656,12 @@ class ImageGenerationPartialImageEvent(BaseLiteLLMOpenAIResponseObject):
class ErrorEventError(BaseLiteLLMOpenAIResponseObject):
"""Nested error object within ErrorEvent"""
"""Nested error object within ErrorEvent."""
type: str # e.g., 'invalid_request_error'
code: str # e.g., 'context_length_exceeded'
message: str
param: Optional[str]
param: Optional[str] = None
class ErrorEvent(BaseLiteLLMOpenAIResponseObject):