提示词の艺术:我的AI使用心得

把各路AI加上聊天对象,开启和AI一问一答的日子也有些时候了。参考和女孩聊天有《魔鬼搭讪学》,和领导聊天有《向上管理的艺术》,和AI聊天,尤其是在开发场景下对提示词的编写,似乎也应该有一套行之有效的办法——理论很多,但概念多却干货少——于是瞬感有必要分享一下个人与AI掰扯的经验。需要说明的是,本文主要针对行业内人士,对业外人士帮助有限,如有兴趣但确实不甚明白,可转发千问/元宝/豆包帮助理解,或者放弃理解以节约宝贵的生命:

语言是一种跨越所有智能水平的界面。—— Kevin Weil

具体+精确,别含糊又宽泛

不够好的例子:帮我优化一下代码

更好的例子:帮我优化一下文件@src/frontend/xxx/xxx.js:123:220 的代码(使用@定位文件,使用:定位行数),减少冗余逻辑

当你告诉AI你要做“什么”,这个“什么”最好说清楚,可别让AI把目标指向了整个项目,且不说一个项目的token量有多大(你应该是知道token决定用量,用量决定金钱,而金钱等于生命的吧?),更重要的是对于整个项目的优化方向就太多了,如果是前端项目,是优化图片(体积?格式?)还是优化项目结构(路由?权限?)又或者是优化依赖(更新版本?替换插件?)。其实当你打出这行提示词时,可能潜台词只是希望AI优化一下刚刚完成的新功能代码中冗余的逻辑。那么为什么让AI去猜呢?虽然猜确实是AI最擅长的事情,但猜来猜去可并不能提升效率,而提高效率不正是你使用AI的目的吗?本末倒置,缘木求鱼说的就是你了。

反过来,如果你想AI输出特定的格式,直接附上一个json数据,绝对比你写上几十字描述要有效得多。

Linux 之父 Linus Torvalds有句名言:Talk is cheap. Show me the code。能用代码的地方请亮代码,能用数据的地方请贴数据。就好像有人问你想吃什么的时候,你回答“辣的吧”,效果绝对不如“那就世界城那家海底捞吧不要鸳鸯锅”。

换行+补充,别一句话开干

不够好的例子:帮我优化一下刚才完成的xxx文件的xxx行到yyy行,减少冗余逻辑

更好的例子:

帮我优化一下刚才完成的xxx文件的xxx行到yyy行:

1、主要是减少冗余的逻辑,移除合并不需要的变量

2、修改后检查,不要影响现有逻辑

3、如果有其他建议也告诉我,由我来决定是否应用

当你告诉了AI做“什么”,确定了做“哪些”,第三步则一定是尽可能补充细节,划定范围。细节越多,AI执行任务的精准度越高;边界越清晰,AI犯错(比如影响现有逻辑,虽然是无意的)的机会也越小。

刚开始AI编程时,面对一个聊天窗口,总会下意识地使用和人聊天的习惯,输入几个字就迫不及待按回车,细节后面一条条再补充。如果对面是人类,这个习惯一点问题没有,毕竟发十句话骂人,都不影响对方回一句傻逼。但AI稍有不同,每一次的输入+反应+推理+执行都是一场盛大的token燃烧(说来说去还是钱?好像是这个意思),而且相信我,让AI来回改十次得到的代码质量绝对不如一次就做好的效果,这就好像你驱使一台机器前后左右八个方向来回掰扯,怎么都不会比开始就定好方向然后笔直地前进更有效率。

跟AI对话不应该是发微信,而应该是写邮件。不是随口一句,而应该是字斟句酌;不是发十句话表达一个意思,而应该是一个意思写到完整的十句话再点发送。想象中的聊天对象,不应该是身边朋友,没说清楚就多说几句;而应该是地球对面的外国人,一个误解就导弹锁定了。只是这个外国人因为收了你大笔token费用的关系,态度比较好,反应比较快罢了。

分步骤,别一股脑去做

如果是简单任务,基本上一句话也能把细节讲到足够清楚和具体。但任务一旦复杂度上来了,就千万别寄希望于用一句话说明白——就算能说明白,也别这样做。继续以“优化代码”举例:

不够好的例子:帮我优化xxx文件,主要是减少冗余逻辑,移除合并不要的判断,修改后执行检查,有其他建议也可以告诉我

更好的例子:

(如果xxx文件比较大)

帮我优化xxx文件,考虑按以下步骤优化:

第一步,减少冗余的代码逻辑,包括可以合并的变量、不会走的else语句、多余的判断

第二步,执行eslint验证,确保无类型问题

第三步,执行测试(方法单测、功能冒烟测试等),确保功能正常,不影响现有逻辑

第四步,评估其他可优化项目,中文输出md格式文档

可能这个例子还是属于比较简单,尚在AI可以轻松hold住的范围,步骤也可以直接由人给到AI。如果涉及到架构调整、全局优化,则考虑让AI给出任务规划——也就是传说中的规划模式(planing mode),让AI给你提问题,确定目标,划定范围,拆解任务,列出步骤,输出得到一个类似计划书的文档。然后让AI按步骤执行,随时反馈:执行到哪一步,进度百分之多少。

如果你任务足够复杂,预算/时间也充足,我还有个私藏的建议:换个AI,货比三家。

多AI车轮战,别一棵树吊死

如果把AI当做一种生物,那可能是这个是世界最容易进死胡同,最容易钻牛角尖的生物了。

之前被安排个任务,把AI评估的某项目优化方案落地上线。我接过来一看,言之凿凿几千字,方案、步骤、影响点和改动记录也都写得清清楚楚,不禁感叹智能体取代人类指日可待。但查看git提交记录,打开文件对比,马上发现不对劲了:AI明明说已经改了十几个文件,为什么只看到新增记录没有修改记录?于是再打开电脑的AI编辑器一番分析,原来AI说的和做的根本对不上,说改的文件没改,说拆分合并的逻辑也遗漏了一堆……

长token处理,固然是AI的弱项所在,但复杂任务下AI出的东西果然还是得多检验检验,才敢付诸实施。古话说,尽信书不如无书。现在这话可以改成:尽信AI不如不用AI。我自己在开发中也有类似经验。每次写新页面,开发新功能,AI那速度真是嗖嗖的,比当年从Stack Overflow复制粘贴还快,还没反应过来几千行的代码就给你写好了,界面和逻辑也难以挑剔。但一旦写出bug,想让他改改,却怎么都改不好。十几轮对话之后,听它说了十几遍“啊!我知道了!”之后,我放弃了,打开另一个AI网站,复制粘贴给它分析,一下就定位问题给出结论了。

至少在AI决赛尚未分出胜负之前,把可能有问题的东西多找几位AI进行PK,绝不是件坏事。

重复+强调,别一笔带过

这个技巧来自前段时间Google Research团队发表的论文《Prompt Repetition Improves Non-Reasoning LLMs》,按研究结论,仅仅只是把命令重复一遍,就能把AI回复的准确率从30%提升到70-80%。但其实这个结论只针对于前期流行的非推理模型(也就是因果语言模型),到了2026年,尤其是编程领域的模型,基本都是推理模型了。推理模型不再是简单的猜下一个字,而是基于提示词进行分析+拆解+搜索,相当于模型已经在推理中对任务进行了重复,所以也就不存在需要重复了。

但重复+强调依然是必要的,尤其是在多轮对话后。比如我在第一次命令时,特意要求AI给我提供的多语言翻译要满足key/en/ja/cn换行的格式,几轮对话之后,再让AI补充多语言,它基本就忘了之前要求过格式这回事。另一个常见的问题,是输出文档已经要求了中文,到下次写文档又变成英文了。这可能是AI注意力机制/受限的上下文长度bug。但还好为了增强AI的长期记忆力,rules/skill被发明出来了。

形成rules/skills,别次次都ctrl+v

很容易区分rules和skills:一个是全局执行,全场景生效;一个是专项技能,按需取用。比如跨项目的要求:输出文档需要中文、多语言翻译需要特定的格式,那就是rules。如果需要针对特定技术栈的能力加强,则记得安装对应skills。或者你也可以把一个特定的流程制作成skill,还是以前面说的多语言处理为例:让AI先按特定格式输出,再增补到多语言文件中,最后执行脚本生成json。

不过也不必过于神化rules/skills,以为是啥很高级的东西。两者的本质依然是提示词,只是写成了AI更容易理解的特定格式。(AI:其实我就只会用提示词,妹想到吧)

清理,别聊个没完

最后也是很容易遗漏的一点。每次一早打开AI对话窗口,一轮接一轮的下问/咨询/质疑/拷问/吵架/不欢而散之后,记得在结束一轮任务之后及时清理,用特定命令/clear或者就直接退出重开新对话,否则你的所有历史对话都会作为token的上下文(context),占用大量资源,最后变成了燃烧的额度费……

说到这里不禁意识到,当前AI时代的主要矛盾,不是日益强大的AI智能与逐渐被取代的各行业工人之间的矛盾,而是日益稳固的AI工作流关联的额度费用与逐渐捉襟见肘的钱包之间的矛盾。智能体进步神速,导致AI越用越顺手,用的人越来越多,额度越用越不足,费用也水涨船高,封号限流成了常有之事。虽然公司提供了账号,却在一次次卡住、没反应、504之后,不得不掏出手机,老老实实花几笔刀乐,买一点私人的额度。

继而联想到在《进击的巨人》中,面对可怖的巨人,调查兵团常说一句话:献出我们的心脏!在群雄逐鹿的AI时代,我们这种逐渐深陷于AI便利而终于无法自拔的互联网一线兵种,也不得不咆哮一句:献出我们的钱包!

最后,有必要加一个AI时代的专属标识:

【本文未经任何AI创作/加工/润色,版权私有,100%手搓】