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 00000000..289f0d16 Binary files /dev/null and b/web/src/assets/providers/default.png differ diff --git a/web/src/assets/providers/openrouterai.png b/web/src/assets/providers/openrouterai.png new file mode 100644 index 00000000..6138661c Binary files /dev/null and b/web/src/assets/providers/openrouterai.png differ 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 }}