Files
QueryRewrite/rag2_0/intent_recognition/PromptTemplates.py
T

182 lines
6.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
File: PromptTemplates.py
Author: oyyz
Date: 2025-05-13
Description: 提示词模板
"""
extract_nouns_prompt="""
【智能关键词提取助手】
请根据用户问题自动识别核心关键词,并按照以下规则输出:
1. 只输出最终关键词列表,不要解释说明
2. 关键词提取范围包括但不限于以下内容:
- 软件相关:软件名称/功能模块/操作步骤/报错提示/扩展名后缀名
- 造价专业:费用类型/计算标准/行业规范/文件
- 电力工程:项目类型/设备型号/工程阶段
3. 自动展开缩写(如将'导excel'转为'导入Excel'
4. 严格基于用户问题提取关键词,不要输出与用户问题无关的关键词
5. 不要擅自揣摩、猜测、推断关键词,不要修改关键的信息(如:粘贴excel->导入excel)
三、输出格式:
{output_format}
四、用户问题:
{content}
"""
classification_info="""【垂直领域分类】:
1. 软件问题 -- 指涉及软件使用、功能询问、软件故障排查等方面的提问或请求。
2. 业务问题 -- 指涉及电力造价领域专业知识、造价费用计算等电力造价业务知识
3. 安装下载注册 -- 指涉及软件(或插件)安装下载、注册、激活等操作类问题。
4. 其他 -- 指与软件或电力造价专业无关的日常对话、问候、感慨、情绪表达等。
【软件问题包括以下两类】:
1. 软件功能:询问软件功能的使用、功能操作(调整)、功能位置、如何设置、如何转换等
2. 故障排查:软件运行异常、软件报错、软件显示错误等
【业务问题包括以下两类】:
1. 专业咨询:涉及电力造价规范、工程计价规则问题、行业标准解读等
2. 数据问题:涉及电力造价费用、造价指标的计算或构成等
【安装下载注册包括以下三类】:
1. 后缀名咨询:所有涉及文件扩展名的使用场景、软件关联等问题,包括但不限于:询问文件是否由特定软件打开、扩展名与软件的匹配关系、扩展名含义及关联等
示例:
"这个文件用配网软件能打开吗?(隐含扩展名关联)",
".bphq18 是什么类型的文件?",
"用哪个软件打开.BDY3文件?"
2. 软件锁类:询问软件锁信息、锁注册号查询、许可证查询、锁激活问题等软件锁相关问题
3. 安装下载类:安装下载咨询、组件(插件)选择、环境配置等
4. 问题排查类:软件安装下载失败、报错,系统兼容性问题等
【其他】:
1. 其他"""
classification_prompt="""
用户正在使用电力造价软件或想询问电力造价领域相关知识,你需要根据用户的输入内容,将其归类为以下垂直领域之一:
{classification_info}
【用户输入】:
{user_input}
【输出格式要求】:
{output_format}
【示例】
用户输入1: 技改T1怎样新建工程
输出1:
{{
"vertical_classification":"软件咨询",
"sub_classification":"软件功能"
}}
"""
query_rewrite_prompt = """
# 电力造价专业问答优化工程师
你是一名电力造价专业问答优化工程师,负责通过专业关键词集合替换原始问题中的非专业表述以提升知识库检索准确率。
## 核心任务
将用户的原始问题结合专业术语库进行规范化重构,提高知识库检索的准确性和专业性。
## 处理流程
### 第一阶段:输入解析
1. 解析基础信息
- 原始问题(需保留核心语义){query}
- 关键词集合:{keywords}
### 第二阶段:匹配分析
**匹配规则:**
1. 检查原始问题中是否包含关键词集合中的`name`字段或`synonymous`字段中的任何词汇
2. 统计匹配的术语数量
3. 判断执行路径:
- 匹配术语 ≥ 1个 → 执行重构流程
- 匹配术语 = 0个 → 直接输出原始问题
### 第三阶段:问题重构
**重构原则(按优先级排序):**
1. **语义保真**:严格保持原问题的核心意图和诉求
2. **术语规范**
- 将匹配到的同义词替换为对应的标准术语(name字段)
- 对在关键词中的标准术语使用【】进行标记
- 保留在原问题中未在关键词库中的专业术语、限定词和修饰词
3. **结构优化**
- 保持原问题的语态特征5W2H
- 保持主谓宾结构清晰
- 保留时间、版本等限定条件
**术语处理规则:**
- 优先级1:保留原问题中的专业术语、限定词和修饰词(即使不在关键词库中)
- 优先级2:将同义词替换为标准术语并用【】标记
- 优先级3:对原问题中已存在的标准术语添加【】标记
# 输出规范
{output_format}
# 示范案例库
▶ 案例1(有效匹配)
输入:
原始问题:怎么把旧版西藏定额工程转到Z1新版
关键词:【'老版本定额升级', '批量设置定额', '西藏造价软件Z1'】
输出:
{{"rewrite":"【西藏造价软件Z1】如何执行【老版本定额升级】操作?"}}
▶ 案例2(无效匹配)
输入:
原始问题:程序界面文字显示过小如何处理?
关键词:【'定额升级', '工程批量导入'】
输出:
{{"rewrite":"程序界面文字显示过小如何处理?"}}
▶ 案例3(部分匹配,但保留修饰限定词)
输入:
原始问题:"配网软件D3能导出清单的计算公式吗?
关键词:【'配网工程计价通D3软件', '计算式'】
输出(保留限定修饰词"清单")
{{"rewrite":"【配网工程计价通D3软件】能导出清单的【计算式】吗?"}}
## 质量检查清单
执行前请确认:
- [ ] 是否保持了原问题的核心诉求?
- [ ] 是否正确执行了同义词替换?
- [ ] 是否保留了原问题中的专业术语和限定条件?
- [ ] 是否正确使用了【】标记?
- [ ] 重构后的问题是否自然流畅?
"""
slot_filling_prompt = """
你是一个专业的电力造价领域问题槽位填充助手。你需要从用户问题中提取关键信息,并填充到对应的数据结构中。
【用户问题】
{query}
【问题分类】
垂直领域分类: {vertical_classification}
子分类: {sub_classification}
【输出格式】
{output_format}
【任务要求】
1. 仔细分析用户问题,从中提取所有可能的槽位信息
2. 对于必填槽位,必须尽力从问题中提取,如果确实无法提取则留空
3. 对于选填槽位,如果能从问题中提取则填写,否则留空
4. 只输出符合格式的JSON数据,不要有任何额外的解释
【示例】
用户问题: "我的西藏Z1软件,新建工程报错:找不到许可证,怎么解决?"
分类: 软件问题/故障排查
输出:
{{
"software_name": "西藏电力工程计价通Z1软件",
"function_name": "新建工程",
"error_message": "报错:找不到许可证",
"software_version": null,
"os_version": null,
"reproduction_steps": "新建工程"
}}
"""