From c90e2e0b26de511fd99d1cbaecb261005fba74ec Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Tue, 24 Jun 2025 00:14:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=A7=BB=E9=99=A4=E9=9B=B6=E4=B8=80?= =?UTF-8?q?=E4=B8=87=E7=89=A9=E6=A8=A1=E5=9E=8B=E6=94=AF=E6=8C=81=E5=B9=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E6=96=87=E6=A1=A3=E5=92=8C?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 从 README.md 和 .env.template 中移除 LINGYIWANWU_API_KEY 相关内容。 - 更新 select_model 函数以支持 dashscope 和 deepseek 模型提供者的逻辑。 - 修改模型配置文件,更新 dashscope 的默认模型和相关信息。 - 移除与零一万物相关的图标和配置,简化模型选择逻辑。 --- README.md | 1 - src/.env.template | 1 - src/config/__init__.py | 6 +++--- src/models/__init__.py | 9 +++----- src/models/chat_model.py | 44 -------------------------------------- src/static/models.yaml | 27 +++++------------------ web/src/utils/modelIcon.js | 2 -- 7 files changed, 11 insertions(+), 79 deletions(-) diff --git a/README.md b/README.md index 05601dd0..179b4509 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,6 @@ docker logs <容器名称> # 例如:docker logs api-dev | `zhipu`(智谱清言) | `glm-4-flash` | `ZHIPUAI_API_KEY` | | `dashscope`(阿里) | `qwen-max-latest` | `DASHSCOPE_API_KEY` | | `together.ai` | `meta-llama/Llama-3.3-70B-Instruct-Turbo-Free` | `TOGETHER_API_KEY` | -| `lingyiwanwu`(零一)| `yi-lightning` | `LINGYIWANWU_API_KEY` | | `openrouter` | `openai/gpt-4o` | `OPENROUTER_API_KEY` | #### 添加新模型供应商 diff --git a/src/.env.template b/src/.env.template index 60214d02..b685c22f 100644 --- a/src/.env.template +++ b/src/.env.template @@ -8,7 +8,6 @@ ZHIPUAI_API_KEY=5f41e******71c7bac.UWkl******Sw5Lb DASHSCOPE_API_KEY=sk-787bb2******f4ae859b5 DEEPSEEK_API_KEY=sk-5cab6298******b339f7 ARK_API_KEY=a022e8d4-******-cb0766bf22e7 -LINGYIWANWU_API_KEY=bfedf8a******a7d60719 TOGETHER_API_KEY=tgp_v1_fPjW******irD6zesAn4 diff --git a/src/config/__init__.py b/src/config/__init__.py index c4e51b50..3f6891f5 100644 --- a/src/config/__init__.py +++ b/src/config/__init__.py @@ -127,10 +127,10 @@ class Config(SimpleConfig): if self.model_dir: if os.path.exists(self.model_dir): - logger.debug(f"MODEL_DIR ({self.model_dir}) 下面的文件夹: {os.listdir(self.model_dir)}") + logger.debug(f"The model directory ({self.model_dir}) contains the following folders: {os.listdir(self.model_dir)}") else: - logger.warning(f"提醒:MODEL_DIR ({self.model_dir}) 不存在,如果未配置,请忽略,如果配置了,请检查是否配置正确;" - "比如 docker-compose 文件中的映射") + logger.warning(f"Warning: The model directory ({self.model_dir}) does not exist. If not configured, please ignore it. If configured, please check if the configuration is correct;" + "For example, the mapping in the docker-compose file") # 检查模型提供商是否存在 diff --git a/src/models/__init__.py b/src/models/__init__.py index 7615816e..885ee059 100644 --- a/src/models/__init__.py +++ b/src/models/__init__.py @@ -1,10 +1,10 @@ import os import traceback + from src import config from src.utils.logging_config import logger from src.models.chat_model import OpenAIBase - def select_model(model_provider=None, model_name=None): """根据模型提供者选择模型""" model_provider = model_provider or config.model_provider @@ -22,15 +22,11 @@ def select_model(model_provider=None, model_name=None): from src.models.chat_model import Qianfan return Qianfan(model_name) - if model_provider == "dashscope": - from src.models.chat_model import DashScope - return DashScope(model_name) - if model_provider == "openai": from src.models.chat_model import OpenModel return OpenModel(model_name) - if model_provider == "deepseek": + if model_provider == "deepseek" or model_provider == "dashscope": from langchain_deepseek import ChatDeepSeek return OpenAIBase( api_key=os.getenv(model_info["env"][0]), @@ -40,6 +36,7 @@ def select_model(model_provider=None, model_name=None): model=model_name, api_key=os.getenv(model_info["env"][0]), base_url=model_info["base_url"], + api_base=model_info["base_url"], ) ) diff --git a/src/models/chat_model.py b/src/models/chat_model.py index 5fca3fdb..d8e9f28a 100644 --- a/src/models/chat_model.py +++ b/src/models/chat_model.py @@ -126,49 +126,5 @@ class Qianfan(OpenAIBase): return GeneralResponse(response["body"]["result"]) - -class DashScope(OpenAIBase): - - def __init__(self, model_name="qwen-max-latest") -> None: - self.model_name = model_name - self.api_key= os.getenv("DASHSCOPE_API_KEY") - - def predict(self, message, stream=False): - if isinstance(message, str): - messages=[{"role": "user", "content": message}] - else: - messages = message - - if stream: - return self._stream_response(messages) - else: - return self._get_response(messages) - - def _stream_response(self, messages): - import dashscope - response = dashscope.Generation.call( - api_key=self.api_key, - model=self.model_name, - messages=messages, - result_format='message', - stream=True, - ) - for chunk in response: - message = chunk.output.choices[0].message - message.is_full = False - yield chunk.output.choices[0].message - - def _get_response(self, messages): - import dashscope - response = dashscope.Generation.call( - api_key=self.api_key, - model=self.model_name, - messages=messages, - result_format='message', - stream=False, - ) - return response.output.choices[0].message - - if __name__ == "__main__": pass diff --git a/src/static/models.yaml b/src/static/models.yaml index 219e0bf5..b0b0d960 100644 --- a/src/static/models.yaml +++ b/src/static/models.yaml @@ -53,12 +53,8 @@ MODEL_NAMES: models: - Pro/deepseek-ai/DeepSeek-R1 - Pro/deepseek-ai/DeepSeek-V3 - - deepseek-ai/DeepSeek-R1 - - deepseek-ai/DeepSeek-V3 - - deepseek-ai/DeepSeek-R1-Distill-Qwen-7B - - Qwen/Qwen2.5-72B-Instruct - - Qwen/Qwen2.5-7B-Instruct - Qwen/QwQ-32B + together.ai: name: Together.ai url: https://api.together.ai/models @@ -75,17 +71,14 @@ MODEL_NAMES: dashscope: name: 阿里百炼 (DashScope) url: https://bailian.console.aliyun.com/?switchAgent=10226727&productCode=p_efm#/model-market - default: qwen2.5-72b-instruct + default: qwen3-235b-a22b + base_url: https://dashscope.aliyuncs.com/compatible-mode/v1 env: - DASHSCOPE_API_KEY models: - qwen-max-latest - - qwen2.5-72b-instruct - - qwen2.5-32b-instruct - - qwen2.5-7b-instruct - - qwen2.5-0.5b-instruct - - qwq-plus-latest - - qwq-32b + - qwen3-235b-a22b + - qwen3-32b ark: name: 豆包(Ark) @@ -99,16 +92,6 @@ MODEL_NAMES: - doubao-1-5-lite-32k-250115 - deepseek-r1-250120 - lingyiwanwu: - name: 零一万物 - url: https://platform.lingyiwanwu.com/docs#%E6%A8%A1%E5%9E%8B%E4%B8%8E%E8%AE%A1%E8%B4%B9 - base_url: https://api.lingyiwanwu.com/v1 - default: yi-lightning - env: - - LINGYIWANWU_API_KEY - models: - - yi-lightning - openrouter: name: OpenRouter url: https://openrouter.ai/models diff --git a/web/src/utils/modelIcon.js b/web/src/utils/modelIcon.js index f9aea808..a35fceed 100644 --- a/web/src/utils/modelIcon.js +++ b/web/src/utils/modelIcon.js @@ -6,7 +6,6 @@ import deepseekIcon from '@/assets/providers/deepseek.png' import zhipuIcon from '@/assets/providers/zhipuai.png' import siliconflowIcon from '@/assets/providers/siliconflow.png' import arkIcon from '@/assets/providers/ark.png' -import lingyiwanwuIcon from '@/assets/providers/lingyiwanwu.png' import openrouterIcon from '@/assets/providers/openrouterai.png' import defaultIcon from '@/assets/providers/default.png' @@ -20,7 +19,6 @@ export const modelIcons = { siliconflow: siliconflowIcon, ark: arkIcon, 'together.ai': togetherIcon, - lingyiwanwu: lingyiwanwuIcon, openrouter: openrouterIcon, default: defaultIcon // 添加默认图标 }