什么是Prompt(提示词)? Prompt写得好,AI回答差不了
用大模型时间长了,发现一个规律:同一个问题,换个问法,答案能差出十万八千里。有时候一句话就给你想要的,有时候问半天还是答非所问。关键就在 Prompt(提示词)。
Prompt 是什么
Prompt 就是你输给模型的所有东西——问题、指令、背景信息、例子,连你怎么要求输出格式都算。
模型收到 Prompt,就开始猜你要什么,然后生成回答。
可以把大模型想成一个啥都懂的人,你说的每句话就是给他的「简报」。简报越清楚,他给的答案越准;简报糊里糊涂,他就只能瞎猜,结果自然跑偏。
Prompt 分三种
平时用模型,不只是你发那一句话。一次完整的对话,其实是三种角色的话凑起来的。
System Prompt(系统提示词)
对话开始前,开发或平台先塞给模型的指令。用户一般看不到,但它是整个对话的「后台规则」——定好模型是什么人、能干什么、怎么说话。
比如你打开某个电商客服,背后可能是这么一段:
你是「小智」,某电商平台售后助手。只回答订单、退款、物流的问题。
遇到无关的,礼貌地让用户找人工客服。语气亲切,别超过100字。就是这段你看不见的话,决定了这个客服只谈售后、不聊别的。
System Prompt 不只在产品里。像 Claude Code 这类开发工具,项目根目录的 CLAUDE.md 文件就干这事——你在里面写的规则(比如「都用中文回」、「提交前先跑测试」),每次对话开头自动塞给模型,让它一直守着。
再往大了说,Agent(智能体) 的起点也是一段 System Prompt。通常会告诉模型「你能用哪些工具」、「遇到情况怎么选」,再配合工具调用和循环决策,让模型自己拆任务、一步步干完。
User Prompt(用户提示词)
你每次发的话,就是 User Prompt。这是最常见的,也是这篇文章主要说的。
我的订单昨天显示发了,但今天物流没动,怎么办?Assistant Prompt(助手消息)
模型每次回的话,也会记下来,下次对话时一起传给模型。
可以这么理解:模型每次回答问题,看到的不是「当前这一句」,而是从头开始的完整聊天记录。就像你和人聊天,他能记住前面说的每句话,所以你说「刚才那个方案」他知道是哪个,你说「帮我改改」他也知道改什么。
这也解释了为什么聊得越久,模型越「懂你」——因为它攒的上下文越来越多。但反过来,聊太长超出 Token 上限,前面的就会被忘掉,模型开始「失忆」。
有时开发还会自己造一段假的助手消息,提前填上想要的开头,逼着模型按这格式往下写。这招叫 Prompt Prefilling(预填充)。比如填上「分析结果如下:\n1.」之后,模型多半会顺着这个格式写,不会另起炉灶。
三种放一起,一次对话大概长这样:
[System] 你是个代码审查助手,只列问题,不给改法。
[User] 帮我看看这段 Python:def add(a, b): return a+b
[Assistant] 1.缺类型注解 ... ← 上次回的,也算上下文
[User] 这些问题里哪个最要紧? ← 新发的弄懂这个结构,用 api 做应用时很重要,因为你要自己拼这三种消息传给模型。
怎么写好 Prompt:核心要素
知道 Prompt 是什么、分几种,接下来最关键——怎么写好它。
一个好 Prompt,通常包含这几样(不是全要,看任务复杂程度):
| 要素 | 说明 | 举例 |
|---|---|---|
| 角色 | 告诉模型以什么身份回 | 「你是个资深 Python 工程师」 |
| 任务 | 明确要干什么 | 「帮我 review 下面这段代码」 |
| 背景 | 提供上下文 | 「这代码用来处理用户上传的图片」 |
| 约束 | 限制输出格式、长度、风格 | 「用中文回,别超 200 字」 |
| 示例 | 给个想要的样子 | 「格式参考:问题 + 怎么改」 |
下面用几个例子,看看这些要素怎么用。
例子一:任务 + 背景 + 约束
同一个事,糊弄着写和清清楚楚写,差距有多大。
场景:写请假邮件。
糊弄的写法:
帮我写封请假邮件。模型回的:
尊敬的领导:
您好!我因个人原因,申请请一天假,请批准。
此致
敬礼
XXX空话一堆,没具体信息,根本没法用。
加上任务细节、背景和约束:
帮我写封请假邮件。
背景:我是软件开发工程师,要向直属主管请假。
原因:3月10日陪父母去医院体检,预计全天。
要求:语气正式但不生硬,结尾说清楚会提前安排好工作交接。别超150字。模型回的:
王经理,您好:
因陪父母于3月10日(周二)去医院做年度体检,预计全天无法到岗,
特申请请假一天,请您审批。
我会提前和同事交接好工作,保证当天任务不受影响,请您放心。
谢谢!
XXX同一个模型,回答质量天差地别,区别只在 Prompt 写法。
例子二:角色
给模型定个角色,能让回答更贴你的受众。
不定角色:
帮我解释下递归。回的:
递归(Recursion)指函数在其定义里直接或间接调用自己的编程技术。
递归函数通常有两部分:基本情况(Base Case)和递归情况(Recursive Case)。
基本情况是不再调用自己的终止条件,递归情况是调用自己解决更小的子问题。教科书式的解释,有术语有结构,但没学过编程的人听不懂。
加上角色:
你是大学计算机导论课老师,给完全没编程基础的大一新生讲课。
用生活例子解释「递归」,别写代码,控制在100字以内。回的:
递归就像照镜子。
你站在两面正对的镜子中间,镜子里的你还在照镜子,镜子里的镜子里的你又在照镜子……
这个「自己里还有自己」的结构,就是递归的本质。
编程里,一个函数调用自己解决更小的子问题,直到碰到最简单的情况。同样解释递归,有了角色,解释更贴听众,质量明显好。
例子三:示例(Few-shot)
如果你有特定输出格式要求,直接给例子最管用。这招叫 Few-shot Prompting(少样本提示)。
把下面句子的情绪分成「正面」、「负面」或「中性」,再给简短理由。
示例:
句子:这家餐厅的菜真的太好吃了!
分类:正面
理由:表达了对食物的强烈满意。
句子:今天天气不错。
分类:中性
理由:陈述事实,没明显情绪。
现在分类这句:
句子:等了半小时没上菜,服务态度也很差。回的:
分类:负面
理由:描述了等得久和服务差的不满,情绪明显消极。给两个例子,模型立刻明白你要的输出格式和分析方式,结果特别准。
例子四:思维链(Chain of Thought)
除了给例子,还有个很实用的技巧叫 Chain of Thought(思维链)——引导模型一步步推,而不是直接给答案。在数学、逻辑题上效果特别明显。
直接问:
一个书店周一卖了15本书,周二卖的是周一的2倍,周三卖的比周二少8本。三天一共卖了多少?回的:
一共卖了52本。答案对,但如果问题再难点,模型跳步就容易错。
加上思维链引导:
一个书店周一卖了15本书,周二卖的是周一的2倍,周三卖的比周二少8本。三天一共卖了多少?
请一步步推,最后给答案。回的:
1. 周一卖了15本
2. 周二卖的是周一的2倍:15 × 2 = 30本
3. 周三卖的比周二少8本:30 - 8 = 22本
4. 三天合计:15 + 30 + 22 = 67本
答案:三天一共卖了67本。就加一句「请一步步推」,模型就会展开中间过程,推理准头大幅提升。这招的本质是:让模型把「想的过程」写出来,而不是闷头算——写出来的过程本身就成了后面的上下文,帮它保持逻辑连贯。
常见的 Prompt 错误
平时用,有几类写法容易踩坑:
太宽泛,没约束
给我写段代码。什么语言?什么功能?多长?模型只能猜。改成「用 Python 写个读 CSV 文件并按第二列排序的脚本」,结果好得多。
多个任务混一起
帮我写首诗,再分析下这段代码,顺便推荐几本书。模型在多任务间来回跳,每个质量都下降。一次只让模型干一件事,效果好。
以为模型能读心
你懂的,就那种风格。模型没上下文,「那种风格」对它来说是空的。要说清楚,是「简洁的技术文档风格」还是「轻松的科普文章风格」。
给了太多废话
我今天8点起床,吃了个三明治,坐地铁去公司,路上看了会儿新闻。
到公司开电脑,发现昨天写的代码有个bug。帮我看看怎么修。前面一大段都是噪声,模型得从里挑有用信息,反而容易分心。直接给代码和错误现象就够了。
总结
Prompt 是你和大模型说话的方式,写好 Prompt 是用好模型最核心的本事:
给角色:让模型知道从谁的角度回
说清任务:要干什么,别含糊
给背景:上下文越全,答案越准
加约束:限好格式、长度、风格
举例子:Few-shot 是引导格式最直接的办法
让推理:Chain of Thought 让模型一步步想,复杂问题更准
模型本事就那么大,但 Prompt 决定了你能使出来多少。同一个模型,写好的 Prompt 能让它发挥出远超你想的效果。
本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!