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 = """