mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-03 01:40:21 +08:00
feat: 格式转换支持三层开关控制(全局/Provider/端点)
- _get_convertible_formats 始终返回所有可转换格式,由下游精确过滤 - get_compatible_provider_formats 增加 Provider 级别 enable_format_conversion 判断 - Provider 设置更新后自动失效相关缓存(模型列表、解析缓存、Provider 缓存) - 前端 toggleFormatConversion 使用接口返回的完整对象更新本地状态
This commit is contained in:
@@ -80,19 +80,15 @@ def _is_format_conversion_enabled(db: Session) -> bool:
|
||||
return SystemConfigService.is_format_conversion_enabled(db)
|
||||
|
||||
|
||||
def _get_convertible_formats(client_format: str, global_conversion_enabled: bool) -> list[str]:
|
||||
def _get_convertible_formats(client_format: str) -> list[str]:
|
||||
"""
|
||||
获取客户端格式可转换到的所有目标格式列表
|
||||
|
||||
当启用格式转换时,返回所有可以转换的格式;
|
||||
否则只返回客户端格式本身(不包括同族的其他格式)。
|
||||
始终返回所有有转换器的格式(包括客户端格式本身),
|
||||
由下游 get_compatible_provider_formats 按三层开关(全局/Provider/端点)精确过滤。
|
||||
"""
|
||||
client_format_norm = normalize_endpoint_signature(client_format)
|
||||
|
||||
# 格式转换关闭时,只返回客户端格式本身
|
||||
if not global_conversion_enabled:
|
||||
return [client_format_norm]
|
||||
|
||||
# 收集所有可转换的格式
|
||||
register_default_normalizers()
|
||||
convertible_formats: list[str] = []
|
||||
@@ -501,7 +497,7 @@ async def list_models(
|
||||
|
||||
# 获取可用格式(包括可转换的格式)
|
||||
global_conversion_enabled = _is_format_conversion_enabled(db)
|
||||
candidate_formats = _get_convertible_formats(api_format, global_conversion_enabled)
|
||||
candidate_formats = _get_convertible_formats(api_format)
|
||||
candidate_formats, empty_response = _filter_formats_by_restrictions(
|
||||
candidate_formats, restrictions, api_format
|
||||
)
|
||||
@@ -605,7 +601,7 @@ async def retrieve_model(
|
||||
|
||||
# 获取可用格式(包括可转换的格式)
|
||||
global_conversion_enabled = _is_format_conversion_enabled(db)
|
||||
candidate_formats = _get_convertible_formats(api_format, global_conversion_enabled)
|
||||
candidate_formats = _get_convertible_formats(api_format)
|
||||
candidate_formats, _ = _filter_formats_by_restrictions(
|
||||
candidate_formats, restrictions, api_format
|
||||
)
|
||||
@@ -688,7 +684,7 @@ async def list_models_gemini(
|
||||
|
||||
# 获取可用格式(包括可转换的格式)
|
||||
global_conversion_enabled = _is_format_conversion_enabled(db)
|
||||
candidate_formats = _get_convertible_formats(api_format, global_conversion_enabled)
|
||||
candidate_formats = _get_convertible_formats(api_format)
|
||||
candidate_formats, empty_response = _filter_formats_by_restrictions(
|
||||
candidate_formats, restrictions, api_format
|
||||
)
|
||||
@@ -767,7 +763,7 @@ async def get_model_gemini(
|
||||
|
||||
# 获取可用格式(包括可转换的格式)
|
||||
global_conversion_enabled = _is_format_conversion_enabled(db)
|
||||
candidate_formats = _get_convertible_formats(api_format, global_conversion_enabled)
|
||||
candidate_formats = _get_convertible_formats(api_format)
|
||||
candidate_formats, _ = _filter_formats_by_restrictions(
|
||||
candidate_formats, restrictions, api_format
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user