From b06a84c05967243d5893e91b70b82335de789375 Mon Sep 17 00:00:00 2001 From: ouyangyouzhang Date: Mon, 14 Jul 2025 09:46:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0.gitignore=E4=BB=A5=E5=BF=BD?= =?UTF-8?q?=E7=95=A5=E6=9F=A5=E8=AF=A2=E6=97=A5=E5=BF=97=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E6=84=8F=E5=9B=BE=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E6=96=B0=E5=A2=9E=E9=94=81=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=92=A8=E8=AF=A2=E5=A4=84=E7=90=86=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E8=B0=83=E6=95=B4=E5=90=8E=E9=80=80=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E7=9A=84=E8=BF=94=E5=9B=9E=E7=BB=93=E6=9E=84=E4=BB=A5?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=9B=BA=E5=AE=9A=E8=AF=9D=E6=9C=AF=E7=B1=BB?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + rag2_0/demo/intent_recognition_example.py | 5 +-- rag2_0/dify/intent_recognition_api.py | 4 +-- .../intent_recognition/IntentRecognition.py | 33 +++++++++++++++---- rag2_0/intent_recognition/PromptTemplates.py | 28 +++++++++++++--- 5 files changed, 56 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 3606cd9..da56a35 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ data/excel/*.xlsx rag2_0/demo/ProfessionalTermAnalyzer.py data/logs/* rag2_0/dify/Test.py +data/query_logs/* diff --git a/rag2_0/demo/intent_recognition_example.py b/rag2_0/demo/intent_recognition_example.py index d141c8c..6255248 100755 --- a/rag2_0/demo/intent_recognition_example.py +++ b/rag2_0/demo/intent_recognition_example.py @@ -200,7 +200,8 @@ class QueryRewriteProcessor: conversation_context=conversation_context, chat_history=chat_history, previous_slots=previous_slots, - enable_query_expansion=True)) + enable_query_expansion=True, + use_jieba=True)) # 提取分类信息 classification = result["classification"] @@ -440,7 +441,7 @@ def main(): for idx, query in enumerate(examples): if query.strip() == "": continue - query="储能C1软件如何新建工程?" + query="811619150828能看一下这个锁是16的马" conversation_context="当前使用软件:配网计价通D3软件" # 在调试模式下使用完整的参数 print(json.dumps(processor.process_query( diff --git a/rag2_0/dify/intent_recognition_api.py b/rag2_0/dify/intent_recognition_api.py index b955bac..b193ad3 100755 --- a/rag2_0/dify/intent_recognition_api.py +++ b/rag2_0/dify/intent_recognition_api.py @@ -51,7 +51,7 @@ class QueryExpandResponse(BaseModel): all: List[str] = Field(default_factory=list) step_back: Dict[str, Any] = Field(default_factory=Dict) follow_up: Dict[str, Any] = Field(default_factory=Dict) - hyde: Dict[str, Any] = Field(default_factory=Dict) + # hyde: Dict[str, Any] = Field(default_factory=Dict) multi_questions: Dict[str, Any] = Field(default_factory=Dict) # 定义响应模型 @@ -150,7 +150,7 @@ async def intent_recognize(request: IntentRecognizeRequest): all=result["query_expand"]["all"], step_back=result["query_expand"]["step_back"], follow_up=result["query_expand"]["follow_up"], - hyde=result["query_expand"]["hyde"], + # hyde=result["query_expand"]["hyde"], multi_questions=result["query_expand"]["multi_questions"] ) ) diff --git a/rag2_0/intent_recognition/IntentRecognition.py b/rag2_0/intent_recognition/IntentRecognition.py index e337b63..55b507b 100755 --- a/rag2_0/intent_recognition/IntentRecognition.py +++ b/rag2_0/intent_recognition/IntentRecognition.py @@ -378,6 +378,18 @@ class AsyncIntentRecognizer: return bool(matched_suffixes), matched_suffixes + def _process_lock_related_query(self, query: str) -> str: + """ + 特殊处理锁相关咨询 + """ + pattern = r'(? FollowUpQuestions: """ diff --git a/rag2_0/intent_recognition/PromptTemplates.py b/rag2_0/intent_recognition/PromptTemplates.py index 26d2609..2c21525 100755 --- a/rag2_0/intent_recognition/PromptTemplates.py +++ b/rag2_0/intent_recognition/PromptTemplates.py @@ -31,7 +31,8 @@ classification_info="""【垂直领域分类】: 1. 软件问题 -- 指涉及软件使用、功能询问、软件故障排查等方面的提问或请求。 2. 业务问题 -- 指涉及电力造价领域专业知识、造价费用计算等电力造价业务知识 3. 安装下载注册 -- 指涉及软件(或插件)安装下载、注册、激活等操作类问题。 -4. 其他 -- 指与软件或电力造价专业无关的日常对话、问候、感慨、情绪表达等。 +4. 固定话术类 -- 指涉及需要固定话术回答的问题,如:规费咨询 +5. 其他 -- 指与软件或电力造价专业无关的日常对话、问候、感慨、情绪表达等。 【软件问题包括以下两类】: 1. 软件功能:询问软件功能的使用、功能操作(调整)、功能位置、如何设置、如何转换等 @@ -49,11 +50,19 @@ classification_info="""【垂直领域分类】: "用哪个软件打开.BDY3文件?", "BDD3是什么" 2. 软件锁类:询问软件锁信息、锁注册号查询、许可证查询、锁激活问题等软件锁相关问题 +形如: 8116 开头连续的12位数字 或者 形如 xx-xxxxxx 的数字格式 的内容为锁的注册号,提问出现对应内容时,归类为软件锁类 3. 安装下载类:安装下载咨询、组件(插件)选择、环境配置、安装包下载、政策文件(规范文件)下载等 4. 问题排查类:软件安装下载失败、报错,系统兼容性问题等 +【固定话术类包括以下一类】: +1. 规费咨询:所有涉及规费咨询等问题(规费、社保费、公积金费等) + 【其他】: -1. 其他""" +1. 其他 + +分类优先级: + 固定话术类 > 软件问题 、 业务问题 、 安装下载注册 > 其他 +""" classification_prompt=""" 用户正在使用电力造价软件或想询问电力造价领域相关知识,你需要根据用户的输入内容集合历史对话(如果存在),将其归类为以下垂直领域之一: @@ -228,10 +237,21 @@ step_back_prompt = """ ## 示例 原始问题: "配网D3软件2023版本如何在Windows 11系统上导入单位工程量清单?" -后退问题: ["配网D3软件如何导入工程量清单?", "如何导入单位工程量清单?"] +后退问题: +{{ + "original_query": "配网D3软件2023版本如何在Windows 11系统上导入单位工程量清单?", + "can_use_back_prompt": True, + "step_back_query": ["配网D3软件如何导入工程量清单?", "如何导入单位工程量清单?"] +}} 原始问题: "技改T1软件中的某个设备更换后,如何在系统中更新对应的定额?" -后退问题: ["技改T1软件中如何更新设备对应的定额?", "如何更新设备对应的定额?"] +后退问题: +{{ + "original_query": "技改T1软件中的某个设备更换后,如何在系统中更新对应的定额?", + "can_use_back_prompt": True, + "step_back_query": ["技改T1软件中如何更新设备对应的定额?", "如何更新设备对应的定额?"] +}} + """ follow_up_questions_prompt = """