怎么把 AI 用好——prompt、工具用法与复盘
上篇 AI工具为什么突然能干活了——从原理到实践的理性拆解 说到,AI 工具已经越过了”能具体做事”的门槛——有了 prompt 复用机制和工具调用能力,它不再只是聊天窗口。但门槛只是起点。用上了 AI 工具,和把 AI 工具用好,是两件差距悬殊的事。
同样一个工具,为什么别人用得飞起,自己用起来结果不尽如人意?同样是让 AI 写一份分析报告,有人拿到草稿只需微调,有人来回改了十几轮还是不对味。差别不在工具,在使用者怎么用。
使用者能做的事,大致分三块:一是把 prompt 写好,二是把 AI 工具的用法搞清楚,三是遇到不符合预期的结果时有方法复盘。这三件事看起来各自独立,但归根结底是同一件事——你对自己手上这个任务,到底想清楚了没有。
一个有帮助的类比:把 AI 当成新来的实习生。它有基本的办事能力,受过通识训练,但它不知道你是谁、不了解这个行业的规则、不清楚任务的具体流程、也不知道你对输出质量的判断标准。你在给实习生做岗前培训时会提供什么,一份好的 prompt 就应该包含什么。不是”命令”,是”让他能干好活的前置信息”。
那就从 prompt 开始说起。
一、prompt 怎么写
实习生入职第一天,你不可能甩给他一句”帮我处理一下上周的数据”就走开。但我们给 AI 写 prompt 的时候,往往就是这么干的。差别在于:实习生会来追问,AI 不会——它会直接做,做完交给你,看起来完成了,但结果不是你要的那个。
以下六件事,是把 prompt 从”意思差不多”调整到”结果可用”的主要着力点。
1、把输出说清楚
AI 给出的结果里掺杂了主观臆想的额外内容,通常不是 AI 的问题,是 prompt 没有写清楚边界。
“清楚”的意思不是字数多,而是任务的边界和定义是确定的。用一个 CSV 表格任务来示范这个差距:
最弱的写法:
帮我把数据做成一个表格。
“表格”是什么格式?哪些字段?这两个问题 AI 只能猜。
稍微好一点,指定了格式和字段:
给出一个 csv 数据表格,里面要有名字、日期、地址三列。
但”名字”写什么、”日期”写什么格式、如果某个字段没有数据怎么办——还是没说。
再好一点,给出输出模板:
给出一个 csv 数据表格,里面要有名字、日期、地址三列。csv 里面预期内容是:名字,日期,地址这里是第一个名字,这里是第一个日期,这里是第一个地址如果名字、日期、地址任何一个缺失,那就什么都不填
模板消除了格式歧义,空值规则也说清楚了,AI 已经知道该往哪个方向走。但这个模板是虚构的——”这里是第一个名字”本身没有信息量,AI 对于”像”和”不像”的判断,仍然是靠猜。
目前实用效果最好的写法,是把模板换成真实数据:
给出一个 csv 数据表格,里面要有名字、日期、地址三列。csv 里面预期内容是:名字,日期,地址张三,2009-10-21 10:23:47,北京市 海淀区 xx路xx号如果名字、日期、地址任何一个缺失,那就什么都不填
AI 在”学人说话”时,是从例子里归纳规律、判断方向的。真实数据给出了格式、精度、风格的具体标准,AI 才知道什么叫做对。
2、给例子
提供例子和不提供例子,任务结果的差异可以很大。原因在于:任务描述往往是抽象的、简短的、带有歧义的。AI 的训练语料里可能有成千上万个不同任务都能匹配这几行描述,它需要自己猜哪个是你要的那个。
消除歧义最直接的方式是给例子。但给例子有三个细节值得注意。
细节一:例子要覆盖边角 case。
不能只给教科书式的正面例子,要给出边界情况。上面 CSV 的任务,至少要有一行字段缺失的情况:
名字,日期,地址张三,,
如果你不给这个例子,遇到空值时 AI 就会自由发挥——有时填”未知”,有时填”N/A”,有时直接跳过那行,每次不一样。
细节二:例子一定要用真实数据,不要虚构的。
输入样例的分布会影响 AI 对”像”和”不像”的判断。如果你的任务不需要时分秒和门牌号,例子就要这么写:
名字,日期,地址张三,2009-10-21,北京市
而不是:
名字,日期,地址张三,2009-10-21 10:23:47,北京市 海淀区 xx路xx号
后者会让 AI 把精力花在时分秒和门牌号上,输出的细节层级和你实际需要的产生偏差。你给什么分布,AI 就学什么分布。
细节三:例子不要重复出现。
同样的例子对 AI 没有新的信息量;重复出现反而是熵增——它占用上下文窗口,稀释有效信息,影响模型对整个任务的权重判断。
总结:给例子,贵精不贵多。一个覆盖边界情况的真实例子,胜过五个说同一件事的虚构例子。
3、把任务步骤告诉 AI
现有 AI 善于处理明确的短任务,不善于多步骤的长任务。原因很直观:步骤越多,中间环节出错的概率就越高,错误会沿着链路累积到最终结果里。
已有研究表明,要求 AI “一步步思考”比直接让它输出结果效果更好。但笼统地说”一步步思考”不够,关键在于提供具体的步骤路径——如果不给具体步骤,AI 的”思考”过程是天马行空的,跟没说一样。
正确做法是:把人类做这件事时的步骤介绍给 AI。具体分两类:
推理类任务:写出思维链的路径。例如”先从市场规模角度评估可行性,再从竞争格局角度分析风险,第三步综合前两步的结论给出建议”——不是让 AI 自己决定怎么思考,而是把推理路径直接给出来。
事务性任务:把任务拆解成一个个小环节,逐步写出来。要求每一步的输入输出是明确的、有判断标准的。比如”第一步:从原始文本里提取所有日期,输出一个日期列表;第二步:对日期列表按时间排序;第三步:找出相邻日期间隔超过 30 天的区间,输出区间起止时间”。
这样写完之后,本质上是把一个模糊的大任务分解为若干个清晰的小任务。每一步 AI 可以出错的空间都被压缩了,从结果上保证了整体输出质量。
4、人设怎么才有用
实际任务里经常需要 AI 以某个专业人士的角度来工作,所以我们习惯写人设 prompt。但只写一句”你是资深数据分析师,请从专业角度完成以下任务”,作用聊胜于无。AI 不知道”专业”在这个具体任务里意味着什么,它只是用这个标签来调整语气。
要让人设真正起作用,需要从三个方面说清楚:
任务边界:做什么和不做什么。要求 AI 从哪些角度分析、忽略哪些角度。例如审阅一篇文章时,可以明确:”分别从逻辑正确性、数据可信度、行文流畅度、错别字与标点符号四个角度逐项分析,不要综合评价,不要给分。”边界清楚,AI 才不会乱发挥。
领域规则:这个任务里特有的定义和顺序约束。比如”在这个行业里,A 指的是……而不是通用含义的 A;分析时必须先看 B 指标,再看 C 指标,因为 B 是 C 的前置条件。”这些规则写进 prompt,AI 才能在这个领域里按正确的逻辑操作。
约束输出:最终要什么。给出哪些要点,什么信息是必须的,什么可以不写;输出什么格式,数据怎么组织。同上文说的——有模板,比没模板好;有真实例子,比只有模板好。
最重要的一点:prompt 的本质是传递意图,不是下命令。
堆砌”必须做什么、绝对不能做什么”这类强制性措辞,效果往往不如解释清楚为什么这样要求。理解了意图的 AI,遇到 prompt 没有覆盖到的边界情况时,会按照你的逻辑推断出该怎么做;只会执行命令的 AI,一旦遇到命令没覆盖的情况,就只能自由发挥了。”不要生成 markdown 格式”这句话,效果不如”因为输出会直接粘贴进 Excel,所以不需要任何 markdown 格式”——后者让 AI 真正理解了约束背后的理由。
5、背景知识
有时候 AI 给出的结果不对,可能是缺乏必要的背景知识。判断方法很简单:把你认为相关的背景知识粘贴进 prompt 里,再跑一遍,看结果是否有显著变化。有变化,说明知识补充是有效的;没变化,说明问题不在这里。
但背景知识通常很多,不是一股脑粘贴进来就能好用的。信息量过大、组织混乱的背景知识,会污染 prompt 里的有效信号。AI 找不到重点,整段背景知识等于没有提供。
正确做法是:把背景知识整理成结构化的数据。判断自己的知识是否整理到位,可以问三个问题:
-
你的知识有没有目录? -
每个章节有没有概括性的介绍,让人知道这章讲什么? -
AI 需要某个知识点时,需要最少看多少字才能找到那段话?
进阶做法是分层、按需提供。先给 AI 高层概括和目录,让它知道整体结构在哪里;等 AI 需要某个细节时,再把对应章节的内容补进来。一次性把所有知识全倒进去,和把知识组织成有结构的索引,效果差异很大。信息越精准,AI 用起来越准确——就像给一个人讲解任务,背景越清晰、结构越清楚,对方理解起来越准确。
6、用可执行逻辑和代码增强 prompt
上面说的五个方法,都是在自然语言层面优化 prompt。但自然语言描述本身就是瓶颈——写得再清楚,对于某些确定性的操作,AI 仍然有概率出错,而且每次出错的方式还不一样。
这时候应该考虑用工具或代码替代自然语言描述,把”确定性的部分”从 AI 的职责里分离出去。
确定性操作(数据格式转换、文件处理、数值计算):与其在 prompt 里用自然语言描述”按照这个规则处理”,不如直接提供一段可执行的代码或脚本,让 AI 调用。代码的语义是精确的,没有歧义,执行结果是可预期的。同样的格式转换规则,自然语言描述执行十次会有细微差异,脚本执行十次结果完全相同。
复杂输出格式:提供一个模板文件或示例文件,让 AI 以此为基础填充内容,而不是从零开始生成。格式的正确性由模板来保证,AI 只需要负责内容本身。生成 Word 文档、Excel 表格、特定结构的 JSON,都适合这个做法。
在 prompt 里附带脚本:专门处理那些自然语言描述无法精确覆盖的环节。每次调用这个 prompt 时,AI 都会使用相同的确定性脚本完成这些环节,而不是每次自己重新发明一遍。这样的 prompt 实际上是”自然语言 + 可执行逻辑”的混合体。
总结:自然语言描述负责”做什么、为什么”,代码和工具负责”怎么做”里那些确定性的部分。两者结合,才能把 AI 的不确定性压缩到真正需要语言理解和生成的地方。
这六件事——说清楚输出、给好例子、拆解环节、写清人设、补充背景知识、用代码增强——并不是相互独立的清单,而是同一件事的不同侧面:你对这个任务,到底想清楚了多少。
prompt 写到这个程度,AI 已经可以作为一个靠谱的执行者。但光有好的 prompt 还不够——AI 工具本身的用法,也影响着最终结果。
二、AI 工具怎么用
好的 prompt 解决的是”AI 知不知道该做什么”的问题。但即使 prompt 写得很好,任务跑起来的过程里还会出现两类问题——而这两类问题,靠改 prompt 是解决不了的,需要在工具用法上做对应的调整。
1、跑着跑着开始胡言乱语
AI 在一个会话里工作久了,上下文里会积累大量中间产物:试错的片段、被推翻的方案、工具调用的冗余返回结果。这些内容对当前任务没有任何帮助,但它们就在上下文里占着位置,持续污染 AI 的后续输入。这就是上篇说的”熵增”(即上下文里的噪音不断累积,有效信息被稀释)——随着会话推进,噪音越来越多,AI 输出质量越来越差,到后期甚至开始自相矛盾。
(本文里,”AI 会话”指的是你用 AI 工具时,一段连续上下文的对话单元——也就是 AI agent。后面章节提到的 subagent、agent teams,说的都是在这个层面上启动和管理多个 AI 会话。)
最直接的应对方法:关掉这个 AI 会话,开一个新的,继续工作。重启等于清空噪音,干净的上下文能让 AI 重新回到好状态。
但重启会话有个前提:你要能把未完成的任务正确衔接过去。这对任务拆解的要求很高。理想的拆解是:把一个模糊的大任务分解为若干个清晰的小任务,每个小任务有独立的、明确的输入和输出,可以完整移交给一个全新的 AI 会话。每个小任务单独交给一个 AI,AI 不知道也不需要知道前面发生了什么,只拿到当前任务需要的那些信息,专心做这一件事。
举个例子:让 AI 帮你做竞品分析报告,拆分前的任务是”帮我整理五家竞品的功能、定价和用户口碑,写成对比报告”——这是一个连续工作量很大的任务,一旦中途偏了,后面都会带着偏差走。拆分后可以是:第一步,逐一收集五家竞品资料,输出结构化的原始数据表;第二步,基于原始数据表,按维度对比分析,输出对比结论;第三步,基于对比结论,写报告正文。每一步单独交给一个新会话,每一步的输入输出都是确定的。
这种模式在工具层有对应的自动化实现,叫做 subagent。使用支持 subagent 的 AI 工具时,可以先让 AI 输出一个任务 plan(把大任务拆成哪些小步骤、每步输入输出是什么),然后工具根据 plan 自动启动多个独立的 AI 会话,每个会话只做一个小任务,做完自动关闭,结果传递给下一个会话。整个过程里,每个 AI 会话的上下文都是干净的、有限的。
2、结果看起来对,但实际有遗漏
这个问题比胡言乱语更难察觉。AI 给出的结果流畅、完整,格式也好看,但其中遗漏了某个情况没有处理,或者某个细节没覆盖到。如果你不仔细核查,很容易直接用了。
一个有效的应对方法:再开一个独立的 AI 会话,让它做 review。给这个 review AI 提供任务描述和原始输入,让它独立完成同样的任务,再把两个 AI 的输出对比。如果任务执行正确,两个独立 AI 得到的结论应该大体一致;如果出现明显分歧,就说明其中有一个出了问题,值得深查。
这里有一个容易踩的坑:把第一个 AI 的结果直接甩给 review AI,问”这个有没有问题”。这样做几乎没用。AI 看到一个已有的答案,倾向于确认它——它会说”整体没有问题,只是……”然后给出几点无关痛痒的小建议。这不是审查,这是走过场。
正确做法是让 review AI 做盲测:不告诉它”这是第一个 AI 的输出,请帮我审查”,而是只给任务描述和原始输入,让它从头独立完成,得到自己的答案,再和第一个 AI 的输出做对比。两个 AI 在不知道对方答案的情况下独立作答,出现的分歧才是有意义的信号。
这种模式在工具层的自动化实现,叫做 agent teams。预先设置好多个 AI 会话的背景信息、人设、分工,以及它们的启动顺序、工作内容、输入输出如何衔接,AI 工具会按照这个工作流自动推进任务。
两种模式的区别
两者都是「启动多个 AI 会话」,但结构不同。subagent 是串行的:A 做完 → B 开始 → C 开始,单向前进,没有交叉依赖。适合大多数线性的复杂任务。agent teams 是网状的:多个 AI 并行启动,或者存在循环依赖——比如 A 和 B 同时开始各自工作,或者 A 需要等到 B 输出后才能完成自己的部分。适合需要多角色协作、互相校验的场景。
一个粗略的判断原则:任务是线性推进的,用 subagent;任务需要多个视角互相验证,或者存在「先做完的 AI 需要等另一个 AI」的情况,用 agent teams。
prompt 写好了,工具也用对了,AI 已经能处理大部分常规任务。但总会有结果不对的时候——下一节说的,就是怎么面对这种情况:不对的时候怎么复盘,从失败里找到可以改进的地方。
三、失败复盘
结果不对的时候,最没用的反应是换个模型试试,或者觉得 AI 太笨。这两条路都跳过了一个关键步骤:搞清楚问题出在哪里。大多数失败都有可以归因的原因,找到它,才有办法改。
下面是六类常见的失败原因。
1、格式错误
现象:输出结构乱,多了不该有的内容,或者格式完全对不上。
这通常不是 AI 的问题,而是 prompt 里对输出的描述不够清楚。回头看一下:有没有说清楚输出的边界?有没有给一个真实的例子?”输出 JSON”和”按以下格式输出 JSON,例如……”对 AI 来说是完全不同的指令。
2、理解偏差
现象:AI 做的事情和你要的完全是两回事,方向跑偏了。
任务描述里可能有歧义,或者任务拆解不够细。试着把任务说得更具体,或者拆成更小的步骤,让每一步的输入输出都明确——模糊的描述几乎必然带来偏差。
3、知识缺失
现象:AI 给出的结论在你的业务或领域里是错的,甚至完全不适用。
AI 没有你的领域背景,它在用通用知识猜测。把相关的背景知识、业务规则、领域定义直接粘进 prompt,看有没有显著改善。这比换模型有效得多。
4、结构性上限
现象:不管怎么改 prompt,AI 在某类任务上就是做不好——比如精确计算、查询实时数据、严格遵守格式约束。
遇到这种情况,首先应该回头看一·6 提到的做法:把确定性的部分从 AI 的职责里分离出去,用代码、脚本或 API 来处理。如果加上这些工具辅助之后结果仍然不稳定,才算真正触及了结构性上限——这类任务本质上不适合交给 AI 用自然语言来做。确定性的计算或查询,靠语言描述会引入不确定性,结果不可靠。一个简单的判断标准:这件事如果直接用代码或查数据库来做,能不能得到精确答案?如果能,就不应该指望 AI 猜——直接调用对应的工具,结果更可靠,也不会出现每次结果不一样的问题。
5、推理链断裂
现象:AI 的输出从某个点开始自相矛盾、越来越离谱,像是飘了。
原因通常是任务拆解不够小,或者上下文里积累了太多噪音。把任务再拆细一步,重开一个干净的会话,或者检查一下有没有该用 subagent 的地方——让每个 AI 只做一件事,不要让一个会话扛太多。
6、预期定义模糊
现象:”感觉不对”,但说不清楚哪里不对,也没办法告诉 AI 怎么改。
这种情况,问题往往不在 AI,而在于”正确答案”本身就没有被定义清楚。回过头问自己:什么叫做”对”?这个判断标准是否客观可验证?能不能给出一个”对”的例子?如果连你自己都说不清楚,AI 没有办法猜对。
这六类归因覆盖了大多数常见的失败情况。用它来做复盘,不是为了找谁的责任,而是为了找到一个具体的改进点——下一次同类任务,就有了更清晰的起点。
结语
说到底,前面三件事讲的是同一件事:你有没有把任务想清楚。
prompt 写不好,通常不是措辞问题,而是对”要什么”本身就含糊——所以才凑出一段话,希望 AI 自己悟出来。工具链搭不顺,往往也不是技术问题,而是没想好任务的边界在哪,哪些步骤是串行的、哪些可以并行、哪些地方需要人介入检查。复盘的时候最难说清楚的那类失败——”感觉不对,但说不清哪里不对”——根源几乎都是预期本来就没定义。
常说”做领导的要先想清楚,不要为难干活的”。这句话放在 AI 身上同样成立。任务的边界是什么、正确答案长什么样、边界情况怎么处理——这些没有答案,给的就是自由度,AI 会用自己的方向填满它,填的方向不一定是你想要的。结果出来之后抱怨 AI 不够智能,有点像写了一张模糊的需求单,然后怪工程师交付的不是自己想要的。
把任务想清楚,这不是用好 AI 的附加条件,而是核心本身。工具的能力会继续演进,但这一点不会变:你想要什么,你自己得先知道。
夜雨聆风