From 2b9638e7d34f1e5dda5d012532cc6b6de958cc44 Mon Sep 17 00:00:00 2001 From: Timebomb2018 <18868801967@163.com> Date: Thu, 29 Jan 2026 18:06:32 +0800 Subject: [PATCH] fix(model): bug fix --- api/app/controllers/model_controller.py | 11 +++++++---- api/app/services/model_service.py | 16 ++++++++++------ 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/api/app/controllers/model_controller.py b/api/app/controllers/model_controller.py index d76f0b1d..83753744 100644 --- a/api/app/controllers/model_controller.py +++ b/api/app/controllers/model_controller.py @@ -31,7 +31,8 @@ def get_model_types(): @router.get("/provider", response_model=ApiResponse) def get_model_providers(): - return success(msg="获取模型提供商成功", data=list(ModelProvider)) + providers = [p for p in ModelProvider if p != ModelProvider.COMPOSITE] + return success(msg="获取模型提供商成功", data=providers) @router.get("/strategy", response_model=ApiResponse) def get_model_strategies(): @@ -151,7 +152,7 @@ def get_model_plaza_list( type: Optional[ModelType] = Query(None, description="模型类型"), provider: Optional[ModelProvider] = Query(None, description="供应商"), is_official: Optional[bool] = Query(None, description="是否官方模型"), - is_deprecated: Optional[bool] = Query(False, description="是否弃用"), + is_deprecated: Optional[bool] = Query(None, description="是否弃用"), search: Optional[str] = Query(None, description="搜索关键词"), db: Session = Depends(get_db), current_user: User = Depends(get_current_user) @@ -467,11 +468,13 @@ async def create_model_api_key_by_provider( priority=api_key_data.priority, model_config_ids=model_config_ids ) - created_keys = await ModelApiKeyService.create_api_key_by_provider(db=db, data=create_data) + created_keys, failed_models = await ModelApiKeyService.create_api_key_by_provider(db=db, data=create_data) api_logger.info(f"API Key创建成功: 关联{len(created_keys)}个模型") # result_list = [model_schema.ModelApiKey.model_validate(key) for key in created_keys] - return success(data=f"成功为 {len(created_keys)} 个模型创建API Key", msg=f"成功为 {len(created_keys)} 个模型创建API Key") + result = "API Key已存在" if len(created_keys) == 0 and len(failed_models) == 0 else \ + f"成功为 {len(created_keys)} 个模型创建API Key, 失败模型列表{failed_models}" + return success(data=result, msg=f"成功为 {len(created_keys)} 个模型创建API Key") except Exception as e: api_logger.error(f"创建API Key失败: {str(e)}") raise diff --git a/api/app/services/model_service.py b/api/app/services/model_service.py index ceb9cd70..904821c1 100644 --- a/api/app/services/model_service.py +++ b/api/app/services/model_service.py @@ -457,9 +457,11 @@ class ModelApiKeyService: return ModelApiKeyRepository.get_by_model_config(db, model_config_id, is_active) @staticmethod - async def create_api_key_by_provider(db: Session, data: model_schema.ModelApiKeyCreateByProvider) -> List[ModelApiKey]: + async def create_api_key_by_provider(db: Session, data: model_schema.ModelApiKeyCreateByProvider) -> tuple[ + list[Any], list[Any]]: """根据provider为多个ModelConfig创建API Key""" created_keys = [] + failed_models = [] # 记录验证失败的模型 for model_config_id in data.model_config_ids: model_config = ModelConfigRepository.get_by_id(db, model_config_id) @@ -505,10 +507,12 @@ class ModelApiKeyService: test_message="Hello" ) if not validation_result["valid"]: - raise BusinessException( - f"模型配置验证失败: {validation_result['error']}", - BizCode.INVALID_PARAMETER - ) + # 记录验证失败的模型,但不抛出异常 + failed_models.append({ + "model_name": model_name, + "error": validation_result["error"] + }) + continue # 创建API Key api_key_data = ModelApiKeyCreate( @@ -530,7 +534,7 @@ class ModelApiKeyService: for key in created_keys: db.refresh(key) - return created_keys + return created_keys, failed_models @staticmethod async def create_api_key(db: Session, api_key_data: ModelApiKeyCreate) -> ModelApiKey: