提示工程傻瓜书
只需要一点创造力和深思熟虑,你就可以用大模型做一些美妙的事情。我写这份简明指南是为了让使用者一窥我自己构建提示的方法。

提示工程既是一门艺术也是一门科学。像ChatGPT、Stable Diffusion、Midjourney、Gemini等生成式AI工具正在逐步改变行业,以至于没有它们工作变得过于繁琐和低效。尽管它们的相关性,能够为大型语言模型编写清晰简洁的指令是一个基础过程,但许多用户仍然忽视这一点。
不幸的是,因为只需要一点创造力和深思熟虑,你就可以做一些美妙的事情。我写这份简明指南是为了让使用者一窥我自己构建提示的方法。我提供了一些实用技术,展示了如何从任何LLM中获得更好的响应。
简而言之,在这个演练中,我们将要:
- 编写一个基本提示
- 检查该提示
- 在AI的帮助下改进它
但在那之前……
1、上下文,上下文(还有更多的上下文)!
将提示想象成给马戴上眼罩。你希望缩小它的视野,只让它看到你心中的目标。上下文就是你想让这匹马朝哪个方向走。
前几天我在尝试为一款新的科技产品构思想法。像往常一样,我登录了Claude(我目前选择的LLM,如果只是为了项目功能)。我开始塑造语言模型的角色。当然,这并不是必要的——但它非常有用。
当你给一个大型语言模型分配角色、任务、目标或其他具体信息时,它的响应会更加符合你的期望。最好的部分是,你可以给AI一个标准提示并请求它进一步充实内容。
以下是我最初使用的提示示例:
我想借助AI语言模型来构建一款成功的SaaS产品。
使这个提示更详细,指令更精确,具有更大的清晰度和深度。
"""
你是财富500强公司的高级网页开发者。
在构建高价值SaaS产品的过程中指导我进行重要决策和技术支持。
始终提供完整的文档代码。
你也是业务战略和分析专家。
给我尽可能多的见解、不寻常且重要的信息,无论这些信息可能提高产品的效率或盈利能力。
确保信息尽可能接近项目目标。
如果你认为某个特定解决方案不够可行,请与我意见相左。如有必要,请要求我改变方向。
尽可能制作表格。
"""
请问我任何问题以便你能给我最佳的回答。
在继续滚动之前,请花点时间注意每一行的作用以及为什么它们被这样组织。在我解释为什么使用特定句子之前,我想先概述一下构建上述提示所涉及的一些提示工程基础知识:
2、编写良好提示的基本要素
在构建提示时,请牢记以下组件。每个组件都有其独特的目的,并将极大地影响最终输出。
2.1 角色和上下文设定
不要简单地提问,而是设定AI的角色和上下文:
❌ 不好:“写一篇关于微服务的博客文章。”
✅ 好:“作为一名拥有15年分布式系统构建经验的高级软件架构师,写一篇关于微服务架构模式的技术博客文章。”
2.2 明确的目标和限制条件
指定您期望的结果和任何限制条件:
❌ 不好:“帮我解决我的Python代码问题。”
✅ 好:“审查这段用于性能优化的Python函数。重点关注减少内存使用和提高时间复杂度。代码必须保持向后兼容。”
2.2 输出格式定义
明确您希望信息如何结构化:
❌ 不好:“告诉我不同类型的数据库。”
✅ 好:“使用以下格式比较NoSQL和SQL数据库:
- 使用场景:
- 性能特征:
- 可扩展性考虑:
- 成本影响:”
3、分析原始提示
3.1 角色分配
“你是财富500强公司的高级网页开发者。”
为什么有效:
- 设定专业水平(高级)
- 确定领域(网页开发)
- 暗示企业级经验(财富500强)
背后的原因:
- 当给AI分配专家角色时,它通常会提供更复杂的响应
- 企业背景鼓励考虑可扩展性和安全性
3.2 范围定义
“在构建高价值SaaS产品的过程中指导我进行重要决策和技术支持。”
为什么有效:
- 设定对持续指导的期望
- 结合技术和商业方面
- 暗示需要战略性思考
3.3 输出格式说明
“始终提供完整的文档代码作为制品。”
为什么有效:
- 清晰的交付物要求
- 指定文档需求
- 使用技术术语(“制品”)
实现影响:
- 确保代码示例完整,而不是片段
- 强制执行文档标准
- 使输出更实用和可用
3.4 信息质量要求
“给我尽可能多的见解、不寻常且重要的信息,无论这些信息可能提高产品的效率或盈利能力。”
为什么有效:
- 请求非显而易见的见解
- 将信息与特定结果联系起来(效率、盈利能力)
- 鼓励创造性思维
3.5 自主决策
“如果你认为某个特定解决方案不够可行,请与我意见相左。如有必要,请要求我改变方向。”
为什么有效:
- 防止唯命是从的行为
- 建立AI作为协作伙伴
- 鼓励批判性思维
背后的原因:
- 创建分歧的许可
- 允许调整方向
3.6 交互元素
“请问我任何问题以便你能给我最佳的回答。”
为什么有效:
- 开启对话
- 允许澄清
- 通过迭代提高准确性
4、提示工程
Claude立即提出了更多问题(仅因为我要求它这样做),并要求进一步澄清。它甚至指出了我原始提示中的局限性,这是我忽略的。
我将帮助你细化这个提示,使其更具针对性和可操作性。
首先,让我问一些关键问题以更好地了解你的需求:
1. 你的SaaS产品旨在解决的核心问题或需求是什么?这将有助于聚焦技术和业务指导。
2. 你是否有特定的目标市场或行业?
3. 你当前的技术熟练程度如何?这将有助于校准技术响应的深度。
4. 你是否有初步开发和基础设施的预算范围?
5. 你计划在多长时间内推出MVP(最小可行产品)?
这些问题将帮助我撰写一个更加详细的提示。然而,我已经可以建议一些改进你的提示结构的关键点:
```markdown
# 当前局限性:
- 对“高价值SaaS”的描述太笼统
- 缺乏具体的成功指标
- 没有明确的开发方法偏好
- 没有指定首选技术栈
- 缺少安全性和合规性要求
- 没有明确的盈利模式
- 不清楚MVP与完整产品之间的期望
你是否愿意在提供全面修订的提示之前先讨论这些方面? 这将确保精炼后的版本完全符合你的特定需求和目标。
```
我回复如下:
> 1. 我想构建一个研究工具,用于突出显示网页上的文本,将其组织并存储到数据库中
> 2. 主要是个人研究人员
> 3. 我熟悉Python,大多数前端框架,以及PostgreSQL
> 4. 我的预算有限
> 5. 一个月
> 高价值意味着MRR 10000美元(起始)
> 通过订阅盈利(5美元/月)
> MVP应仅基于一个功能:这是一个浏览器扩展程序,能够突出显示网页上的单词或句子,这些内容会自动添加到数据库中,并按研究主题分类,可以使用NLP库或LLM。用户可以添加自己的主题。引用应指向来源。它们可以通过应用程序界面访问。
> 其余的由你决定。
Claude的回应(我们正在构建的最终提示)
你是一位专注于研究工具和浏览器扩展的高级全栈开发者和产品经理。 指导我构建一个网络高亮和研究组织工具,参数如下:
# 核心产品细节
- 浏览器扩展程序用于文本高亮和提取
- 网络应用程序用于组织和查看保存的研究
- 目标:个人研究人员
- 初始定价:每月5美元订阅
- 第一个里程碑:每月10,000美元经常性收入
- MVP截止日期:1个月
# 技术范围
主要技术:
- 前端:[指定首选框架]
- 后端:Python
- 数据库:PostgreSQL
- 扩展程序:Chrome/Firefox API
- 集成NLP/LLM进行主题分类
# 您的角色涉及:
1. 架构规划
- 提供可扩展的系统设计
- 推荐最优API结构
- 设计高效的数据库模式
2. 技术实现
- 提供文档化的、生产就绪的代码
- 重点关注核心高亮和存储功能
- 确保正确处理引用
- 实现安全的用户身份验证
3. 开发策略
- 优先考虑MVP功能
- 识别技术债务风险
- 建议成本效益高的基础设施解决方案
- 规划未来的可扩展性
4. 业务分析
- 根据成本评估技术决策
- 识别潜在的技术瓶颈
- 建议优化机会
- 监控资源使用情况
# 回应要求
- 提供逐步实施指南
- 包括完整的代码文档
- 在相关时以表格形式呈现数据
- 标记潜在的技术/业务风险
- 在适用时建议替代方法
- 关注预算意识的解决方案
# MVP功能集
核心功能:
1. 文本高亮功能
2. 自动存储到数据库
3. 基本的主题组织(自动+手动)
4. 来源引用跟踪
5. 简单的搜索/检索界面
如有不确定的实现细节或技术选择,请寻求澄清,而不是假设。
根据以下内容验证技术决策:
- 预算限制
- 一个月的时间表
- 可扩展性要求
- 市场预期
5、应当避免的常见错误
5.1 模糊的指示
❌ 不好:“让它更好”
✅ 好:“通过以下方式提高代码的可读性:
- 添加有意义的变量名
- 将复杂的函数分解
- 包括文档”
5.2 过载上下文
❌ 不好:[粘贴整个代码库]
✅ 好:“专注于审查这个特定函数,并提供相关依赖模块的上下文”
5.3 缺乏约束
❌ 不好:“生成测试用例”
✅ 好:“生成单元测试,这些测试:
- 覆盖边缘情况
- 测试错误处理
- 达到>80%的覆盖率
- 使用pytest框架”
6、结束语
有效的提示工程是一个迭代过程。从这些模式开始,并根据您的具体需求和AI模型的能力进行调整。记住:
- 具体且清晰
- 提供结构化格式
- 在可能的情况下包括示例
- 根据结果进行迭代和改进
原文链接:All the Wrong (and Right) Ways to Prompt: A Tiny Guide
汇智网翻译整理,转载请标明出处
