From aa50f24c4f6a7fc25ef27ad823fb9845f189841b Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Thu, 10 Apr 2025 11:42:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Eopenrouter=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/models/__init__.py | 40 ++++++++++------------ src/static/models.yaml | 19 ++++++++++ web/src/assets/providers/default.png | Bin 0 -> 17066 bytes web/src/assets/providers/openrouterai.png | Bin 0 -> 6032 bytes web/src/utils/modelIcon.js | 7 ++-- web/src/views/SettingView.vue | 4 +-- 6 files changed, 44 insertions(+), 26 deletions(-) create mode 100644 web/src/assets/providers/default.png create mode 100644 web/src/assets/providers/openrouterai.png diff --git a/src/models/__init__.py b/src/models/__init__.py index b796a52b..19867377 100644 --- a/src/models/__init__.py +++ b/src/models/__init__.py @@ -1,5 +1,5 @@ import os - +import traceback from src import config from src.utils.logging_config import logger from src.models.chat_model import OpenAIBase @@ -14,33 +14,23 @@ def select_model(model_provider=None, model_name=None): logger.info(f"Selecting model from `{model_provider}` with `{model_name}`") - if model_provider in [ - "deepseek", - "ark", - "siliconflow", - "zhipu", - "lingyiwanwu", - "together.ai", - ]: - return OpenAIBase( - api_key=os.getenv(model_info["env"][0]), - base_url=model_info["base_url"], - model_name=model_name, - ) - elif model_provider == "qianfan": + if model_provider is None: + raise ValueError("Model provider not specified, please modify `model_provider` in `src/config/base.yaml`") + + if model_provider == "qianfan": from src.models.chat_model import Qianfan return Qianfan(model_name) - elif model_provider == "dashscope": + if model_provider == "dashscope": from src.models.chat_model import DashScope return DashScope(model_name) - elif model_provider == "openai": + if model_provider == "openai": from src.models.chat_model import OpenModel return OpenModel(model_name) - elif model_provider == "custom": + if model_provider == "custom": model_info = next((x for x in config.custom_models if x["custom_id"] == model_name), None) if model_info is None: raise ValueError(f"Model {model_name} not found in custom models") @@ -48,7 +38,13 @@ def select_model(model_provider=None, model_name=None): from src.models.chat_model import CustomModel return CustomModel(model_info) - elif model_provider is None: - raise ValueError("Model provider not specified, please modify `model_provider` in `src/config/base.yaml`") - else: - raise ValueError(f"Model provider {model_provider} not supported") + # 其他模型,默认使用OpenAIBase + try: + model = OpenAIBase( + api_key=os.getenv(model_info["env"][0]), + base_url=model_info["base_url"], + model_name=model_name, + ) + return model + except Exception as e: + raise ValueError(f"Model provider {model_provider} load failed, {e} \n {traceback.format_exc()}") diff --git a/src/static/models.yaml b/src/static/models.yaml index 9a41c7a9..037c6d46 100644 --- a/src/static/models.yaml +++ b/src/static/models.yaml @@ -99,6 +99,7 @@ MODEL_NAMES: - doubao-1-5-pro-32k-250115 - 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 @@ -109,6 +110,24 @@ MODEL_NAMES: models: - yi-lightning + openrouter: + name: OpenRouter + url: https://openrouter.ai/models + base_url: https://openrouter.ai/api/v1 + default: openai/gpt-4o + env: + - OPENROUTER_API_KEY + models: + - openai/gpt-4o + - openai/gpt-4o-mini + - google/gemini-2.5-pro-exp-03-25:free + - x-ai/grok-3-beta + - meta-llama/llama-4-maverick + - meta-llama/llama-4-maverick:free + - anthropic/claude-3.7-sonnet + - anthropic/claude-3.7-sonnet:thinking + + EMBED_MODEL_INFO: local/BAAI/bge-m3: name: BAAI/bge-m3 diff --git a/web/src/assets/providers/default.png b/web/src/assets/providers/default.png new file mode 100644 index 0000000000000000000000000000000000000000..289f0d16296b4f08988662accee44e6a83eed577 GIT binary patch literal 17066 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 literal 0 HcmV?d00001 diff --git a/web/src/utils/modelIcon.js b/web/src/utils/modelIcon.js index b0b0e35f..f9aea808 100644 --- a/web/src/utils/modelIcon.js +++ b/web/src/utils/modelIcon.js @@ -7,7 +7,8 @@ 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' export const modelIcons = { openai: openaiIcon, @@ -19,5 +20,7 @@ export const modelIcons = { siliconflow: siliconflowIcon, ark: arkIcon, 'together.ai': togetherIcon, - lingyiwanwu: lingyiwanwuIcon + lingyiwanwu: lingyiwanwuIcon, + openrouter: openrouterIcon, + default: defaultIcon // 添加默认图标 } diff --git a/web/src/views/SettingView.vue b/web/src/views/SettingView.vue index c8ba40df..defc1628 100644 --- a/web/src/views/SettingView.vue +++ b/web/src/views/SettingView.vue @@ -162,7 +162,7 @@
- 模型图标 + 模型图标

{{ modelNames[item].name }}

@@ -203,7 +203,7 @@
- 模型图标 + 模型图标

{{ modelNames[item].name }}