调整问题改写提示词,同义词替换遵循严格匹配

This commit is contained in:
2025-07-15 11:30:31 +08:00
parent 82724d206b
commit 35acf6de71
3 changed files with 86 additions and 74 deletions
@@ -18,14 +18,14 @@ import jieba
import time
import threading
from .PromptTemplates import (classification_prompt, query_rewrite_prompt,
from .PromptTemplates import (classification_prompt, query_rewrite_prompt_pro,
extract_nouns_prompt, classification_info,
slot_filling_prompt, step_back_prompt,
follow_up_questions_prompt, hyde_prompt, multi_questions_prompt)
from .Multi_PromptTemplates import (
intent_and_slot_prompt, output_example,
generate_slot_mapping_doc, query_rewrite_prompt_pro,
generate_slot_mapping_doc
)
from .DataModels import (
@@ -7,76 +7,6 @@ Date: 2025-06-13
Description: 多轮对话下意图分类、改写核心提示词
"""
query_rewrite_prompt_pro="""
# 电力造价问答优化工程师(精简版)
**角色**:基于历史对话和术语库重构问题,提升知识库检索准确率。
**最高准则**
1、保持问题核心意图,但允许在指代消除、背景继承下添加隐含功能词。
2、重构后的问题,所有引入的主体背景等均要来源于历史对话、聊天背景,不得凭空捏造未提及的内容。
3、同义词替换:必须是提问中出现了synonymous中的内容,才替换为对应的标准词。不得改变原始意图,否则将导致系统出现灾难性问题
## 核心原则
1. **指代消除 → 当指示代词(""/"")出现时,强制继承历史对话的最新核心主题(如功能或任务),并应用到当前主体。**
2. 背景继承 → 补充历史对话和聊天背景中的隐含信息(包括主题和功能)。
3. 术语规范 → 同义词转标准词并【】标记。提问中出现的同义词(synonymous)替换为标准词(name)
4. 语义保真 → 保持问题核心意图,但允许在指代消除、背景继承下添加隐含功能词。
## 处理流程
### 一、输入解析
- 原始问题(需保留核心语义):
<query> {query} </query>
- 术语库集合(用于同义词转标准词环节):
<keywords>
{keywords}
</keywords>
- 历史对话记录:
<history>
{chat_history}
</history>
- 当前聊天背景:
<conversation_background>
{context}
</conversation_background>
### 二、重构决策树
```mermaid
graph TD
A[输入问题] --> B{{包含指示代词?}}
B -- 是 --> C[提取历史最新主题]
C --> D{{主题是否明确?}}
D -- 是 --> E[继承主题到当前问题]
E --> F[执行重构]
D -- 否 --> F
F --> G[补充缺失背景]
G --> H[同义词替换+【】标记]
H --> I[保留原生专业术语]
B -- 否 --> I
```
### 三、重构优先级
1. **指代消除 → 当指示代词出现时,优先继承历史对话的核心主题(如功能词),并替换当前问题的动词部分。**
2. 背景继承 → 历史对话中确定的背景信息需要保留。
3. 术语处理 → 同义词转标准词 + 【】标记。
4. 同义词转标准词 → 将提问中出现的同义词(synonymous)替换为对应标准词(name)
5. 结构优化 → 保持原问题的5W2H特征,指代消除、背景继承下允许微调意图。
## 输出规范
{output_format}
## 质量自检
- [] **主题是否合理继承?**(当有代词时,历史主题必须注入)
- [] 核心诉求是否保留?
- [] 背景信息是否合理补充?
- [] 术语标记是否完整【】?
- [] 语句是否自然流畅?
- [] 避免补充无关信息
"""
intent_and_slot_prompt = """
# 你是一个专业的电力造价领域智能助手,负责对用户输入进行意图分类识别和关键信息槽位填充。
+84 -2
View File
@@ -55,8 +55,9 @@ classification_info="""【垂直领域分类】:
4. 问题排查类:软件安装下载失败、报错,系统兼容性问题等
【固定话术类包括以下一类】:
1. 规费咨询:所有涉及规费咨询等问题(规费、社保费、公积金费等)
1. 规费咨询:咨询规费(规费、社保费、公积金费等)费用考虑、构成、设置等。才属于该类
规费报表在哪显示-->属于软件功能
规费怎么设置、社保费是多少-->属于规费咨询
【其他】:
1. 其他
@@ -169,6 +170,87 @@ query_rewrite_prompt = """
- [ ] 重构后的问题是否自然流畅?
"""
query_rewrite_prompt_pro="""
# 电力造价问答优化工程师(精简版)
**角色**:基于历史对话和术语库重构问题,提升知识库检索准确率。
**最高准则**
1、保持问题核心意图,但允许在指代消除、背景继承下添加隐含功能词。
2. 所有新增内容必须源于历史对话或聊天背景,禁止捏造。
3. 归一化替换需严格全词匹配:查询中的词必须与术语库同义词完全一致(不区分大小写)。部分匹配(如子字符串)或不匹配,保留原词
禁止部分匹配或子字符串替换。仅当提问中的词 **完全等于** 术语库同义词(大小写不敏感)时方可替换,否则保留原词。
- 错误示例:`文件` ≠ `文件夹路径`(因`文件`是`文件夹路径`的子字符串,禁止替换)。
## 核心原则
1. **指代消除 → 当指示代词(""/"")出现时,强制继承历史对话的最新核心主题(如功能或任务),并应用到当前主体。**
2. 背景继承 → 补充历史对话和聊天背景中的隐含信息(包括主题和功能)。
3. 术语规范 → 归一化标准词并【】标记。提问中出现的同义词(synonymous)替换为标准词(name)
4. 语义保真 → 保持问题核心意图,但允许在指代消除、背景继承下添加隐含功能词。
## 归一化替换规则
1. 必须严格全词匹配同义词(即synonymous全词出现在query中)
“错误示例:
- query:文件 !=> 文件夹路径(‘文件’不全等于‘文件夹路径’,部分匹配不替换)。
- query:费率查询 !=> 精准查询(‘费率查询’不全等于‘关键词查询’,不替换)。
**仅当全词匹配时替换**:如query:直接费率(全词匹配‘直接费率’)==> 固定费率。”
2. 只有当问题中的词与术语库中某一项的同义词列表中的某个词完全相同时,才替换为对应的标准词
## 处理流程
### 一、输入解析
- 原始问题(需保留核心语义):
<query> {query} </query>
- 术语库集合(用于同义词转标准词环节):
<keywords>
{keywords}
</keywords>
- 历史对话记录:
<history>
{chat_history}
</history>
- 当前聊天背景:
<conversation_background>
{context}
</conversation_background>
### 二、重构决策树
```mermaid
graph TD
A[输入问题] --> B{{包含指示代词?}}
B -- 是 --> C[提取历史最新主题]
C --> D{{主题是否明确?}}
D -- 是 --> E[继承主题到当前问题]
E --> F[执行重构]
D -- 否 --> F
F --> G[补充缺失背景]
G --> H[同义词替换+【】标记]
H --> I[保留原生专业术语]
B -- 否 --> I
```
### 三、重构优先级
1. **指代消除 → 当指示代词出现时,优先继承历史对话的核心主题(如功能词),并替换当前问题的动词部分。**
2. 背景继承 → 历史对话中确定的背景信息需要保留。
3. 术语处理 → 同义词转标准词 + 【】标记。
4. 同义词转标准词 → 将提问中出现的同义词(synonymous)替换为对应标准词(name)
5. 结构优化 → 保持原问题的5W2H特征,指代消除、背景继承下允许微调意图。
## 输出规范
{output_format}
## 质量自检
- [] **主题是否合理继承?**(当有代词时,历史主题必须注入)
- [] 核心诉求是否保留?
- [] 背景信息是否合理补充?
- [] 术语标记是否完整【】?
- [] 语句是否自然流畅?
- [] 避免补充无关信息
"""
slot_filling_prompt = """
你是一个专业的电力造价领域问题槽位填充助手。你需要从用户问题中提取关键信息,并填充到对应的数据结构中。