From 016e6e06eefc69898e07beb4e484a962647f7e61 Mon Sep 17 00:00:00 2001 From: yangtb2024 Date: Mon, 17 Mar 2025 13:56:01 +0800 Subject: [PATCH 1/3] Filter out vision-based Gemini models from model list --- app/services/model_service.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/services/model_service.py b/app/services/model_service.py index 9befb9d..7a88115 100644 --- a/app/services/model_service.py +++ b/app/services/model_service.py @@ -11,6 +11,7 @@ class ModelService: self.model_search = model_search self.model_image = model_image self.base_url = "https://generativelanguage.googleapis.com/v1beta" + self.filtered_models = ["gemini-1.0-pro-vision-latest", "gemini-pro-vision"] def get_gemini_models(self, api_key: str) -> Optional[Dict[str, Any]]: url = f"{self.base_url}/models?key={api_key}" @@ -43,6 +44,11 @@ class ModelService: for model in gemini_models.get("models", []): model_id = model["name"].split("/")[-1] + + if model_id in self.filtered_models: + logger.info(f"Filtered out model: {model_id}") + continue + openai_model = { "id": model_id, "object": "model", @@ -81,4 +87,4 @@ class ModelService: model = model[:-6] return model in settings.MODEL_IMAGE - return True \ No newline at end of file + return True From 851bb9c09bdde524eca0053ee76b7f1610459cee Mon Sep 17 00:00:00 2001 From: yangtb2024 Date: Tue, 18 Mar 2025 14:47:58 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=B0=86=20filtered=5Fmodels=20=E4=BB=8E?= =?UTF-8?q?=E7=A1=AC=E7=BC=96=E7=A0=81=E6=94=B9=E4=B8=BA=E5=8F=AF=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 在 config.py 中添加 FILTERED_MODELS 配置项 2. 在 .env.example 中添加 FILTERED_MODELS 示例 3. 修改 model_service.py 以使用配置的过滤模型列表 4. 优化模型过滤逻辑 --- .env.example | 1 + app/core/config.py | 1 + app/services/model_service.py | 17 +++++++++++------ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/.env.example b/.env.example index f65e95d..080d9b4 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,7 @@ API_KEYS=["AIzaSyxxxxxxxxxxxxxxxxxxx","AIzaSyxxxxxxxxxxxxxxxxxxx"] ALLOWED_TOKENS=["sk-123456"] # AUTH_TOKEN=sk-123456 +FILTERED_MODELS=["gemini-1.0-pro-vision-latest", "gemini-pro-vision"] MODEL_SEARCH=["gemini-2.0-flash-exp","gemini-2.0-pro-exp"] MODEL_IMAGE=["gemini-2.0-flash-exp"] TOOLS_CODE_EXECUTION_ENABLED=false diff --git a/app/core/config.py b/app/core/config.py index 816cb14..05031b2 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -8,6 +8,7 @@ class Settings(BaseSettings): BASE_URL: str = "https://generativelanguage.googleapis.com/v1beta" MODEL_SEARCH: List[str] = ["gemini-2.0-flash-exp"] MODEL_IMAGE: List[str] = ["gemini-2.0-flash-exp"] + FILTERED_MODELS: List[str] = ["gemini-1.0-pro-vision-latest", "gemini-pro-vision"] TOOLS_CODE_EXECUTION_ENABLED: bool = False SHOW_SEARCH_LINK: bool = True SHOW_THINKING_PROCESS: bool = True diff --git a/app/services/model_service.py b/app/services/model_service.py index 7a88115..6dc7573 100644 --- a/app/services/model_service.py +++ b/app/services/model_service.py @@ -11,7 +11,7 @@ class ModelService: self.model_search = model_search self.model_image = model_image self.base_url = "https://generativelanguage.googleapis.com/v1beta" - self.filtered_models = ["gemini-1.0-pro-vision-latest", "gemini-pro-vision"] + self.filtered_models = settings.FILTERED_MODELS def get_gemini_models(self, api_key: str) -> Optional[Dict[str, Any]]: url = f"{self.base_url}/models?key={api_key}" @@ -20,6 +20,16 @@ class ModelService: response = requests.get(url) if response.status_code == 200: gemini_models = response.json() + + filtered_models_list = [] + for model in gemini_models.get("models", []): + model_id = model["name"].split("/")[-1] + if model_id not in self.filtered_models: + filtered_models_list.append(model) + else: + logger.info(f"Filtered out model: {model_id}") + + gemini_models["models"] = filtered_models_list return gemini_models else: logger.error(f"Error: {response.status_code}") @@ -44,11 +54,6 @@ class ModelService: for model in gemini_models.get("models", []): model_id = model["name"].split("/")[-1] - - if model_id in self.filtered_models: - logger.info(f"Filtered out model: {model_id}") - continue - openai_model = { "id": model_id, "object": "model", From df88492113c3e044c8af875548211d3b126272d8 Mon Sep 17 00:00:00 2001 From: yangtb2024 Date: Tue, 18 Mar 2025 15:21:29 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=B0=86chat-bison-001=E3=80=81text-bison-?= =?UTF-8?q?001=E5=92=8Cembedding-gecko-001=E6=B7=BB=E5=8A=A0=E5=88=B0FILTE?= =?UTF-8?q?RED=5FMODELS=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 2 +- app/core/config.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 080d9b4..357eb69 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,7 @@ API_KEYS=["AIzaSyxxxxxxxxxxxxxxxxxxx","AIzaSyxxxxxxxxxxxxxxxxxxx"] ALLOWED_TOKENS=["sk-123456"] # AUTH_TOKEN=sk-123456 -FILTERED_MODELS=["gemini-1.0-pro-vision-latest", "gemini-pro-vision"] +FILTERED_MODELS=["gemini-1.0-pro-vision-latest", "gemini-pro-vision", "chat-bison-001", "text-bison-001", "embedding-gecko-001"] MODEL_SEARCH=["gemini-2.0-flash-exp","gemini-2.0-pro-exp"] MODEL_IMAGE=["gemini-2.0-flash-exp"] TOOLS_CODE_EXECUTION_ENABLED=false diff --git a/app/core/config.py b/app/core/config.py index 05031b2..daa9cdf 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -8,7 +8,7 @@ class Settings(BaseSettings): BASE_URL: str = "https://generativelanguage.googleapis.com/v1beta" MODEL_SEARCH: List[str] = ["gemini-2.0-flash-exp"] MODEL_IMAGE: List[str] = ["gemini-2.0-flash-exp"] - FILTERED_MODELS: List[str] = ["gemini-1.0-pro-vision-latest", "gemini-pro-vision"] + FILTERED_MODELS: List[str] = ["gemini-1.0-pro-vision-latest", "gemini-pro-vision", "chat-bison-001", "text-bison-001", "embedding-gecko-001"] TOOLS_CODE_EXECUTION_ENABLED: bool = False SHOW_SEARCH_LINK: bool = True SHOW_THINKING_PROCESS: bool = True