# 导入 PromptTemplate 类,用于创建 Prompt 模板
# 0.x版本导包
# from langchain.prompts import PromptTemplate
# 1.x版本导包
from langchain_core.prompts import PromptTemplate
# 定义 RAGPrompts 类,用于管理所有 Prompt 模板
class RAGPrompts:
# 定义 RAG 提示模板
# @staticmethod
# def rag_prompt():
# # 创建并返回 PromptTemplate 对象
# return PromptTemplate(
# template="""
# 你是一个智能助手,帮助用户回答问题。
# 如果提供了上下文,请基于上下文回答;如果没有上下文,请直接根据你的知识回答。
# 如果答案来源于检索到的文档,请在回答中说明。
#
# 上下文: {context}
# 问题: {question}
#
# 如果无法回答,请回复:“信息不足,无法回答,请联系人工客服,电话:{phone}。”
# 回答:
# """,
# # 定义输入变量
# input_variables=["context", "question", "phone"],
# )
# 优化后再添加:如果添加了历史消息
@staticmethod
def rag_prompt():
return PromptTemplate(
template="""
你是一个智能助手,负责帮助用户回答问题。请按照以下步骤处理:
1. **分析问题和上下文**:
- 基于提供的上下文(如果有)和你的知识回答问题。
- 如果答案来源于检索到的文档,请在回答中明确说明,例如:“根据提供的文档,……”。
2. **评估对话历史**:
- 检查对话历史是否与当前问题相关(例如,是否涉及相同的话题、实体或问题背景)。
- 如果对话历史与问题相关,请结合历史信息生成更准确的回答。
- 如果对话历史无关(例如,仅包含问候或不相关的内容),忽略历史,仅基于上下文和问题回答。
3. **生成回答**:
- 提供清晰、准确的回答,避免无关信息。
- 如果上下文和历史消息均不足以回答问题,请回复:“信息不足,无法回答,请联系人工客服,电话:{phone}。”
**上下文**: {context}
**对话历史**:
{history}
**问题**: {question}
**回答**:
""",
input_variables=["context", "history", "question", "phone"],
)
# 定义假设问题生成的 Prompt 模板
@staticmethod
def hyde_prompt():
# 创建并返回 PromptTemplate 对象
return PromptTemplate(
template="""
假设你是用户,想了解以下问题,请生成一个简短的假设答案:
问题: {query}
假设答案:
""",
# 定义输入变量
input_variables=["query"],
)
# 定义子查询生成的 Prompt 模板
@staticmethod
def subquery_prompt():
# 创建并返回 PromptTemplate 对象
return PromptTemplate(
template="""
将以下复杂查询分解为多个简单子查询,每行一个子查询:
查询: {query}
子查询:
""",
# 定义输入变量
input_variables=["query"],
)
# 定义回溯问题生成的 Prompt 模板
@staticmethod
def backtracking_prompt():
# 创建并返回 PromptTemplate 对象
return PromptTemplate(
template="""
将以下复杂查询简化为一个更简单的问题:
查询: {query}
简化问题:
""",
# 定义输入变量
input_variables=["query"],
)