diff --git a/pkg/core/migrations/m029_dashscope_app_api_config.py b/pkg/core/migrations/m029_dashscope_app_api_config.py new file mode 100644 index 00000000..3a069bac --- /dev/null +++ b/pkg/core/migrations/m029_dashscope_app_api_config.py @@ -0,0 +1,33 @@ +from __future__ import annotations + +from .. import migration + + +@migration.migration_class("dashscope-app-api-config", 29) +class DashscopeAppAPICfgMigration(migration.Migration): + """迁移""" + + async def need_migrate(self) -> bool: + """判断当前环境是否需要运行此迁移""" + return 'dashscope-app-api' not in self.ap.provider_cfg.data + + async def run(self): + """执行迁移""" + self.ap.provider_cfg.data['dashscope-app-api'] = { + "app-type": "agent", + "api-key": "sk-1234567890", + "agent": { + "app-id": "Your_app_id", + "references_quote": "参考资料来自:" + }, + "workflow": { + "app-id": "Your_app_id", + "references_quote": "参考资料来自:", + "biz_params": { + "city": "北京", + "date": "2023-08-10" + } + } + } + + await self.ap.provider_cfg.dump_config() diff --git a/pkg/core/stages/migrate.py b/pkg/core/stages/migrate.py index a1983f0b..7be46b4c 100644 --- a/pkg/core/stages/migrate.py +++ b/pkg/core/stages/migrate.py @@ -11,6 +11,8 @@ from ..migrations import m015_gitee_ai_config, m016_dify_service_api, m017_dify_ from ..migrations import m020_wecom_config, m021_lark_config, m022_lmstudio_config, m023_siliconflow_config, m024_discord_config, m025_gewechat_config from ..migrations import m026_qqofficial_config, m027_wx_official_account_config +from ..migrations import m029_dashscope_app_api_config + @stage.stage_class("MigrationStage") class MigrationStage(stage.BootingStage): """迁移阶段 diff --git a/pkg/provider/runnermgr.py b/pkg/provider/runnermgr.py index 4cd38c04..52e1d8d2 100644 --- a/pkg/provider/runnermgr.py +++ b/pkg/provider/runnermgr.py @@ -23,6 +23,8 @@ class RunnerManager: self.using_runner = r(self.ap) await self.using_runner.initialize() break + else: + raise ValueError(f"未找到请求运行器: {self.ap.provider_cfg.data['runner']}") def get_runner(self) -> runner.RequestRunner: return self.using_runner diff --git a/pkg/provider/runners/dashscopeapi.py b/pkg/provider/runners/dashscopeapi.py index 8a6aef9d..0201f35d 100644 --- a/pkg/provider/runners/dashscopeapi.py +++ b/pkg/provider/runners/dashscopeapi.py @@ -20,7 +20,7 @@ class DashscopeAPIError(Exception): super().__init__(self.message) -@runner.runner_class("dashscope-service-api") +@runner.runner_class("dashscope-app-api") class DashScopeAPIRunner(runner.RequestRunner): "阿里云百炼DashsscopeAPI对话请求器" @@ -34,7 +34,7 @@ class DashScopeAPIRunner(runner.RequestRunner): async def initialize(self): """初始化""" valid_app_types = ["agent", "workflow"] - self.app_type = self.ap.provider_cfg.data["dashscope-service-api"]["app-type"] + self.app_type = self.ap.provider_cfg.data["dashscope-app-api"]["app-type"] #检查配置文件中使用的应用类型是否支持 if (self.app_type not in valid_app_types): raise DashscopeAPIError( @@ -42,10 +42,10 @@ class DashScopeAPIRunner(runner.RequestRunner): ) #初始化Dashscope 参数配置 - self.app_id = self.ap.provider_cfg.data["dashscope-service-api"][self.app_type]["app-id"] - self.api_key = self.ap.provider_cfg.data["dashscope-service-api"][self.app_type]["api-key"] - self.references_quote = self.ap.provider_cfg.data["dashscope-service-api"][self.app_type]["references_quote"] - self.biz_params = self.ap.provider_cfg.data["dashscope-service-api"]["workflow"]["biz_params"] + self.app_id = self.ap.provider_cfg.data["dashscope-app-api"][self.app_type]["app-id"] + self.api_key = self.ap.provider_cfg.data["dashscope-app-api"]["api-key"] + self.references_quote = self.ap.provider_cfg.data["dashscope-app-api"][self.app_type]["references_quote"] + self.biz_params = self.ap.provider_cfg.data["dashscope-app-api"]["workflow"]["biz_params"] def _replace_references(self, text, references_dict): """阿里云百炼平台的自定义应用支持资料引用,此函数可以将引用标签替换为参考资料""" @@ -222,15 +222,15 @@ class DashScopeAPIRunner(runner.RequestRunner): self, query: core_entities.Query ) -> typing.AsyncGenerator[llm_entities.Message, None]: """运行""" - if self.ap.provider_cfg.data["dashscope-service-api"]["app-type"] == "agent": + if self.ap.provider_cfg.data["dashscope-app-api"]["app-type"] == "agent": async for msg in self._agent_messages(query): yield msg - elif self.ap.provider_cfg.data["dashscope-service-api"]["app-type"] == "workflow": + elif self.ap.provider_cfg.data["dashscope-app-api"]["app-type"] == "workflow": async for msg in self._workflow_messages(query): yield msg else: raise DashscopeAPIError( - f"不支持的 Dashscope 应用类型: {self.ap.provider_cfg.data['dashscope-service-api']['app-type']}" + f"不支持的 Dashscope 应用类型: {self.ap.provider_cfg.data['dashscope-app-api']['app-type']}" ) diff --git a/templates/metadata/llm-models.json b/templates/metadata/llm-models.json index 88757e66..b5c29cf3 100644 --- a/templates/metadata/llm-models.json +++ b/templates/metadata/llm-models.json @@ -211,11 +211,6 @@ "requester": "zhipuai-chat-completions", "token_mgr": "zhipuai", "vision_supported": true - }, - { - "name": "your-dashscope-app-id", - "requester": "dashscope-chat-applications", - "token_mgr": "dashscope", } ] } \ No newline at end of file diff --git a/templates/provider.json b/templates/provider.json index 13044f1e..e1eb2e9c 100644 --- a/templates/provider.json +++ b/templates/provider.json @@ -104,21 +104,20 @@ "timeout": 120 } }, - "dashscope-service-api": { + "dashscope-app-api": { + "app-type": "agent", + "api-key": "sk-1234567890", "agent": { - "api-key": "sk-1234567890", "app-id": "Your_app_id", "references_quote": "参考资料来自:" }, - "app-type": "agent", "workflow": { - "api-key": "sk-1234567890", "app-id": "Your_app_id", "references_quote": "参考资料来自:", "biz_params": { - "city": "北京", - "date": "2023-08-10" - } + "city": "北京", + "date": "2023-08-10" + } } } } \ No newline at end of file diff --git a/templates/schema/provider.json b/templates/schema/provider.json index bd2084b8..b4a72253 100644 --- a/templates/schema/provider.json +++ b/templates/schema/provider.json @@ -397,6 +397,59 @@ } } } + }, + "dashscope-app-api": { + "type": "object", + "title": "阿里百炼平台自建应用 API 配置", + "properties": { + "app-type": { + "type": "string", + "title": "应用类型", + "description": "支持 workflow 和 agent,workflow:智能体编排;agent:普通智能体;请填写下方对应的应用类型 API 参数", + "enum": ["workflow", "agent"], + "default": "agent" + }, + "api-key": { + "type": "string", + "title": "API 密钥" + }, + "agent": { + "type": "object", + "title": "Agent API 参数", + "properties": { + "app-id": { + "type": "string", + "title": "应用 ID" + }, + "references_quote": { + "type": "string", + "title": "参考资料引用", + "description": "设置参考资料引用,用于从 Dashscope App API 结束节点返回的 JSON 数据中提取引用内容", + "default": "参考资料来自:" + } + } + }, + "workflow": { + "type": "object", + "title": "工作流 API 参数", + "properties": { + "app-id": { + "type": "string", + "title": "应用 ID" + }, + "references_quote": { + "type": "string", + "title": "参考资料引用", + "default": "参考资料来自:" + }, + "biz_params": { + "type": "object", + "title": "传入参数", + "default": {} + } + } + } + } } } } \ No newline at end of file