1. 思维链(Chain of Thought, CoT)
原理:
CoT 通过显式引导模型分步骤推理,解决复杂问题。模型会生成中间推理过程,最终输出答案。适用于数学计算、逻辑推理等任务。
实现方案:
- 标准 CoT:直接要求模型逐步思考。
- 自洽性 CoT(Self-Consistent CoT):生成多个推理路径并选择最一致的答案。
- 可编程 CoT:通过代码控制推理步骤。
代码示例(Python + LangChain):
from langchain import PromptTemplate, LLMChain
from langchain.llms import OpenAI
# 定义CoT提示模板
cot_template = PromptTemplate(
input_variables=["question"],
template="""
请逐步思考解决以下问题:
问题:{question}
推理步骤:
1. 第一步:...
2. 第二步:...
...
最终答案:...
"""
)
# 初始化LLM
llm = OpenAI(model_name="gpt-4", temperature=0.3)
# 创建LLMChain
cot_chain = LLMChain(llm=llm, prompt=cot_template)
# 调用
response = cot_chain.run(question="如果3个苹果价格是15元,买7个苹果要多少钱?")
print(response)
应用场景:
- 数学应用题解答(如小学/初中数学)。
- 复杂逻辑推理(如法律案件分析)。
2. 反思机制(Self-Reflection)
原理:
让模型主动评估自身输出的质量,通过多轮迭代优化结果。常见方法包括评分机制、错误检测和重新生成。
实现方案:
- 自我评分:模型对输出进行评分(如1-10分)。
- 迭代优化:基于评分结果重新生成内容。
- 错误检测:模型检查输出中的逻辑漏洞或事实错误。
代码示例(Python + LangChain):
from langchain import LLMChain, PromptTemplate
from langchain.llms import OpenAI
# 定义反思提示模板
reflection_template = PromptTemplate(
input_variables=["content", "criteria"],
template="""
请根据以下标准评估以下内容:
评估标准:{criteria}
内容:{content}
评分(1-10分):...
改进建议:...
"""
)
# 初始化LLM
llm = OpenAI(model_name="gpt-4", temperature=0.3)
# 创建反思链
reflection_chain = LLMChain(llm=llm, prompt=reflection_template)
# 示例内容与评估标准
content = "全球变暖的主要原因是人类活动。"
criteria = "科学准确性、逻辑严谨性、数据支持"
# 调用
response = reflection_chain.run(content=content, criteria=criteria)
print(response)
应用场景:
- 学术论文初稿评估。
- 商业报告质量检查。
3. 提示模板设计(Prompt Templates)
原理:
通过模板化提示词,提高复用性和灵活性。常用工具包括 Jinja2 和 LangChain Template。
实现方案:
- Jinja2 模板:动态插入变量,支持条件判断和循环。
- LangChain Template:与 LangChain 集成,支持复杂提示结构。
代码示例(Jinja2 + Python):
from jinja2 import Template
# 定义模板
template = Template("""
假设你是一位{{ profession }},请{{ task }}。
要求:
1. 使用{{ language }}语言。
2. 输出格式:{{ format }}
""")
# 渲染模板
rendered_prompt = template.render(
profession="数据科学家",
task="解释线性回归的优缺点",
language="中文",
format="Markdown"
)
print(rendered_prompt)
代码示例(LangChain Template):
from langchain import PromptTemplate
# 定义模板
template = PromptTemplate(
input_variables=["role", "task", "format"],
template="""
你是一位{{ role }},请完成以下任务:
任务:{{ task }}
输出格式:{{ format }}
"""
)
# 渲染模板
rendered_prompt = template.format(role="产品经理", task="设计用户调研问卷", format="JSON")
print(rendered_prompt)
应用场景:
- 批量生成个性化提示词。
- 多语言支持(如中英文切换)。
4. 外部工具调用提示设计(Tool Calling Prompt)
原理:
通过提示词调用外部工具(如 API、数据库),扩展模型能力。需明确工具的功能、输入输出格式。
实现方案:
- Function Calling:直接调用 API 或 SDK。
- MCP(Model-Controller-Protocol):通过协议定义工具调用规则。
代码示例(OpenAI Function Calling):
from langchain.agents import initialize_agent, Tool
from langchain.llms import OpenAI
# 定义工具
tools = [
Tool(
name="WeatherAPI",
func=lambda location: f"调用天气API获取{location}的实时天气",
description="获取指定地点的实时天气信息"
)
]
# 初始化代理
agent = initialize_agent(tools, OpenAI(model_name="gpt-4"), agent="zero-shot-react-description")
# 调用
response = agent.run("上海今天的天气如何?")
print(response)
应用场景:
- 数据查询(如天气、股票价格)。
- 业务系统集成(如订单状态查询)。
5. 动态 Prompt 生成
原理:
根据用户输入动态构造 Prompt,提升交互灵活性。常见方法包括意图识别、上下文处理。
实现方案:
- 意图识别:通过 NLP 模型识别用户意图。
- 上下文处理:根据对话历史动态调整 Prompt。
代码示例(意图识别 + 动态 Prompt):
from transformers import pipeline
# 意图分类器
classifier = pipeline("text-classification", model="roberta-base-intent")
user_input = "订单还没到,能加急吗?"
intent = classifier(user_input)[0]["label"] # 输出"物流查询"
# 动态生成 Prompt
prompt_template = {
"物流查询": "请以表格形式列出订单{order_id}的物流节点,突出显示最新状态与预计到达时间",
"退换货": "请提供退换货流程说明,并生成操作指南PDF"
}
# 应用场景
order_id = "123456"
dynamic_prompt = prompt_template[intent].format(order_id=order_id)
print(dynamic_prompt)
应用场景:
- 智能客服(根据用户问题类型生成对应响应)。
- 多轮对话管理(根据上下文调整回复策略)。
网络学习资源清单
书籍与教程
-
LangChain 官方文档
- 网址: https://docs.langchain.com
- 内容:详细讲解如何使用 LangChain 构建提示模板和工具链。
-
OpenAI Cookbook
- 网址: https://github.com/openai/openai-cookbook
- 内容:包含 Prompt Engineering 的实战案例和代码模板。
工具与框架
-
Jinja2 官方文档
- 网址: https://jinja.palletsprojects.com
- 内容:Jinja2 模板引擎的使用指南和高级功能。
-
Transformers 库
- 网址: https://huggingface.co/docs/transformers
- 内容:用于意图识别和动态 Prompt 生成的 NLP 模型。

891

被折叠的 条评论
为什么被折叠?



