2.9 KiB
按模型追加全局提示词
管理员打开「设置 → 模型追加提示词」,选择模型,填写提示词并开启开关,点击「保存此模型设置」。每个模型独立保存,关闭开关会保留文本。
设置按模型配置的 name 精确匹配,而不是显示名或供应商模型名。所有用户通过平台统一模型入口调用该模型时,都会在系统提示词末尾追加该文本;切换到其他模型不会携带它。未设置的模型保持原有行为。
设置保存在运行目录的 system_settings.json 的 model_prompt_suffixes 中,默认空、默认关闭。每次模型请求读取最新设置,已经创建的模型实例也能在下一次请求使用新值,无需重启。不会改写用户问题或持久化聊天记录,也不会修改原有智能体提示词文件。提示词用于引导回答方式,无法保证上游模型一定回答。
接口与实现
GET /api/system-settings/model-prompt-suffixes:读取全部设置,仅管理员。PUT /api/system-settings/model-prompt-suffixes/{model_name}:保存单个模型,正文为{ "enabled": true, "prompt": "自定义要求" },仅管理员;模型名需 URL 编码,支持包含/的名称。文本最多 20000 字符,启用时不可为空。- 统一入口
deerflow.models.factory.create_chat_model保留原供应商模型的工具绑定与流式能力;OpenAI 兼容请求在传输适配提示词处理后追加,支持 Chat Completions 和 Responses;其他适配器在输入转换与批量生成入口追加。 - 外部系统自行调用模型、绕过此统一入口的调用不受该设置控制。
- 回归测试:
packages/harness/tests/test_model_prompt_suffix.py,覆盖权限、持久化、模型隔离、重复追加防护、原始消息不变、即时更新、同步/异步/流式/批量调用及工具绑定。
普通问答与智能体问答的末尾顺序验证
两种页面均传递当前输入框的 model_name。Lead Agent 按「请求选择 → 智能体默认 → 系统默认」解析实际模型,然后调用同一 create_chat_model。普通问答使用通用模板,智能体问答使用其 SOUL.md 模板;主题、知识库范围、项目上下文及运行时中间件继续组装提示词。追加设置在模型请求层处理,因此位于这些内容之后。
回归测试运行两种 Lead Agent 分支的真实 LangGraph 图、模型工厂与 OpenAI 请求序列化,用模拟 HTTP 接口捕获最终请求,覆盖普通/智能体、默认/目标/其他模型、同步响应/流式响应共 12 种组合。测试注入后置系统要求和检索上下文,断言最终系统文本以管理员提示词结尾且只出现一次,用户问题保持原样。另验证 text_bridge、buffered_gateway、artifact_renderer 三种文件传输适配提示词均位于管理员提示词之前。测试不访问真实上游模型。