mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 17:30:23 +08:00
feat: 新增 Thinking 整流器处理跨 Provider 签名错误 (#115)
当 Provider A 生成的 thinking 块被发送到 Provider B 时,签名验证会失败。 本次更新实现了自动整流机制,在遇到签名错误时自动清洗 thinking 块后重试。 主要更改: - 新增 ThinkingRectifier 整流器,移除 thinking 块和 signature 字段 - 新增 ThinkingSignatureException 异常类型 - ErrorClassifier 新增 Thinking 错误模式检测 - FallbackOrchestrator 支持整流后在当前候选重试 - Handler 层传递 request_body_ref 容器支持请求体动态修改 - Usage API 新增 has_rectified 字段标识整流过的请求 - 新增 THINKING_RECTIFIER_ENABLED 配置项控制功能开关 其他改进: - CacheAwareScheduler 支持 exact/convertible 候选分组排序 - StreamProcessor 预读阶段新增格式转换试验 - ProviderAPIKey.api_formats 改为可空(None 表示支持所有格式) - Dockerfile 修复 entrypoint.sh 换行符问题 Closes #115 Co-Authored-By: FredericMN <FredericMN@users.noreply.github.com>
This commit is contained in:
@@ -17,9 +17,9 @@ import httpx
|
||||
from fastapi import HTTPException, status
|
||||
from fastapi.responses import JSONResponse
|
||||
|
||||
from ..config import config
|
||||
from src.core.logger import logger
|
||||
|
||||
from ..config import config
|
||||
|
||||
# Pydantic 错误消息中英文翻译映射
|
||||
PYDANTIC_ERROR_TRANSLATIONS = {
|
||||
@@ -139,7 +139,6 @@ def translate_pydantic_errors(errors: List[Dict[str, Any]]) -> str:
|
||||
return "; ".join(translated)
|
||||
|
||||
|
||||
|
||||
# 延迟导入韧性管理器,避免循环导入
|
||||
def get_resilience_manager():
|
||||
try:
|
||||
@@ -530,6 +529,26 @@ class UpstreamClientException(ProxyException):
|
||||
)
|
||||
|
||||
|
||||
class ThinkingSignatureException(UpstreamClientException):
|
||||
"""Thinking 块签名验证失败异常"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
message: str,
|
||||
provider_name: Optional[str] = None,
|
||||
upstream_error: Optional[str] = None,
|
||||
request_metadata: Any = None,
|
||||
):
|
||||
super().__init__(
|
||||
message=message,
|
||||
provider_name=provider_name,
|
||||
status_code=400,
|
||||
error_type="thinking_signature_error",
|
||||
upstream_error=upstream_error,
|
||||
request_metadata=request_metadata,
|
||||
)
|
||||
|
||||
|
||||
class ErrorResponse:
|
||||
"""统一的错误响应格式化器"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user