Prompt Engineering 高阶技巧总结

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)

应用场景

  • 智能客服(根据用户问题类型生成对应响应)。
  • 多轮对话管理(根据上下文调整回复策略)。

网络学习资源清单

书籍与教程
  1. LangChain 官方文档

  2. OpenAI Cookbook

工具与框架
  1. Jinja2 官方文档

  2. Transformers 库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值