3.31 上传 dm rewrite
This commit is contained in:
@@ -0,0 +1,204 @@
|
||||
"""
|
||||
===================================
|
||||
@Auther:WenZ
|
||||
@Company: BooWay
|
||||
@project:booway_dm
|
||||
===================================
|
||||
"""
|
||||
|
||||
# from langchain_community.chat_models import ChatOpenAI
|
||||
from langchain_openai import ChatOpenAI
|
||||
from langchain_core.output_parsers import StrOutputParser
|
||||
from langchain_core.prompts import ChatPromptTemplate
|
||||
from langchain_core.prompts.prompt import PromptTemplate
|
||||
from langchain_core.output_parsers import JsonOutputParser
|
||||
|
||||
|
||||
# qwen_llm = ChatOpenAI(model='deepseek-qwen2.5-32b',base_url="http://172.20.0.145:9995/v1/",api_key='233',temperature=1)
|
||||
|
||||
# temperature=0.7
|
||||
qwen_llm = ChatOpenAI(
|
||||
openai_api_base="https://api.siliconflow.cn/v1",
|
||||
model_name="Qwen/Qwen2.5-72B-Instruct",
|
||||
# sk-muuqautpcyuowjtgfecbnivqodlhzydtfslqkmwbknawejsx
|
||||
openai_api_key="sk-bbeamiumkouptsrueilgufqqyuumelcsivxwjbdugqwsqhwj",
|
||||
temperature=0.1
|
||||
)
|
||||
|
||||
deep_v3 = ChatOpenAI(
|
||||
openai_api_base="https://api.siliconflow.cn/v1",
|
||||
model_name="deepseek-ai/DeepSeek-V3",
|
||||
# sk-muuqautpcyuowjtgfecbnivqodlhzydtfslqkmwbknawejsx
|
||||
openai_api_key="sk-bbeamiumkouptsrueilgufqqyuumelcsivxwjbdugqwsqhwj",
|
||||
temperature=0.1
|
||||
)
|
||||
|
||||
# 软件名重写
|
||||
def software_name_rewrite():
|
||||
PromptTemplate = """
|
||||
你要根据用户问题,将软件全称替换上去
|
||||
|
||||
用户问题:{query}
|
||||
软件全称:{software_name}
|
||||
|
||||
仅做替换,不做其他任何改变
|
||||
"""
|
||||
|
||||
Prompt = ChatPromptTemplate.from_template(PromptTemplate)
|
||||
|
||||
Chain = Prompt | qwen_llm | StrOutputParser()
|
||||
|
||||
return Chain
|
||||
|
||||
def retrieval_rewrite():
|
||||
PromptTemplate = """
|
||||
你是一名专业的问答优化助手,任务是基于多维度信息,对用户的问题进行重构以提升知识库的检索准确率。
|
||||
|
||||
请严格按以下步骤重构用户问题:
|
||||
# 第一步,了解输入信息
|
||||
- 原始问题:{query}
|
||||
- 5W2H类型:{question_type}
|
||||
- 意图识别:{intention_type}
|
||||
- 检索到的关键词:{keywords}
|
||||
|
||||
# 第二步,关键词与意图匹配校验
|
||||
- 判断检索到的关键词是否与用户意图匹配。
|
||||
- 若不匹配,直接输出:知识库无检索内容,待更新
|
||||
- 若匹配,进入下一步
|
||||
|
||||
# 步骤三:问题专业术语转换
|
||||
- 以检索到的关键词替换口语化表述,明确专业术语,形成专业、自然的重构问题。
|
||||
|
||||
# 示例:
|
||||
1. 示例1:关键词匹配
|
||||
输入:
|
||||
原始问题:【西藏造价软件Z1】如何把西藏老定额工程升级成西藏Z1的新定额工程
|
||||
5W2H类型:how
|
||||
意图识别:操作指导
|
||||
检索到的关键词:【'老版本定额升级', '批量设置定额'】
|
||||
输出:
|
||||
【西藏造价软件Z1】如何进行【老版本定额升级】?
|
||||
|
||||
2. 示例2:关键词不匹配
|
||||
输入:
|
||||
原始问题:【西藏造价软件Z1】软件界面字体太小了怎么办?
|
||||
5W2H类型:how
|
||||
意图识别:界面操作
|
||||
检索到的关键词:【'定额升级', '工程批量导入'】
|
||||
输出:
|
||||
知识库无检索内容,待更新
|
||||
|
||||
# 注意
|
||||
- 现在请严格按照以上流程和格式,处理接下来输入的问题,确保结果的专业性和检索准确性
|
||||
- 不要输出思考过程,仅输出处理结果
|
||||
""".strip()
|
||||
|
||||
Prompt = ChatPromptTemplate.from_template(PromptTemplate)
|
||||
|
||||
Chain = Prompt | qwen_llm | StrOutputParser()
|
||||
|
||||
return Chain
|
||||
|
||||
def to_normal_rewrite():
|
||||
PromptTemplate = """
|
||||
你是一个智能问答重写助手,请将用户提出的问题,重写为结构化、规范表达,符合下列范式:
|
||||
【软件名称】【其他内容】
|
||||
|
||||
请根据以下用户问题进行规范表达:
|
||||
|
||||
用户问题:{query}
|
||||
|
||||
结构化问题:
|
||||
""".strip()
|
||||
|
||||
Prompt = ChatPromptTemplate.from_template(PromptTemplate)
|
||||
|
||||
Chain = Prompt | deep_v3 | StrOutputParser()
|
||||
|
||||
return Chain
|
||||
|
||||
# 查询功能
|
||||
def query_function_rewrite():
|
||||
PromptTemplate = """
|
||||
你是一个智能问答重写助手,请将用户提出的关于“软件功能查询类”的问题,重写为结构化、规范表达,符合下列范式之一:
|
||||
1. 【软件名称】的【功能模块/名词】是做什么的?
|
||||
2. 【软件名称】如何【动作动词】【功能模块/名词】?
|
||||
|
||||
请根据以下用户问题进行规范表达:
|
||||
|
||||
用户问题:{query}
|
||||
|
||||
结构化问题:
|
||||
""".strip()
|
||||
|
||||
Prompt = ChatPromptTemplate.from_template(PromptTemplate)
|
||||
|
||||
Chain = Prompt | deep_v3 | StrOutputParser()
|
||||
|
||||
return Chain
|
||||
|
||||
# 操作指导
|
||||
def operation_guidance_rewrite():
|
||||
PromptTemplate = """
|
||||
你是一个智能问答重写助手,请将用户提出的关于“软件操作指导类”的问题,重写为结构化、规范表达,符合以下范式之一:
|
||||
1. 【软件名称】怎么使用【某功能/工具】?
|
||||
2. 【软件名称】如何【批量操作/处理】【内容类型】?
|
||||
|
||||
请根据以下用户问题进行规范表达:
|
||||
|
||||
用户问题:{query}
|
||||
|
||||
结构化问题:
|
||||
""".strip()
|
||||
|
||||
Prompt = ChatPromptTemplate.from_template(PromptTemplate)
|
||||
|
||||
Chain = Prompt | deep_v3 | StrOutputParser()
|
||||
|
||||
return Chain
|
||||
|
||||
# 故障排查
|
||||
def troubleshooting_rewrite():
|
||||
PromptTemplate = """
|
||||
你是一个智能问答重写助手,请将用户提出的关于“软件故障排查类”的问题,重写为结构化、规范表达,符合以下范式之一:
|
||||
1. 【软件名称】出现【报错信息/故障现象】怎么办?
|
||||
2. 为什么【软件名称】打不开/闪退/安装失败?
|
||||
3. 【软件名称】提示【具体错误】是什么意思?
|
||||
4. 如何修复【软件名称】中的【功能异常】问题?
|
||||
|
||||
请根据以下用户问题进行规范表达:
|
||||
|
||||
用户问题:{query}
|
||||
|
||||
结构化问题:
|
||||
""".strip()
|
||||
|
||||
Prompt = ChatPromptTemplate.from_template(PromptTemplate)
|
||||
|
||||
Chain = Prompt | deep_v3 | StrOutputParser()
|
||||
|
||||
return Chain
|
||||
|
||||
# 下载安装
|
||||
def access_rewrite():
|
||||
PromptTemplate = """
|
||||
你是一个智能问答重写助手,请将用户提出的关于“软件下载与安装类”的问题,重写为结构化、规范表达,符合以下范式之一:
|
||||
1. 怎么下载【软件名称/插件】?
|
||||
2. 【软件名称/插件】怎么下载不了?
|
||||
3. 如何在【操作系统名称】上安装【软件名称】?
|
||||
|
||||
请根据以下用户问题进行规范表达:
|
||||
|
||||
用户问题:{query}
|
||||
|
||||
结构化问题:
|
||||
""".strip()
|
||||
|
||||
Prompt = ChatPromptTemplate.from_template(PromptTemplate)
|
||||
|
||||
Chain = Prompt | deep_v3 | StrOutputParser()
|
||||
|
||||
return Chain
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user