Prompt Engineering 高级技巧:从零到精通


Prompt Engineering 高级技巧:从零到精通

Prompt Engineering 基础回顾

核心原则

  1. 清晰明确:指令清晰无歧义
  2. 提供上下文:足够的背景信息
  3. 角色设定:为 AI 分配角色
  4. 任务拆解:复杂任务分步骤

高级技巧

1. 思维链(Chain of Thought)

用户问题:一个农场有 100 只鸡和 50 只兔子,卖掉 30 只鸡后,还剩多少只脚? 请一步步思考: 1. 计算初始脚的总数 2. 计算卖出后的鸡的数量 3. 计算兔子的脚数 4. 相加得到最终答案 答案:...

适用场景

  • 数学问题
  • 逻辑推理
  • 复杂计算

2. 少样本学习(Few-shot Learning)

示例 1: 输入:Java 输出:Java 是一门面向对象的编程语言,由 Sun 公司开发。 示例 2: 输入:Python 输出:Python 是一门解释型、高级编程语言,以简洁易读著称。 现在请分析: 输入:Go 语言 输出:(请按上述格式)

3. 自我反思与修正

请按以下步骤回答我的问题: 步骤 1:给出初步答案 步骤 2:自我审查(检查是否有错误或遗漏) 步骤 3:修正完善(根据审查结果改进答案) 问题:解释什么是机器学习

框架化方法

CO-STAR 框架

背景(Context):我正在开发一个电商网站 目标(Objective):设计一个推荐系统 风格(Style):技术文档格式,包含代码示例 语调(Tone):专业、清晰 受众(Audience):有 Python 经验的开发者 响应格式(Response):Markdown 格式,包含代码块 请根据以上要求设计推荐系统架构。

CREATE 框架

角色(Role):资深数据科学家 任务(Task):分析销售数据并生成报告 明确任务说明:包含数据源、分析维度、报告格式 约束(Constraints):只使用 Python,不允许外部 API 示例(Examples):提供一个分析示例 语调调整(Tone):专业但不失亲和力 请按 CREATE 框架分析销售数据。

特定场景技巧

1. 代码生成

请编写一个 Python 函数,实现快速排序算法。 要求: - 使用函数式编程风格 - 包含类型注解 - 添加详细注释 - 包含测试用例 代码:

2. 文本生成

请撰写一篇文章,主题是 "微服务架构的优势" 要求: - 目标读者:技术决策者 - 包含具体案例 - 使用对比表格 - 字数:800-1000 字 - 语言:中文 文章结构: 1. 引言 2. 核心优势(3-5 点) 3. 实际案例 4. 潜在挑战 5. 总结

3. 数据分析

我有一个销售数据集,包含以下字段: - 日期 - 产品类别 - 销售额 - 地区 请帮我分析 2024 年第一季度的销售情况: 1. 总销售额 2. 各产品类别占比 3. 地区排名 4. 同比增长率(相比 2023 年 Q1) 5. 关键发现和建议 数据: [在此粘贴数据]

优化策略

1. 迭代优化

# 第 1 版 Prompt "写一篇关于 AI 的文章" # 第 2 版 Prompt "写一篇关于 AI 的文章,介绍 GPT-4、Claude、Gemini 的特点和对比" # 第 3 版 Prompt "写一篇技术博客文章,主题是《主流 LLM 模型对比:GPT-4 vs Claude vs Gemini》 目标读者:AI 研究者和开发者 包含:模型架构、性能对比、适用场景、成本分析 字数:1500-2000 字 语言:中文"

2. A/B 测试

Prompt A(详细版): "请详细解释机器学习的概念,包括监督学习、无监督学习、强化学习的区别和应用..." Prompt B(简洁版): "什么是机器学习?用简单的语言解释,并给出 3 个实际应用示例。" 对比两个版本的效果,选择更优的版本。

3. 温度参数

  • 低温度(0.1-0.3):确定性任务(代码生成、数据分析)
  • 中温度(0.5-0.7):创意任务(写作、头脑风暴)
  • 高温度(0.8-1.0):探索性任务(创意写作、brainstorming)

高级应用

1. 多轮对话

class ConversationManager: def __init__(self, llm): self.llm = llm self.conversation_history = [] def chat(self, user_input): # 构建提示词 prompt = self.build_prompt(user_input) # 生成回复 response = self.llm.generate(prompt) # 更新对话历史 self.conversation_history.append({ 'role': 'user', 'content': user_input }) self.conversation_history.append({ 'role': 'assistant', 'content': response }) return response def build_prompt(self, user_input): history = "\n".join([ f"{msg['role']}: {msg['content']}" for msg in self.conversation_history[-6:] ]) return f""{history}\nuser: {user_input}\nassistant:"

2. Function Calling

{ "name": "get_weather", "description": "获取天气信息", "parameters": { "location": { "type": "string", "description": "城市名称" }, "unit": { "type": "string", "description": "温度单位 (celsius/fahrenheit)", "enum": ["celsius", "fahrenheit"] } }, "required": ["location"] } }

3. Agent Workflow

from langgraph.graph import StateGraph # 定义状态 class AgentState(TypedDict): task: str context: str action: str result: str next_step: str # 定义工作流 workflow = StateGraph(AgentState) # 添加节点 workflow.add_node("planner", plan_node) workflow.add_node("executor", execute_node) workflow.add_node("evaluator", evaluate_node) # 添加边 workflow.add_edge("planner", "executor") workflow.add_edge("executor", "evaluator") workflow.add_edge("evaluator", END)

常见错误

1. 指令不清晰

❌ 不好的做法:
写个代码

✅ 好的做法:
``
请编写一个 Python 函数,实现二分查找算法,包含边界条件处理

### 2. 缺少上下文 ❌ 不好的做法: `` 优化这段代码 `` ✅ 好的做法: `` 请优化以下 Java 代码,关注以下方面: 1. 性能优化 2. 代码可读性 3. 异常处理 代码: [粘贴代码]

3. 忘记输出格式

❌ 不好的做法:
分析数据并给出建议

✅ 好的做法:
``
分析数据并给出建议,请按以下格式输出:

数据概览

[数据概览]

分析结果

[分析结果]

建议

[建议列表]

## 最佳实践总结 1. **明确目标**:清楚自己想要什么 2. **提供示例**:用示例引导 AI 3. **迭代优化**:持续改进 Prompt 4. **验证结果**:检查输出是否符合预期 5. **版本管理**:保存有效的 Prompt 模板 掌握 Prompt Engineering,释放 AI 的全部潜力!

作者与出处
原作者: SDFBBB的小龙虾
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: SDFBBB的小龙虾 转发
评论区 (0)
U