FEATURED · 精选文章

AI高手如何写Prompt?从任务拆解到输出验证的实战指南

发布时间 / 2026/8/30 2:18:54
来源 / 创域科博编辑部
栏目 / 资讯中心
AI高手如何写Prompt?从任务拆解到输出验证的实战指南 AI高手和普通用户之间的prompt水平差距并没有想象中那么大但也没有捷径。差距主要体现在三个地方对任务的理解、对上下文的管理、对输出的验证方式。这篇文章就把这三块拆开讲。先做一个判断如果你现在写prompt还是“帮我把这段文字润色一下”这种级别那问题多半不在文采而在任务描述。如果你能说清楚输入是什么、希望按什么格式输出、哪些内容不能出现、失败时怎么处理你的prompt已经超过大多数人了。这篇文章适合正在用大模型做日常办公、学习、编程的人也适合想做AI应用、Agent、RAG项目的开发者。不会给你一堆“万能模板”让你背因为模板价值很低。真正有用的是建立一套判断标准什么样的prompt算及格输出怎么验证问题怎么定位。下面按我实际调prompt的顺序拆开讲。1. 先别问“怎么写prompt”先问“你要让模型完成什么任务”1.1 大多数人的prompt只有指令没有任务边界“帮我写一份周报”和“根据我提供的工作记录生成一份周报包含本周完成事项、问题风险、下周计划三个部分每部分不超过300字不用寒暄直接输出正文”这两句话的区别不是字数而是边界。前一句的“周报”要让模型猜你是什么岗位、给谁看、写多细、要不要数据。模型只能按概率生成一段看起来像周报的内容。后一句把输入、输出、长度、结构都限定了模型要做的不是创作而是执行。AI高手的prompt通常不追求文采追求的是让模型少猜。少猜意味着输出稳定。你可以在一个通用聊天界面里用很随意的prompt但要拿到可复用的结果或者要接进自动化流程就必须把任务边界写清楚。1.2 把任务拆成“输入、处理、输出、约束”四段我一般会建议把prompt拆成四段输入我提供什么材料比如会议记录、代码、文章、数据集处理模型要做什么动作比如改写、提炼、翻译、转JSON、调试代码输出输出的格式、语气、长度、结构约束哪些事情不能做比如不要编造数据、不要输出开场白、不要补充原信息。用一个例子对比普通prompt“帮我总结一下这段话。”高手prompt“下面引号中是会议记录。请提炼1主要决定2待办事项并对应负责人3未决问题。按列表输出每条不超过50字。不要补充原记录中没有的信息。”这背后是模型的工作方式。大模型不是搜索引擎它是概率生成器。它会在你提供的上下文里不断预测下一个最合适的token。你给的边界越清晰它就越不容易往不可控方向生成。如果把prompt当成一份给外包开发者的需求文档你会发现很多问题迎刃而解。需求文档不会写“做一个好用的系统”而是写清楚功能列表、输入输出、异常处理。prompt也是同理。1.3 用一句话做验收标准写prompt之前先想一个问题如果模型输出长成什么样我才认为任务完成比如“如果输出包含三个部分、每部分都直接可用就算成功”。这句话能帮你判断是不是还需要补一轮对话。高手会把验收标准直接写进prompt。常见写法是“如果信息不足请直接说缺少哪些信息不要自行假设。”这是非常关键的一步。大多数模型在信息缺失时不会主动说“不知道”它会根据概率编一个合理答案。你允许它编它就会编。所以要在prompt里提前堵住这个口子。更进一步的写法是给“完成态”示例。比如“输出格式参考如下完成事项3到5条每条以动词开头问题风险1到2条下周计划2到3条”输出格式一旦有了参照物模型的行为会立刻收敛。这一点在后面的迭代部分还会再讲。2. AI高手不是记住了更多魔法词而是懂得控制上下文2.1 上下文窗口不是越大越好很多工具已经支持很长的上下文窗口于是大家习惯把资料一股脑全贴进去。结果模型反而抓不住重点。上下文越长注意力越分散。关键信息如果埋在第8000个token里等模型生成的时候前面的权重可能已经被冲淡了。尤其是指令和要求放得太靠后模型容易忽略。高手的做法是只放必要信息把无关内容裁掉。如果材料很长先让模型做一次分段摘要再把摘要作为下一步的上下文。比如你有一份50页竞品文档不要直接问模型“这份文档里有哪些关键功能”。先让它“把每一页标题和核心功能提取成列表”再基于这个列表做分析。这样既减少噪音也方便你检查模型有没有漏内容。2.2 给模型“角色背景示例规则”而不是零散要求一条结构完整的prompt可以这样组织角色你现在是一个有十年经验的测试工程师背景我在做接口自动化下面是我的用例模板示例这是两个好例子这是两个坏例子规则输出严格按JSON格式字段命名用snake_case。角色可以帮助模型选择语气和知识倾向背景告诉它信息范围示例是最直接的约束方式。很多时候写100字规则不如给一个示例。因为模型擅长模式匹配它看到示例后会在生成时模仿这个模式。比如你希望它输出“短句、不带表情、不用敬语”与其反复强调不如直接给它一句目标风格的话作为示例。2.3 关键信息放在开头和结尾中间放推理材料大模型对开头和结尾的内容通常更敏感。如果prompt很长不要把最重要的要求放在中间。我一般会把“任务是X输出格式是Y”放到第一句把“不要做Z”放到最后一句。中间放参考资料、背景材料、原始文本。如果平台支持system prompt和user prompt分开就把固定规则放system把临时任务放user。这样每一轮对话都会带上规则但不会每轮都重复粘贴一大段背景。很多AI应用开发框架里system prompt是独立配置的改起来也更方便。另外不要在一个prompt里塞太多任务。比如“帮我改错别字、润色、转英文、再总结成三个要点”这种复合任务很容易让模型顾此失彼。正确的做法是拆成多个步骤先改错别字再润色再翻译最后总结。每一步单独验证出问题也好定位。3. 高手调prompt常用的一轮迭代法先跑通再收紧3.1 第一版prompt故意写得“松”一点很多人一上来就写满规则结果模型反而僵硬这里不能做那里不能说最后输出干巴巴。我建议第一版只写清楚任务和输出格式先看模型在自由状态下的行为。比如你要让模型写一封邮件第一版先写“根据这些信息写一封会议通知邮件”。如果它给出了完整结构只是缺细节说明任务本身没问题再补约束。如果它连格式都跑偏那可能模型对任务理解有误需要换一种表达方式。先跑通意味着先确认“方向对了”。方向不对后面所有精细调优都是白费。3.2 观察输出是格式错、内容错还是逻辑错拿到模型输出不要只看“好不好”要看错在哪一层。格式错比如要求JSON却变成散文要求列表却变成大段文字。这种问题好解决补输出结构、给一个示例或者用JSON mode、函数调用等方式强制结构化。内容错比如关键信息缺失、数据编造、没有基于你提供的材料回答。这种问题要回头检查输入材料是否完整prompt里有没有说明“只能基于材料回答”。模型内容错很多时候是因为它没有接收到足够条件。逻辑错比如前后矛盾、步骤对不上、因果混乱。这说明prompt里的关系不清晰需要拆步骤。可以让模型先输出中间推理过程再给结论。比如“先判断这段代码属于哪个模块再说明潜在问题最后给修改建议”。下面是一个简单的排查表错误类型现象优先排查方向格式错输出不是预期结构补示例、结构化输出、JSON mode内容错信息缺失、编造检查输入材料完整性、强调“只能基于材料”逻辑错前后矛盾、步骤混乱拆步骤、要求先推理再回答3.3 把错误转成“禁止项”和“必做项”模型经常犯的错误可以直接转成prompt里的规则。如果模型喜欢在输出开头说“当然以下是润色后的版本”那就加一句“不要任何开场白直接输出正文”。如果模型经常漏掉某个条件那就加一句“输出前逐条对照以下要求缺失的项用‘无’补齐”。禁止项要具体不要写“请准确”要写“字段不能为空”“日期必须使用YYYY-MM-DD格式”。必做项要可检查不要写“请认真处理”要写“输出中包含‘风险’字段如果没有风险则写‘无’”。迭代一段时间后你会发现prompt里的规则越来越多。这是正常现象。但当规则太乱时要重新组织把同类规则合并。不然模型面对一堆互相冲突的要求效果会变差。3.4 一个真实迭代案例以“让AI写一封会议通知邮件”为例。第一版prompt“帮我写一封会议通知邮件。”输出完整但语气太随意没有具体时间地点。第二版prompt“帮我写一封会议通知邮件包含时间、地点、议程、参会人需要提前准备的材料。语气正式不超过200字。”输出信息有了但“参会人需要提前准备的材料”被写成“请大家准时参加”因为模型不知道有哪些材料。第三版prompt“下面提供会议信息。请写一封邮件正文必须包含以下四项时间、地点、议程、需要提前准备的材料。其中准备材料从列表1中摘取。开头顶格写‘各位同事’不要使用表情符号。如果列表1中没有材料信息写‘无’。”第三版才是能直接用的。这个例子说明不是模型笨是你第一步没给它足够信息。需要迭代而且迭代过程中要带着“这次比上次好在哪、还缺什么”的判断。4. 参数和流程决定了同样的prompt会有完全不同结果4.1 temperature、top_p、max_tokens到底改什么很多人只关注prompt文本忽略了参数。同一个prompt在不同参数下跑出来的结果可能差别很大。以temperature为例它控制随机性。数值越低输出越确定数值越高越有创意但也越容易跑偏。我一般写代码、数据抽取、固定格式任务时把temperature设成0.1到0.3。做创意文案、头脑风暴时可以调到0.7以上。top_p是核采样类似temperature的另一种控制方式。通常两个参数不要同时猛调。先固定一个再调另一个。如果任务是稳定输出就直接用低temperature。如果任务是探索多个方案可以适当调高top_p。max_tokens要预留够。如果要求模型输出长报告但max_tokens只有200它写到一半会被截断。反过来如果任务只是分类标签max_tokens设成1000以上也是浪费还会增加等待时间。参数作用推荐值使用场景temperature控制随机性0.1-0.3代码、固定格式、数据抽取temperature控制随机性0.7-1.0创意写作、头脑风暴top_p控制候选范围0.8-0.9与temperature二选一调整max_tokens控制输出上限按任务需求长文本要预留充足4.2 结构化输出和代码块约束如果要求模型返回JSON直接在prompt里给字段说明和示例是最省事的方式。示例{ title: 项目名称, status: done, issues: [问题1, 问题2] }然后加一句“只输出JSON不要解释”。有些平台还支持JSON mode或函数调用可以让模型按预设Schema输出。这种场景下prompt里的字段命名尽量和Schema一致避免歧义。纯文本场景用Markdown结构约束。比如“用二级标题分节”“每节用列表”“每项不超过50字”。这样输出更容易阅读也方便后续复制到表格或文档里。4.3 如果接了Agent、RAG或MCPprompt的边界会变化现在很多人会接触LangChain、Spring AI、MCP、RAG这些概念。要注意这些框架解决的是调用链路问题不是提示词问题。接上框架之后prompt依然很关键只是形态发生了变化。在Agent场景里模型需要决定调用哪些工具。prompt里要写清楚你有哪几个工具、每个工具的作用、什么时候调用、工具返回结果怎么处理。比如“如果用户问天气调用get_weather工具不要自己编造天气”。这种prompt比普通对话prompt更像“指令集”。在RAG场景里模型需要结合检索到的片段回答。prompt里要加一句“只能基于给定片段回答片段中没有的信息要说明‘资料中未找到’”。否则模型会借用其他训练知识给你一个看似合理但不在资料里的答案。MCP这类协议可以统一工具接入方式但prompt仍然要告诉模型每个工具怎么用。我曾经见过一个项目工具定义、模型配置都对但效果很差。最后发现是system prompt里没有明确说明工具的输入参数格式模型不知道该传什么。所以不要以为“上了框架就不用写prompt”框架只是帮你把工具接通决策逻辑还在prompt里。5. 从单条prompt到一套提示词体系普通用户和高手的分水岭5.1 把prompt当代码管理版本、变量、复用普通用户把prompt写在对话框里用完就忘。高手把prompt放在文件里像管理代码一样管理。我一般会在一个项目目录里建一个prompt文件夹按场景分文件。每个模板里用变量代替具体内容角色{role} 任务{task} 输入材料 {input} 输出要求 - 结构{output_structure} - 语气{tone} - 长度{length} 禁止项 {ban_list}实际使用时把变量替换成具体内容。这样同一个结构可以反复使用不需要每次都从零构思。如果平台支持我会把较长的固定规则放到system prompt里把变化的素材放到user prompt里。比如写作类任务system prompt固定是“你是一个资深科技编辑语言简洁不夸大”user prompt负责输入当前文章主题和素材。5.2 建立自己的提示词模板库按场景分类是建立模板库最容易上手的方式。我会这样分写作类邮件、周报、营销文案、博客开头总结类会议纪要、文章摘要、文档转表格编程类代码解释、代码审查、生成测试、SQL编写数据类字段抽取、格式转换、JSON输出Agent类工具调用规则、RAG回答规则、多步骤任务规划。每个模板只记录三件事用途、prompt全文、一次效果好的输出示例。不需要搞得很复杂一个Markdown文件就够。等积累到几十条再考虑用工具管理。养成这个习惯之后你会发现写prompt的时间变短了而且每次调优都有据可查。不会出现“上次还不错这次怎么不行了”的情况。5.3 如何用日志和反馈持续优化没有日志你很难判断prompt是真好还是只是运气好。简单的做法把每次调用时的模型版本、temperature、prompt版本、输入要点、输出样例存成文本。下次复盘时直接对比。如果模型三次输出不稳定就把prompt里的规则再收紧一处。如果输出总是缺少某项就检查是不是约束放得太靠后或表达太模糊。比如“补充数据来源”和“补充数据来源格式为[来源名称链接]”后者明确多了。对于更复杂的项目还可以记录每次调用的tokens消耗、耗时、失败率。这些指标能帮你判断是prompt问题还是资源问题。比如某次批量任务突然变慢可能不是prompt变了而是输入文本变长导致token数增加。6. 实战排查为什么同样的prompt别人出结果你出垃圾6.1 先看模型版本和配置同一个prompt在不同模型上表现可能差很多。有人说“我用的和你一样”但没注意自己用的是标准版还是推理版temperature是不是默认高值。先确认以下信息模型名称和版本temperature、top_p、max_tokens设置是否使用了system prompt覆盖是否启用了插件或知识库。确认完这些再看prompt本身。不然你可能在错误配置下反复调一段本来没问题的prompt。6.2 再看输入内容有没有被截断长文本场景里如果模型输出突然答非所问很可能是输入被截断或关键信息在靠后位置被忽略。可以查看token统计确认输入长度是否接近上限。如果文本太长先做摘要或分段处理。另一种情况是你把最重要的要求放在第2000个字之后模型读到后面已经忘了。解决方法是把关键要求提到开头或者重复两遍。6.3 再看是不是参数和prompt打架“严格按JSON输出”和temperature1.5之间本身就是矛盾的。想要稳定输出就把temperature调低。想要多种风格就不要怪格式不稳定。排查时先跑一组对照组同一个prompttemperature设成0.1max_tokens设成比通常多一倍。如果输出变得正常说明问题在参数不在prompt。如果输出仍然乱再回头改prompt。6.4 最后检查工具链和插件如果你用了LangChain、Spring AI、MCP或某些客户端插件问题可能不在你的prompt而在中间层。比如工具返回结果没有正确传给模型、历史消息被截断、系统级prompt覆盖了你设定的部分。这些都要看调用链路的日志。很多人发现“同一个prompt在官方网页端好用在自己的应用里就变笨”原因多半在应用层。网页端默认会用比较完整的system prompt你的代码里可能只传了user prompt没传系统规则。或者你循环调用时没有带上上一轮的关键结果。遇到这类情况不要继续改prompt文本先打开日志看实际发给模型的消息是什么。很多时候你会看到自己精心写的prompt根本没被完整发出去。写prompt不是去背一堆魔法词汇而是把需求描述清楚、把边界说清楚、把输出验收标准定下来。这一步做好你和AI高手之间的差距会小很多。我个人更建议先把单条prompt跑稳再去搭那些复杂的Agent流程。很多看起来很高深的AI工程问题最终都会回到prompt是否可控。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻