refactor: 重构 API 格式相关代码到统一的 api_format 模块

- 新增 src/core/api_format/ 模块,整合所有 API 格式相关功能
  - enums.py: APIFormat 枚举定义
  - metadata.py: API 格式元数据注册
  - headers.py: 请求头处理逻辑
  - detection.py: API 格式检测
  - conversion/: 格式转换器(Claude/OpenAI/Gemini 互转)
- 删除分散在各处的旧实现
  - src/core/api_format_metadata.py
  - src/core/headers.py
  - src/api/handlers/*/converter.py
  - src/api/handlers/base/format_converter_registry.py
- 更新所有引用路径,使用新的统一模块
- 新增 cli_handler_base 中的格式转换支持
This commit is contained in:
fawney19
2026-01-21 18:07:10 +08:00
parent 856077a46c
commit 99388bfa33
57 changed files with 2405 additions and 450 deletions

View File

@@ -39,7 +39,7 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union
from sqlalchemy.orm import Session, selectinload
from src.core.enums import APIFormat
from src.core.api_format import APIFormat
from src.core.exceptions import ModelNotSupportedException, ProviderNotAvailableException
from src.core.logger import logger
from src.models.database import (

View File

@@ -16,7 +16,7 @@ from src.core.key_capabilities import (
CapabilityConfigMode,
get_user_configurable_capabilities,
)
from src.core.headers import get_header_value
from src.core.api_format import get_header_value
from src.core.logger import logger
# Adapter 检测器类型:接受 headers 和可选的 request_body返回能力需求字典

View File

@@ -11,8 +11,7 @@ from typing import Dict, Optional
import httpx
from src.core.enums import APIFormat
from src.core.headers import get_extra_headers_from_endpoint
from src.core.api_format import APIFormat, get_extra_headers_from_endpoint
from src.core.logger import logger
from src.models.database import ProviderEndpoint
from src.utils.ssl_utils import get_ssl_context

View File

@@ -10,7 +10,7 @@ from typing import Any, Dict, List, Optional, Tuple
from sqlalchemy.orm import Session
from src.core.enums import APIFormat
from src.core.api_format import APIFormat
from src.core.exceptions import ProviderNotAvailableException
from src.core.logger import logger
from src.models.database import ApiKey

View File

@@ -11,7 +11,7 @@ from typing import Any, Dict, Optional, Tuple, Union
import httpx
from sqlalchemy.orm import Session
from src.core.enums import APIFormat
from src.core.api_format import APIFormat
from src.core.exceptions import (
ConcurrencyLimitError,
ProviderAuthException,

View File

@@ -29,7 +29,7 @@ import httpx
from redis import Redis
from sqlalchemy.orm import Session
from src.core.enums import APIFormat
from src.core.api_format import APIFormat
from src.core.error_utils import extract_error_message
from src.core.exceptions import (
ConcurrencyLimitError,

View File

@@ -8,7 +8,7 @@ from typing import Any, Callable, Optional, Tuple
from sqlalchemy.orm import Session
from src.core.enums import APIFormat
from src.core.api_format import APIFormat
from src.core.logger import logger
from src.models.database import ApiKey
from src.services.cache.aware_scheduler import CacheAwareScheduler, ProviderCandidate

View File

@@ -6,8 +6,7 @@ from __future__ import annotations
from typing import Optional, Union
from src.core.api_format_metadata import resolve_api_format
from src.core.enums import APIFormat
from src.core.api_format import APIFormat, resolve_api_format
def normalize_api_format(

View File

@@ -8,8 +8,7 @@
from typing import TYPE_CHECKING, Any, Dict, Optional
from urllib.parse import urlencode
from src.core.api_format_metadata import get_default_path, resolve_api_format
from src.core.enums import APIFormat
from src.core.api_format import APIFormat, get_default_path, resolve_api_format
from src.core.logger import logger
if TYPE_CHECKING:

View File

@@ -8,7 +8,7 @@ from typing import Any, Callable, Optional, Union
from sqlalchemy.orm import Session
from src.core.enums import APIFormat
from src.core.api_format import APIFormat
from src.core.exceptions import ConcurrencyLimitError
from src.core.logger import logger
from src.services.health.monitor import health_monitor