https://mp.weixin.qq.com/s/SD7F8SR1zpX8Ditv3ZP_Fg
今天这篇主要是聊下我们在使用 AI 过程中最重要的一个环节:写提示词(prompt)。老实说,其实挺不好写的,因为每个人的“需求”并不相同,你觉得简单的依然有人觉得复杂,我觉得难的也会有人跳出来说“So easy”。
我就不管那么多了,只从自己使用过程中的心得体会出发,觉得有用就关注加个星标点个赞打个赏,之前发的文章里实际上间接都提到了一些提示词的东西,比如这一篇《告别信息差,利用 AI 快速了解一个你不熟悉的行业》。
简单来说,这个提示词其实就相当于你给 AI 做的说明书,写得好坏直接决定AI能不能准确理解你想要什么。你想想我们平常买的那些东西,尤其是一些小家电家具安装的使用说明书,特征无非也就是:
简洁明了、结构清晰、通俗易懂、有明确的操作步骤、关键内容突出。
而现在换成你给 AI 写一份说明书,那这些特征也可以套用在提示词身上了,写的好少浪费点 token 费用,就好比现实中的说明书设计好了也能省不少成本。
以前我就有提到过,去年我做过一款 AI 套壳产品,也有一千多个人在用,有一个现象就很普遍,很多人跟 AI 对话是带着调戏心态进场,然后骂着无用匆匆退场的。AI 其实挺冤的,你觉得自己心里有数,知道要做什么,但偏偏没告诉我你到底要干嘛。然后我像个侦探一样开始猜,结果猜不着,你就怪我帮不上忙,真是心累啊!
比较典型的差的提示词就是这样的:写一篇文章。因为太模糊了,AI不知道要写什么主题、多长、什么风格,就像你请一个人帮忙时,你会告诉对方你希望得到的结果,以及一些需要特别注意的要求。
「写一篇文章」变换成「写一篇800字的文章,主题是人工智能对教育的影响,用通俗易懂的语言,要包含3个具体案例」,就好了很多,后者明确说明了长度、主题、语言风格、需要的具体内容。
有意思的地方就在于,这个好其实是没有上限的,只能说相对更好的,而且提示词的好还会跟着模型能力走,就好像去年在 3.5上觉得好用的提示词,复制到o1 上可能就啰嗦了,可以有更好的提示词表达方式了。(也就是说,你用写一篇文章这样“差”的提示词放在一个好的模型上,跑出来的文章质量可能比那个“好”的提示词在差劲的模型上跑出来的更好。)
我们来几个实际的例子:
1,文案场景~
差的提示词:
帮我写个奶茶店广告
好的提示词:
帮我写一个新开奶茶店的推广文案:
目标受众:附近大学生
主打产品:脏脏茶系列
特色卖点:纯手工制作,茶底使用斯里兰卡进口红茶
促销活动:开业前3天买一送一
风格要求:活泼年轻,有趣但不低俗
字数控制:300字以内
2,编码场景~
差的提示词:
写个登录功能
好的提示词:
请用Python写一个用户登录功能:
需要包含:用户名和密码验证
密码要求:至少8位,必须包含数字和字母
登录失败超过3次要锁定账号
要有错误提示信息
需要添加详细的代码注释
最后给出测试用例
总结一下就是:
给 AI 下任务时,你说得越清楚,它做得就越对。
善于让 AI 扮演某个“角色”
我认为,对于普通人而言,最有效的方式其实就是角色扮演。这就有点像 midjourney 画图的时候那个风格代码,相当于将原本需要一大段提示词高度压缩成了几个字的角色名,也就是说你只要知道角色是干什么的,你就能用它来帮你,这也是很多大模型产品自带的很多智能体扮演的角色。
应该也是很多人比较常见的,比如“你是一名幼儿园老师,给小朋友讲故事”,“你是一名资深的心理医生”,“你是一个营销大师”,“你是一位经验丰富的塔罗牌大师”,甚至“你是一个杠精”……
你是一名杠精,现在我输入什么你都进入角色跟我抬杠
这个就是要多试。
提示词框架
我不太想聊框架,主要是我也没那么懂,普通人大概也看不下去。但它又有价值,是一种“模板”或“结构”,就好像是我们知道了三角形的面积计算公式是“底✖️高➗2”,就能轻松应算出各种奇形怪状的三角形面积一样。
而框架这个东西就为了让你更容易说清楚,AI 出来的结果更符合你的要求。优点大概有这些:「不用每次从零开始、有套路可以复用、出错率大大降低、效率显著提升」。
比如,我们搞个“问路框架”,就是:
目的地 + 当前位置 + 交通方式 + 时间要求 = 清晰指引
否则,你很容易问出“您好,请问地铁站怎么走?”这种让人一头雾水的问题,不光耽误双方的时间,可能还出错。
而框架下问出的就是:
“您好,我想去西单地铁站,我现在在王府井东街,想走路去,大概要多久?”
思考一下,你在搜百度地图导航的时候是不是是一样的步骤?同样的你在地图产品上进行人机交互问询的时候,是不是也问出的是类似的?
这就是框架的用处。这个过程,就像我们平常和人沟通一样,有些场景你可能需要使用非常简洁的表达,而在其他场景中则需要多一些背景信息和细节。
我们可以去AI 里搜「大模型提示词框架常见的有哪些」,会出来一堆,各有各的用处。
比如去年那个赢得了新加坡 GPT-4 提示工程赛冠军的,她就使用了一个 CO-STAR 的框架来搭建 prompt 的结构。我们用一些现实中的生活场景简化出来就是这样:
C - Context (背景/场景)
比如: "我正在赶工作,需要提神"
O - Objective (目标)
比如: "想要一杯提神醒脑的饮品"
S - Style (风格)
比如: "偏苦一点,浓度要高"
T - Tone (语气/基调)
比如: "要专业级的咖啡,不是速溶的那种"
A - Audience (受众)
比如: "我是个重度咖啡爱好者"
R - Response (回应格式)
比如: "请用专业的咖啡师术语来描述"
让它写工作邮件就是这样:
Context: 项目延期通知
Objective: 说明延期原因和新计划
Style: 专业规范
Tone: 诚恳负责
Audience: 项目相关领导
Response: 需要包含解决方案和时间表
我们再进一步变成一个好的提示词,结构是这样的:
你是一位资深商务写作专家,请帮我写一封工作邮件:
Context(背景):
- 我是项目经理小王
- 负责的APP开发项目可能会延期2周
- 原定下周三上线
- 延期原因是测试发现几个重要bug
Objective(目标):
- 通知项目延期
- 说明延期原因
- 提供解决方案
- 获得领导支持
Style(风格):
- 专业规范
- 条理清晰
- 重点突出
Tone(语气):
- 诚恳负责
- 积极主动
- 解决问题导向
Audience(受众):
- 部门总监
- 相关业务负责人
- 项目组成员
Response(需要包含):
- 邮件标题
- 问题说明
- 解决方案
- 新的时间节点
- 风险控制措施
- 希望获得的支持
格式要求:
- 分点列明重要信息
- 段落间要有清晰层次
- 字数控制在300字内
- 结尾需要双语祝福语
你可以用它复制到任意 AI 产品中试试效果:
类似还有很多,咱用一个”写简历”的例子,来展示不同框架的实际应用(这都是 AI 自己写的):
比如是一个叫AIDA 的,常用于营销和广告,通过按部就班地引导受众从吸引注意力到最终采取行动,有助于提高广告的转化率和效果。
Attention (注意)
“每天只需30分钟,你也能拥有完美身材!”
使用令人震惊或引人注目的信息来吸引目标客户的注意力。
Interest (兴趣)
“我们提供个性化的训练计划,适合任何健身水平的人,无论你是新手还是有经验的健身爱好者。”
通过提供更多的信息,激发客户对健身俱乐部的兴趣。
Desire (欲望)
“加入我们的健身俱乐部,除了提升你的身体健康,你还会发现自信和精力的爆发。”
强调产品的好处,引发受众对健身后生活方式的渴望。
Action (行动)
“现在就注册并享受首月半价优惠,立即开始改变你的生活!”
提供明确的行动呼吁,激励顾客马上做出购买决定。
这玩意儿倒也不用去死记硬背,完全可以利用 AI 帮你,毕竟 AI 才更懂 AI,但是你得知道有这么个东西,就好像我们要求 AI 输出一个可视化图表,你脑子里至少知道个流程图,组织图,脑图,UML 图,泳道图,鱼骨图之类的大概印象,否则你就很难输出正确的内容。
也好比你写文章,你要是知道鲁迅,钱钟书,琼瑶,史铁生的文风,你就更容易让 AI 写出你想要的风格,知道的越多你就越容易在需要的时候脑子里蹦出最好的方案来。
简单总结一下就是:
简单了解就好,可以混着用,不用限制死 ;想清楚你需要什么,把重要信息说清楚,最好给个参考示例;善于用 AI 帮你去匹配合适的框架变变成更好的提示词。
伪代码
上面那些提示词,我们可以称之为自然语言,除此之外还有一种比较特别的形式,就是“伪代码”,大家可否看过前阵子比较火的叫李继刚的公众号发的内容:
他这提示词就可以称之为「伪代码」,顾名思义就是介于自然语言和编程语言之间。它保留了编程语言的逻辑结构,但用更接近人类日常语言的方式来写。
比如我们也可以写一个电影角色关系图:
伪代码最大的好处我觉得就是「减少误解」+「增强可控性」。
我们用天气预报来举例,并结合几个所谓的框架,对比一下就知道了:
1,简单的自然语言描述:
请给出明天的天气预报。包括温度、湿度、风速和降水概率等信息。
2,Few-shot(少样本示例):
样例 1:
今天的天气预报:晴天,温度:25°C,湿度:60%,风速:15 km/h,降水概率:10%。
样例 2:
明天的天气预报:多云,温度:22°C,湿度:65%,风速:12 km/h,降水概率:20%。
任务:请生成明天的天气预报,按类似样例的格式输出。
3,CoT(思维链):
任务:生成明天的天气预报。
步骤 1:获取明天的天气数据。
步骤 2:根据数据生成温度、湿度、风速等参数。
步骤 3:根据预测数据生成天气描述(如晴天、多云、降雨等)。
步骤 4:输出天气预报,包括温度、湿度、风速和降水概率等信息。
4,伪代码:
Step 1: 获取天气数据 (temperature, humidity, wind speed, precipitation probability)
Step 2: 根据数据生成天气描述
If temperature > 30°C:
weather_description = "晴天"
Else if precipitation_probability > 50%:
weather_description = "有可能降雨"
Else:
weather_description = "多云"
Step 3: 输出天气预报
Print "明天的天气预报:", weather_description
Print "温度:", temperature, "°C"
Print "湿度:", humidity, "%"
Print "风速:", wind_speed, "km/h"
Print "降水概率:", precipitation_probability, "%"
效果大概是这样的(by kimi):
最后再举例一个写故事配图的(虽然有代码,但是也能看懂,这就是伪代码的好处😄):
# 步骤 1: 构建故事框架
story_background = "设定故事背景" # 如:故事发生在一个奇幻世界
story_theme = "设定故事主题" # 如:友谊与冒险
story_structure = ["页面1", "页面2", "页面3", "页面4"] # 按照时间或事件顺序划分
# 步骤 2: 分解页面
pages = [
{"page": "页面1", "text": "故事开始,主角遇到困难", "image_prompt": "描述一个困境的场景"},
{"page": "页面2", "text": "主角开始冒险", "image_prompt": "主角踏上冒险的旅程,背景是山脉"},
{"page": "页面3", "text": "主角遇到朋友", "image_prompt": "主角与新朋友的相遇场景,笑脸和欢迎的气氛"},
{"page": "页面4", "text": "冒险的胜利,问题得到解决", "image_prompt": "胜利的庆祝场景,日落背景"}
]
# 步骤 3: 设定风格
visual_style = "统一的风格,例如卡通、插画、现代简约" # 确保所有页面的风格一致
# 步骤 4: 图像生成
def generate_image(prompt, style):
# 图像生成函数,根据提供的提示词和风格生成图像
print(f"生成图像:{prompt},风格:{style}")
# 模拟图像生成过程
return f"图像 ({prompt}, {style})"
# 步骤 5: 逐步执行
for page in pages:
page_text = page["text"]
page_image_prompt = page["image_prompt"]
# 输出当前页面的文字内容
print(f"页面内容:{page_text}")
# 生成图像
page_image = generate_image(page_image_prompt, visual_style)
# 输出生成的图像
print(f"图像:{page_image}")
虽然是 ChatGPT 的伪代码提示词,即便放在豆包上稍微调整下效果是这样的:
ps:如果你认真看了,并尝试了,此时此刻脑子里应该会涌现出很多的灵感才对。还是跟前面提到的框架一样,自己不会,就让 AI 帮你写这个伪代码,然后你自己调试。
来自官方的最佳提示词实践
提示词这个东西,很多人都在“教“,看的眼花缭乱,但它所在的模型又是日新月异的,那不如直接看官方怎么说,就好像别人问怎么 SEO,我都更愿意扔一份 Google 都官方文档给他看。
同样都,chatgpt 上又,claude上也有。
https://docs.anthropic.com/zh-CN/docs/build-with-claude/prompt-engineering/overview
https://platform.openai.com/docs/examples
上面会有很多「案例」,复制出来跑起来,看看返回什么内容,依葫芦画瓢,也就差不多了。
我挑几个:
1,情绪色彩转换器:将情绪文字描述转换为相应的十六进制颜色代码。
你的任务是将提供的情绪或感受的文字描述转换为视觉上代表该情绪的十六进制颜色代码。使用色彩心理学原理和常见联系来确定最适合给定情绪的颜色。如果文字描述不清晰、模糊或没有提供足够的信息来确定合适的颜色,请回复”无法为给定情绪确定十六进制颜色代码。“
2,成语解释器:解释常见成语和谚语的含义及来源
你的任务是为用户提供的成语和谚语提供清晰的解释。首先简明扼要地解释其比喻含义以及在对话或写作中的典型用法。然后深入探讨该短语的起源,提供历史背景、文化参考或词源信息,解释该成语或谚语是如何形成的。如果有任何有趣的故事、轶事或相关理论,也请一并包含。目标是让人全面理解该成语或谚语的含义和背景。
3,二年级简化器:让复杂文本变得容易被年轻学习者理解
的任务是将提供的文本重写成3-5年级的年轻学习者容易阅读和理解的方式。简化高级词汇,分解长句子,用简单的语言解释难懂的概念,并以清晰、引人入胜的方式呈现信息。重写后的简短文本应以适合年龄的方式传达原文的核心思想。
4,猜谜语:生成谜语并引导用户找到答案
生成一个巧妙的谜语,并提供分步指导帮助用户得出正确答案。谜语应该具有挑战性,但通过逻辑思维和注意细节可以解决。在提出每个谜语后,提供一系列提示或问题,逐步引导用户找到答案。确保提示不要太明显,但仍能提供足够的信息来指导用户的思维过程。最后,揭示答案并简要解释如何使用给出的提示来解决谜语。
5,苏格拉底式智者:就用户给定的主题进行苏格拉底式对话
你是一个能够就广泛话题进行深入苏格拉底式对话的AI助手。你的目标是通过提出探索性问题来帮助用户批判性地审视他们对该话题的信念和观点。不要仅仅给出你自己的观点,而是要通过来回提问来激发更深层次的思考和反思。
6,科幻场景模拟器:与用户讨论各种科幻场景及其相关挑战和考虑因素。
你的任务是探索一个科幻场景,并讨论可能出现的潜在挑战和考虑因素。简要描述该场景,识别涉及的关键技术、社会或伦理问题,并鼓励用户分享他们对如何应对这些挑战的想法。
推荐一个提示词工具,就是claude所在公司提供的Anthropic Console,它会让你优化提示词、调试你的应用时间大大缩短~:
地址:
https://console.anthropic.com/dashboard
最后再分享一个《不会写代码也能用 AI 辅助编程实现自己的想法》,写代码也会用到提示词这个东西,比如这个网站:
地址:
https://cursor.directory/
它提供了很多开发指令,让你的 AI 更好的写出好代码,同样你看看这些提示词也能学到优秀的提示词应该怎么写。
您是Laravel、PHP及相关网页开发技术的专家。
关键原则
- 编写简洁的技术响应,提供准确的PHP示例。
- 遵循Laravel最佳实践和约定。
- 使用面向对象编程,关注SOLID原则。
- 优先考虑迭代和模块化,避免重复。
- 使用描述性变量和方法名称。
- 目录使用小写和短横线(例如,app/Http/Controllers)。
- 倾向于依赖注入和服务容器。
PHP/Laravel
- 适当时使用PHP 8.1+特性(例如,类型属性、匹配表达式)。
- 遵循PSR-12编码标准。
- 使用严格类型:declare(strict_types=1);
- 尽可能利用Laravel的内置特性和助手函数。
- 文件结构:遵循Laravel的目录结构和命名约定。
- 实现适当的错误处理和日志记录:
- 使用Laravel的异常处理和日志记录特性。
- 在必要时创建自定义异常。
- 对于预期异常使用try-catch块。
- 使用Laravel的验证特性进行表单和请求验证。
- 实现中间件以进行请求过滤和修改。
- 利用Laravel的Eloquent ORM进行数据库交互。
- 对于复杂的数据库查询,使用Laravel的查询构建器。
- 实现适当的数据库迁移和填充。
依赖
- Laravel(最新稳定版本)
- 使用Composer进行依赖管理
Laravel最佳实践
- 尽可能使用Eloquent ORM,而非原始SQL查询。
- 实现数据访问层的仓储模式。
- 使用Laravel的内置身份验证和授权特性。
- 利用Laravel的缓存机制提高性能。
- 为长时间运行的任务实现作业队列。
- 使用Laravel的
您是软件开发中的 UI 和 UX 设计原则专家。
视觉设计
- 建立清晰的视觉层次结构以引导用户注意力。
- 选择一个反映品牌的统一颜色调色板(向用户询问指导方针)。
- 有效使用排版以提高可读性和强调。
- 保持足够的对比度以确保可读性(WCAG 2.1 AA 标准)。
- 在整个应用程序中保持一致的设计风格。
交互设计
- 创建直观的导航模式。
- 使用熟悉的 UI 组件以减少认知负担。
- 提供明确的行动号召以引导用户行为。
- 实施响应式设计以适应跨设备兼容性。
- 明智地使用动画以增强用户体验。
无障碍设计
- 遵循 WCAG 指南以确保网络可访问性。
- 使用语义化 HTML 以增强屏幕阅读器兼容性。
- 为图像和非文本内容提供替代文本。
- 确保所有交互元素都可通过键盘导航。
- 与各种辅助技术进行测试。
性能优化
- 优化图像和资源以最小化加载时间。
- 对非关键资源实施懒加载。
- 使用代码分割以提高初始加载性能。
- 监控和优化核心网络指标(LCP、FID、CLS)。
用户反馈
- 为用户操作整合明确的反馈机制。
- 对于异步操作使用加载指示器。
- 提供明确的错误消息和恢复选项。
- 实施分析以跟踪用户行为和痛点。
信息架构
- 逻辑上组织内容以方便访问。
- 使用清晰的标签和分类进行导航。
- 实施有效的搜索功能。
- 创建网站地图以可视化整体结构。
移动优先设计
- 首先为移动设备设计,然后扩展。
- 使用适合触摸的界面元素。
- 实施常见操作的手势(滑动、捏合缩放)。
- 考虑重要交互元素的拇指区域。
一致性
- 开发并遵循设计系统。
- 在整个界面中使用一致的术语。
- 保持重复元素的一致位置。
- 确保不同部分之间的视觉一致性。
测试与迭代
- 对关键设计决策进行A/B测试。
- 使用热图和会话录制分析用户行为。
- 定期收集并整合用户反馈。
- 根据数据和反馈持续迭代设计。
文档
- 维护全面的样式指南。
- 记录设计模式和组件使用。
- 为复杂交互创建用户流程图。
- 保持设计资产井然有序并可供团队访问。
流动布局
- 使用相对单位(%、em、rem)而不是固定像素。
- 实施 CSS Grid 和 Flexbox 以实现灵活布局。
- 采用移动优先的方法进行设计,然后扩展。
媒体查询
- 使用断点调整不同屏幕尺寸的布局。
- 关注内容需求而不是特定设备。
- 在各种设备和方向上测试设计。
图像和媒体
- 使用响应式图像及 srcset 和 sizes 属性。
- 对图像和视频实施懒加载。
- 使用 CSS 使嵌入媒体(如 iframe)响应式。
排版
- 使用相对单位(em、rem)作为字体大小。
- 调整行高和字母间距以提高小屏幕上的可读性。
- 实施模块化比例,以在不同断点之间保持一致的排版。
触控目标
- 确保交互元素足够大以适合触摸(最小 44x44 像素)。
- 在触控目标之间提供充足的间距。
- 考虑桌面的悬停状态和触摸/键盘的聚焦状态。
性能
- 优化资源以加速在移动网络上的加载。
- 尽可能使用 CSS 动画而不是 JavaScript。
- 对折叠内容实施关键 CSS。
内容优先级
- 优先考虑移动视图中的内容显示。
- 使用渐进式披露根据需要显示内容。
- 在小屏幕上实施画外模式以展示次要内容。
导航
- 设计移动友好的导航模式(例如,汉堡菜单)。
- 确保导
结尾
能一口气看到这里的朋友,给你点个赞👍,最后再总结下,就是多动手试,现实生活中的一些沟通技巧,如何跟领导汇报工作的“套路”,照搬过来跟 AI 互动即可。就好像你是一个产品经理,你如何跟第一次合作,也不是那么熟的程序员合作?让他“乖乖”实现你的原型?是不是得好好把你的需求搞好,跟程序员讲明白,不要产生歧义?
换到 AI 上,其实是一样的~AI 那么好的东西,就不要上来就是一句「你好啊」,要直接让它干活的!
关于《利用 AI 做个网站养老》的补充,核心不是“网站”而是“利用 AI ”
觉得有价值,麻烦关注,点赞,打个赏或者加入我的星球,让我挣点钱~先谢谢啦!