mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-03 01:40:21 +08:00
feat: 新增 Codex 上游兼容整流器
- 强制 store=false - 确保 instructions 字段存在(缺失/None -> "") - 强制 parallel_tool_calls=true,并确保 include 包含 reasoning.encrypted_content - 删除 Codex 会拒绝的一些字段:max_output_tokens/max_completion_tokens/max_tokens/temperature/top_p/service_tier - 将 input[] 里 role=system 的 message 改成 developer - 在发送上游请求前注入整流(覆盖“同格式透传”和“跨格式转换”两条链路)
This commit is contained in:
@@ -68,6 +68,7 @@ from src.models.database import (
|
||||
User,
|
||||
)
|
||||
from src.services.cache.aware_scheduler import ProviderCandidate
|
||||
from src.services.provider.codex import maybe_patch_request_for_codex
|
||||
from src.services.provider.transport import (
|
||||
build_provider_url,
|
||||
get_vertex_ai_effective_format,
|
||||
@@ -779,6 +780,13 @@ class ChatHandlerBase(BaseMessageHandler, ABC):
|
||||
# 同格式:按原逻辑做轻量清理(子类可覆盖以移除不需要的字段)
|
||||
request_body = self.prepare_provider_request_body(request_body)
|
||||
|
||||
# Provider-specific compatibility patches (e.g. Codex requires store=false and instructions).
|
||||
request_body = maybe_patch_request_for_codex(
|
||||
provider_type=str(getattr(provider, "provider_type", "") or ""),
|
||||
provider_api_format=str(provider_api_format),
|
||||
request_body=request_body,
|
||||
)
|
||||
|
||||
# 构建请求(上游始终使用 header 认证,不跟随客户端的 query 方式)
|
||||
provider_payload, provider_headers = self._request_builder.build(
|
||||
request_body,
|
||||
@@ -1105,6 +1113,13 @@ class ChatHandlerBase(BaseMessageHandler, ABC):
|
||||
# 同格式:按原逻辑做轻量清理(子类可覆盖以移除不需要的字段)
|
||||
request_body = self.prepare_provider_request_body(request_body)
|
||||
|
||||
# Provider-specific compatibility patches (e.g. Codex requires store=false and instructions).
|
||||
request_body = maybe_patch_request_for_codex(
|
||||
provider_type=str(getattr(provider, "provider_type", "") or ""),
|
||||
provider_api_format=str(provider_api_format),
|
||||
request_body=request_body,
|
||||
)
|
||||
|
||||
# 构建请求(上游始终使用 header 认证,不跟随客户端的 query 方式)
|
||||
provider_payload, provider_hdrs = self._request_builder.build(
|
||||
request_body,
|
||||
|
||||
@@ -72,6 +72,7 @@ from src.models.database import (
|
||||
User,
|
||||
)
|
||||
from src.services.cache.aware_scheduler import ProviderCandidate
|
||||
from src.services.provider.codex import maybe_patch_request_for_codex
|
||||
from src.services.provider.transport import build_provider_url
|
||||
from src.services.system.config import SystemConfigService
|
||||
from src.utils.sse_parser import SSEEventParser
|
||||
@@ -746,6 +747,13 @@ class CliMessageHandlerBase(BaseMessageHandler):
|
||||
self.get_model_for_url(request_body, mapped_model) or mapped_model or ctx.model
|
||||
)
|
||||
|
||||
# Provider-specific compatibility patches (e.g. Codex requires store=false and instructions).
|
||||
request_body = maybe_patch_request_for_codex(
|
||||
provider_type=str(getattr(provider, "provider_type", "") or ""),
|
||||
provider_api_format=str(provider_api_format),
|
||||
request_body=request_body,
|
||||
)
|
||||
|
||||
# 获取认证信息(处理 Service Account 等异步认证场景)
|
||||
auth_info = await get_provider_auth(endpoint, key)
|
||||
|
||||
@@ -2294,6 +2302,13 @@ class CliMessageHandlerBase(BaseMessageHandler):
|
||||
self.get_model_for_url(request_body, mapped_model) or mapped_model or model
|
||||
)
|
||||
|
||||
# Provider-specific compatibility patches (e.g. Codex requires store=false and instructions).
|
||||
request_body = maybe_patch_request_for_codex(
|
||||
provider_type=str(getattr(provider, "provider_type", "") or ""),
|
||||
provider_api_format=str(provider_api_format),
|
||||
request_body=request_body,
|
||||
)
|
||||
|
||||
# 获取认证信息(处理 Service Account 等异步认证场景)
|
||||
auth_info = await get_provider_auth(endpoint, key)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user