问题描述
在项目的「提示词管理」界面中修改了"生成评估数据集(单选题)"的自定义prompt后,系统生成评估题目时仍然使用默认prompt,自定义prompt无法生效。
桌面设备(请完善以下信息)
- 操作系统:Linux(Ubuntu 24.04)
- 浏览器:谷歌浏览器(Chrome)
- Easy Dataset 版本:1.7.1
复现步骤
重现该问题的操作步骤:
- 进入项目设置 → 「提示词管理」页面。
- 找到「模型评估」分类下的「生成评估数据集(单选题)」。
- 点击编辑,修改自定义prompt内容。
- 返回「文本分割」页面,对某个文本块生成评估题目。
- 查看生成的题目,发现使用的是默认prompt而非自定义prompt。
预期结果
生成评估题目时应该使用用户在「提示词管理」中设置的自定义prompt内容。
其他相关信息
通过调试发现,问题根源在于 promptType 字段不一致:
lib/llm/prompts/evalQuestion.js 中定义的 promptType 为 'evalSingleChoice'
lib/db/custom-prompts.js 的 getPromptTemplates() 函数中,所有评估题目的 type 字段都被错误地硬编码为 'evalQuestion'
- 这导致数据库查询时
promptType 不匹配,无法找到自定义prompt
此问题影响所有评估题目类型:
- 判断题 (evalTrueFalse)
- 单选题 (evalSingleChoice)
- 多选题 (evalMultipleChoice)
- 短答案题 (evalShortAnswer)
- 开放性问题 (evalOpenEnded)
修复方案:将 lib/db/custom-prompts.js 中的 type 字段改为正确值,并更新现有数据库记录。
修复方案参考:
1. 修复代码(永久修复)
文件: lib/db/custom-prompts.js
修改内容: 将评估题目类型的 type 字段改为正确的值:
- type: 'evalQuestion'
+ type: 'evalTrueFalse' // 判断题
+ type: 'evalSingleChoice' // 单选题
+ type: 'evalMultipleChoice' // 多选题
+ type: 'evalShortAnswer' // 短答案题
+ type: 'evalOpenEnded' // 开放性问题
2. 修复现有数据库记录(临时修复)
对于已存在的自定义prompt记录,需要更新 promptType 字段:
UPDATE CustomPrompts
SET promptType = 'evalTrueFalse'
WHERE promptType = 'evalQuestion'
AND promptKey LIKE 'EVAL_TRUE_FALSE_PROMPT%';
UPDATE CustomPrompts
SET promptType = 'evalSingleChoice'
WHERE promptType = 'evalQuestion'
AND promptKey LIKE 'EVAL_SINGLE_CHOICE_PROMPT%';
UPDATE CustomPrompts
SET promptType = 'evalMultipleChoice'
WHERE promptType = 'evalQuestion'
AND promptKey LIKE 'EVAL_MULTIPLE_CHOICE_PROMPT%';
UPDATE CustomPrompts
SET promptType = 'evalShortAnswer'
WHERE promptType = 'evalQuestion'
AND promptKey LIKE 'EVAL_SHORT_ANSWER_PROMPT%';
UPDATE CustomPrompts
SET promptType = 'evalOpenEnded'
WHERE promptType = 'evalQuestion'
AND promptKey LIKE 'EVAL_OPEN_ENDED_PROMPT%';
另外希望提供一个后期debug的开关,例如添加以下调试功能:
-
调试日志保存: lib/util/debugLogger.js
- 自动将prompt和LLM响应保存到
_debug/ 文件夹
-
调试输出: lib/llm/common/prompt-loader.js
- 添加详细的console.log用于追踪prompt加载过程
非常感谢这个项目的工作。
问题描述
在项目的「提示词管理」界面中修改了"生成评估数据集(单选题)"的自定义prompt后,系统生成评估题目时仍然使用默认prompt,自定义prompt无法生效。
桌面设备(请完善以下信息)
复现步骤
重现该问题的操作步骤:
预期结果
生成评估题目时应该使用用户在「提示词管理」中设置的自定义prompt内容。
其他相关信息
通过调试发现,问题根源在于
promptType字段不一致:lib/llm/prompts/evalQuestion.js中定义的promptType为'evalSingleChoice'lib/db/custom-prompts.js的getPromptTemplates()函数中,所有评估题目的type字段都被错误地硬编码为'evalQuestion'promptType不匹配,无法找到自定义prompt此问题影响所有评估题目类型:
修复方案:将
lib/db/custom-prompts.js中的type字段改为正确值,并更新现有数据库记录。修复方案参考:
1. 修复代码(永久修复)
文件:
lib/db/custom-prompts.js修改内容: 将评估题目类型的
type字段改为正确的值:2. 修复现有数据库记录(临时修复)
对于已存在的自定义prompt记录,需要更新
promptType字段:另外希望提供一个后期debug的开关,例如添加以下调试功能:
调试日志保存:
lib/util/debugLogger.js_debug/文件夹调试输出:
lib/llm/common/prompt-loader.js非常感谢这个项目的工作。