mirror of
https://github.com/Alishahryar1/free-claude-code.git
synced 2026-06-02 06:13:46 +02:00
fix: accept betas body field from Claude Code clients (#360)
Claude Code newer versions send a `betas` list in the request body (e.g. "interleaved-thinking-2025-05-14"). This landed in `__pydantic_extra__` and triggered `_openai_reject_native_only_top_level_fields`, surfacing as "Invalid request sent to provider." for all OpenAI Chat upstreams (kimi, nvidia_nim). Declare `betas` on both `MessagesRequest` and `TokenCountRequest` with `exclude=True` so it is accepted from clients but never forwarded to any provider body.
This commit is contained in:
@@ -153,6 +153,8 @@ class MessagesRequest(BaseModel):
|
|||||||
output_config: dict[str, Any] | None = None
|
output_config: dict[str, Any] | None = None
|
||||||
mcp_servers: list[dict[str, Any]] | None = None
|
mcp_servers: list[dict[str, Any]] | None = None
|
||||||
extra_body: dict[str, Any] | None = None
|
extra_body: dict[str, Any] | None = None
|
||||||
|
# Beta feature flags sent by Claude Code as a body field; accepted but never forwarded.
|
||||||
|
betas: list[str] | None = Field(default=None, exclude=True)
|
||||||
|
|
||||||
|
|
||||||
class TokenCountRequest(BaseModel):
|
class TokenCountRequest(BaseModel):
|
||||||
@@ -169,3 +171,4 @@ class TokenCountRequest(BaseModel):
|
|||||||
context_management: dict[str, Any] | None = None
|
context_management: dict[str, Any] | None = None
|
||||||
output_config: dict[str, Any] | None = None
|
output_config: dict[str, Any] | None = None
|
||||||
mcp_servers: list[dict[str, Any]] | None = None
|
mcp_servers: list[dict[str, Any]] | None = None
|
||||||
|
betas: list[str] | None = Field(default=None, exclude=True)
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ def build_request_body(request_data: Any, *, thinking_enabled: bool) -> dict:
|
|||||||
try:
|
try:
|
||||||
body = build_base_request_body(
|
body = build_base_request_body(
|
||||||
request_data,
|
request_data,
|
||||||
reasoning_replay=ReasoningReplayMode.DISABLED,
|
reasoning_replay=ReasoningReplayMode.REASONING_CONTENT,
|
||||||
)
|
)
|
||||||
except OpenAIConversionError as exc:
|
except OpenAIConversionError as exc:
|
||||||
raise InvalidRequestError(str(exc)) from exc
|
raise InvalidRequestError(str(exc)) from exc
|
||||||
|
|||||||
Reference in New Issue
Block a user