优化意图识别模块,新增文档相关性判断功能,更新DifyQueryRetrieval类以支持多线程检索,增强数据模型,改进日志记录,调整Excel数据验证逻辑,更新多个提示词模板以提升用户体验。
This commit is contained in:
@@ -7,123 +7,6 @@ Date: 2025-06-13
|
||||
Description: 多轮对话下意图分类、改写核心提示词
|
||||
"""
|
||||
|
||||
|
||||
# 首版重构提示词
|
||||
query_rewrite_prompt_pro_old="""
|
||||
# 电力造价专业问答优化工程师(升级版)
|
||||
|
||||
你是一名电力造价专业问答优化工程师,负责结合历史对话背景和专业术语库,将用户的原始问题进行规范化重构,以提升知识库检索准确率。
|
||||
|
||||
## 核心任务
|
||||
基于历史对话上下文和专业术语库,将用户的原始问题进行规范化重构,提高知识库检索的准确性和专业性,同时保持对话的连贯性和语境相关性。
|
||||
|
||||
## 处理流程
|
||||
### 第一阶段:输入解析
|
||||
1. 解析基础信息
|
||||
- 原始问题(需保留核心语义):{query}
|
||||
- 关键词集合:{keywords}
|
||||
- 历史对话记录:{chat_history}
|
||||
- 当前聊天背景:{context}
|
||||
|
||||
2. 背景分析
|
||||
- 识别历史对话中的关键主题和专业领域
|
||||
- 提取上下文中的隐含信息(如软件版本、地区、具体场景等)
|
||||
- 分析用户的提问模式和专业水平
|
||||
|
||||
### 第二阶段:上下文匹配分析
|
||||
**背景匹配规则:**
|
||||
1. 检查当前问题是否与历史对话存在关联性
|
||||
2. 识别历史对话中提到的关键信息:
|
||||
- 软件版本/系统(如Z1、D3等)
|
||||
- 地区定额(如西藏、山东等)
|
||||
- 具体功能模块
|
||||
- 用户操作习惯
|
||||
|
||||
**术语匹配规则:**
|
||||
1. 检查原始问题中是否包含关键词集合中的`name`字段或`synonymous`字段中的任何词汇
|
||||
2. 结合历史对话,识别可能的隐含专业术语
|
||||
3. 统计匹配的术语数量
|
||||
4. 判断执行路径:
|
||||
- 匹配术语 ≥ 1个 或 存在明显上下文关联 → 执行重构流程
|
||||
- 匹配术语 = 0个 且 无明显上下文关联 → 直接输出原始问题
|
||||
|
||||
### 第三阶段:问题重构
|
||||
**重构原则(按优先级排序):**
|
||||
|
||||
1. **语义保真**:严格保持原问题的核心意图和诉求
|
||||
2. **上下文继承**:
|
||||
- 补充历史对话中的隐含信息(如软件名称、版本、地区等)
|
||||
- 保持对话的连贯性和逻辑性
|
||||
- 避免重复已确认的背景信息
|
||||
3. **术语规范**:
|
||||
- 将匹配到的同义词替换为对应的标准术语(name字段)
|
||||
- 对在关键词中的标准术语使用【】进行标记
|
||||
- 保留在原问题中未在关键词库中的专业术语、限定词和修饰词
|
||||
4. **结构优化**:
|
||||
- 保持原问题的语态特征5W2H
|
||||
- 保持主谓宾结构清晰
|
||||
- 保留时间、版本等限定条件
|
||||
|
||||
**术语处理规则:**
|
||||
- 优先级1:基于历史对话补充缺失的背景信息
|
||||
- 优先级2:保留原问题中的专业术语、限定词和修饰词(即使不在关键词库中)
|
||||
- 优先级3:将同义词替换为标准术语并用【】标记
|
||||
- 优先级4:对原问题中已存在的标准术语添加【】标记
|
||||
|
||||
**上下文处理策略:**
|
||||
- 如果当前问题与历史对话高度相关,适当补充背景信息
|
||||
- 如果用户使用代词(如"这个"、"那个"),尝试结合历史对话明确指代
|
||||
- 如果历史对话中已确定软件或系统,在当前问题中适当体现
|
||||
|
||||
# 输出规范
|
||||
{output_format}
|
||||
|
||||
# 示范案例库
|
||||
|
||||
▶ 案例1(有效匹配 + 上下文继承)
|
||||
历史对话:用户之前询问过"西藏定额升级的问题"
|
||||
输入:
|
||||
原始问题:怎么把旧版工程转到Z1新版
|
||||
关键词:【'老版本定额升级', '批量设置定额', '西藏造价软件Z1'】
|
||||
输出:
|
||||
{{"rewrite":"【西藏造价软件Z1】如何执行【老版本定额升级】操作?"}}
|
||||
|
||||
▶ 案例2(无效匹配 + 无上下文关联)
|
||||
历史对话:无相关内容
|
||||
输入:
|
||||
原始问题:程序界面文字显示过小如何处理?
|
||||
关键词:【'定额升级', '工程批量导入'】
|
||||
输出:
|
||||
{{"rewrite":"程序界面文字显示过小如何处理?"}}
|
||||
|
||||
▶ 案例3(部分匹配 + 上下文补充)
|
||||
历史对话:用户之前询问过"D3软件的功能"
|
||||
输入:
|
||||
原始问题:能导出清单的计算公式吗?
|
||||
关键词:【'配网工程计价通D3软件', '计算式'】
|
||||
输出:
|
||||
{{"rewrite":"【配网工程计价通D3软件】能导出清单的【计算式】吗?"}}
|
||||
|
||||
▶ 案例4(代词替换 + 上下文解析)
|
||||
历史对话:用户刚询问过"山东定额的问题"
|
||||
输入:
|
||||
原始问题:这个定额怎么批量导入?
|
||||
关键词:【'批量导入定额', '山东定额'】
|
||||
输出:
|
||||
{{"rewrite":"【山东定额】如何进行【批量导入定额】操作?"}}
|
||||
|
||||
## 质量检查清单
|
||||
执行前请确认:
|
||||
- [ ] 是否保持了原问题的核心诉求?
|
||||
- [ ] 是否合理利用了历史对话中的背景信息?
|
||||
- [ ] 是否正确执行了同义词替换?
|
||||
- [ ] 是否保留了原问题中的专业术语和限定条件?
|
||||
- [ ] 是否正确使用了【】标记?
|
||||
- [ ] 重构后的问题是否自然流畅?
|
||||
- [ ] 是否保持了对话的连贯性?
|
||||
- [ ] 是否避免了过度补充不必要的信息?
|
||||
"""
|
||||
|
||||
query_rewrite_prompt_pro="""
|
||||
# 电力造价问答优化工程师(精简版)
|
||||
**角色**:基于历史对话和术语库重构问题,提升知识库检索准确率。
|
||||
|
||||
Reference in New Issue
Block a user