diff --git a/pkg/config/migrations/m005_deepseek_cfg_completion.py b/pkg/config/migrations/m005_deepseek_cfg_completion.py new file mode 100644 index 00000000..bd8aa2ee --- /dev/null +++ b/pkg/config/migrations/m005_deepseek_cfg_completion.py @@ -0,0 +1,30 @@ +from __future__ import annotations + +from .. import migration + + +@migration.migration_class("deepseek-config-completion", 5) +class DeepseekConfigCompletionMigration(migration.Migration): + """OpenAI配置迁移 + """ + + async def need_migrate(self) -> bool: + """判断当前环境是否需要运行此迁移 + """ + return 'deepseek-chat-completions' not in self.ap.provider_cfg.data['requester'] \ + or 'deepseek' not in self.ap.provider_cfg.data['keys'] + + async def run(self): + """执行迁移 + """ + if 'deepseek-chat-completions' not in self.ap.provider_cfg.data['requester']: + self.ap.provider_cfg.data['requester']['deepseek-chat-completions'] = { + 'base-url': 'https://api.deepseek.com', + 'args': {}, + 'timeout': 120, + } + + if 'deepseek' not in self.ap.provider_cfg.data['keys']: + self.ap.provider_cfg.data['keys']['deepseek'] = [] + + await self.ap.provider_cfg.dump_config() \ No newline at end of file diff --git a/pkg/core/stages/migrate.py b/pkg/core/stages/migrate.py index 1146ab67..cef3b42d 100644 --- a/pkg/core/stages/migrate.py +++ b/pkg/core/stages/migrate.py @@ -5,6 +5,7 @@ import importlib from .. import stage, app from ...config import migration from ...config.migrations import m001_sensitive_word_migration, m002_openai_config_migration, m003_anthropic_requester_cfg_completion, m004_moonshot_cfg_completion +from ...config.migrations import m005_deepseek_cfg_completion @stage.stage_class("MigrationStage") diff --git a/pkg/provider/modelmgr/apis/deepseekchatcmpl.py b/pkg/provider/modelmgr/apis/deepseekchatcmpl.py new file mode 100644 index 00000000..dd8ddc6d --- /dev/null +++ b/pkg/provider/modelmgr/apis/deepseekchatcmpl.py @@ -0,0 +1,15 @@ +from __future__ import annotations + +from ....core import app + +from . import chatcmpl +from .. import api + + +@api.requester_class("deepseek-chat-completions") +class DeepseekChatCompletions(chatcmpl.OpenAIChatCompletions): + """Deepseek ChatCompletion API 请求器""" + + def __init__(self, ap: app.Application): + self.requester_cfg = ap.provider_cfg.data['requester']['deepseek-chat-completions'] + self.ap = ap \ No newline at end of file diff --git a/pkg/provider/modelmgr/modelmgr.py b/pkg/provider/modelmgr/modelmgr.py index 3ec432fe..3fffd784 100644 --- a/pkg/provider/modelmgr/modelmgr.py +++ b/pkg/provider/modelmgr/modelmgr.py @@ -6,7 +6,7 @@ from . import entities from ...core import app from . import token, api -from .apis import chatcmpl, anthropicmsgs, moonshotchatcmpl +from .apis import chatcmpl, anthropicmsgs, moonshotchatcmpl, deepseekchatcmpl FETCH_MODEL_LIST_URL = "https://api.qchatgpt.rockchin.top/api/v2/fetch/model_list" diff --git a/templates/metadata/llm-models.json b/templates/metadata/llm-models.json index db10313f..9787223e 100644 --- a/templates/metadata/llm-models.json +++ b/templates/metadata/llm-models.json @@ -59,6 +59,11 @@ "name": "moonshot-v1-128k", "requester": "moonshot-chat-completions", "token_mgr": "moonshot" + }, + { + "name": "deepseek-chat", + "requester": "deepseek-chat-completions", + "token_mgr": "deepseek" } ] } \ No newline at end of file diff --git a/templates/pipeline.json b/templates/pipeline.json index 7284fdaf..975c88b3 100644 --- a/templates/pipeline.json +++ b/templates/pipeline.json @@ -25,7 +25,6 @@ "api-key": "", "api-secret": "" }, - "submit-messages-tokens": 3072, "rate-limit": { "strategy": "drop", "algo": "fixwin", diff --git a/templates/provider.json b/templates/provider.json index ffe1e70c..e537156b 100644 --- a/templates/provider.json +++ b/templates/provider.json @@ -9,6 +9,9 @@ ], "moonshot": [ "sk-1234567890" + ], + "deepseek": [ + "sk-1234567890" ] }, "requester": { @@ -28,6 +31,11 @@ "base-url": "https://api.moonshot.cn/v1", "args": {}, "timeout": 120 + }, + "deepseek-chat-completions": { + "base-url": "https://api.deepseek.com", + "args": {}, + "timeout": 120 } }, "model": "gpt-3.5-turbo",