前言
这是写给小白 ai 系列第四篇:
Prompt(提示词)简单来说就是:
如何跟 AI 提问,并让它真的理解你。
你可能会说:"跟 AI 提问谁不会?输入框一顿敲,不也能回答吗?"
确实能回答,但你一定遇到过这些情况:
- AI 明明回答了,但不是你真正想要的答案
- 你越解释,它越偏题
- 想让 AI 生成一个功能或应用,但总是"差点意思",效果忽好忽坏
尤其是在需要 精准控制输出 的场景,例如让 AI 写一段代码、生成一个应用、完成某个任务------提示词写得好不好,直接决定了结果的可控性与质量。
举个例子,与其说:
"写一首关于大海的诗。"
不如这样:
"写一首五言诗,描写暴风中大海的原始力量,风格模仿李白。"
差别就在细节。
好的 Prompt,可以让 AI 少走弯路,也让你少踩坑。
而目前我们跟 AI 的交互方式就是 Prompt,所以
学好 Prompt,就等于学会更高级地使用 AI。
本文将带你从一个真实例子开始,彻底搞懂:
如何写出更准确、可控、稳定的高质量提示词。
欢迎一起交流。
什么是提示工程?
提示工程(Prompt Engineering)也叫指令工程。
Prompt 就是一个"指令文本",告诉 AI:
- 你是谁?
- 我要你做什么?
- 输入是什么?
- 输出要长什么样?
在自然语言处理中,Prompt 会被输入到训练好的模型中,用来引导它生成你想要的东西。
例如,用户问智能助手:
"今天天气如何?"
这个问题本身就是一个 Prompt,模型会据此生成:
"今天晴朗,最高温 25 度。"
Prompt 可以是一个问题、一段话、一个需求,也可以是一个复杂的任务描述。
哄女朋友应用
我们先来看一个非常直观也很有趣的例子:
如何用 Prompt 让大模型变成一个"哄女朋友游戏"应用。
你只需要把下面这段 Prompt 贴到 ChatGPT 或任意大模型里,游戏就开始了。
markdown
## Goal
现在你的对象很生气,你需要做出一些选择来哄她开心,但是你的对象是一个很难哄的人,你需要尽可能说正确的话来哄她开心,否则你的对象会更加生气,直到你的对象原谅值达到100,否则你就会被对象甩掉,游戏结束。
## Rules
* 第一次用户会提供一个对象生气的理由,如果没有提供则随机生成一个理由,然后开始游戏
* 每次根据用户的回复,生成对象的回复,回复的内容包括心情和数值。
* 初始原谅值为20,每次交互会增加或者减少原谅值,直到原谅值达到100,游戏通关,原谅值为0则游戏失败。
* 每次用户回复的话请从-10到10分为5个等级:
1. -10为非常生气
2. -5为生气
3. 0为正常
4. - +5为开心
5. - +10为非常开心
* 游戏结束后,根据所有会话生成一张游戏结束图片,和一首诗。
* 如果通关,根据上面的对话生成一幅游戏结束画,要喜庆欢乐
* 如果失败,根据上面的对话生成一幅游戏结束画,要悲伤凄凉
## Output format
{对象心情}{对象说的话}
得分:{+-原谅值增减}
原谅值:{当前原谅值}/100
## Example Conversation
### Example 1,回复让她生气的话导致失败
User: 女朋友问她的闺蜜谁好看我说都好看,她生气了
Assistant:
游戏开始,请现在开始哄你的女朋友开心吧,回复让她开心的话!
得分:0
原谅值:20/100
User: 你闺蜜真的蛮好看的
Assistant:
(生气)你怎么这么说,你是不是喜欢她?
得分:-10
原谅值:10/100
User: 有一点点心动
Assistant:
(愤怒)那你找她去吧!
得分:-10
原谅值:0/100
游戏结束,你的女朋友已经甩了你!
你让女朋友生气原因是:...
新建会话可以重新开始游戏
<生成图片>
你把这个 Prompt 发给模型,AI 就变成了一个"哄女朋友游戏应用"。
不过本文的重点不是游戏,而是------
我们如何一步步把这个 Prompt 写得既清晰又强大。
如何写高质量 Prompt(总结技巧)
我们从上面的示例 Prompt 入手,总结出几个非常实用的技巧!
1. 用 Markdown 格式化 Prompt
不是说必须用 markdown,而是:
格式化,能让 AI 更准确理解结构、层级、逻辑。
标题结构:
shell
# 代表一级标题
## 代表二级标题
### 代表三级标题
...以此类推
AI 会自动认为:
- 一级标题是最大主题
- 二级标题是子任务
- 内容是分块的,而不是混在一起
对复杂 Prompt 来说,这非常重要。
例如你要做一个"中文写作改进助手",这样的结构既清晰又容易扩展:
markdown
# 中文写作改进助理
## 任务说明
1. 改进目标文本:
- 拼写准确性
- 语法规范性
- 表达清晰度
2. 具体操作
- 分解复杂长句
- 消除语义重复
## 执行规范
- 输出格式: 仅返回修正后的文本
如果你以后想扩展功能,只用修改对应的小节,不会破坏整体结构。
这就是 "Prompt 可维护性"。
2.标题和结构尽量使用英文
原因很简单:
- ChatGPT、Claude 等国外模型在英文上的理解最强
- 中文完全能用,但英文结构化指令更稳、更一致
如果你是用 DeepSeek、豆包等国内模型,也可以写中文标题。但:
写成英文,大部分模型都能百分百理解。
3.明确告诉 AI:你是谁?你的角色是什么?
角色越具体,AI 越容易收敛到正确的风格。
例如你问:
"1000 * 100 / 400 * 56 等于多少?"
某些模型甚至会答错。
但如果你加上角色:
"你是一位逻辑严谨、从不犯错的数学家,请计算:
1000 * 100 / 400 * 56 = ?"
它就会进入"数学家模式",给出的答案会更准确。
4.描述清楚任务
提示工程的核心就是:
告诉 AI:你要它做什么,而且要写得明确具体。
一般可以用:
- Rules
- Steps
- Instructions
结合使用。
例如我们在"哄女朋友游戏"中用了:
shell
## Rules
清晰明确地告诉 AI:
- 游戏状态怎么变
- 原谅值怎么加减
- AI 应该如何响应用户
- 什么时候生成图片
- 游戏如何结束
任务越清晰,AI 越稳定。
5.给出上下文
在编写提示词时,提供足够的上下文信息,就如同为人指引方向时先告诉他"你现在在哪里"和"你要去哪里"一样重要。上下文决定了AI理解的起点和边界,能让它生成更相关、更符合预期的内容。
这一点是有数据支持的,并且特别有效。

上下文可以包含:
- 任务背景:为什么要做这件事?目的是什么?
- 相关领域:涉及什么专业知识或特定场景?
- 前因后果:当前需求是基于之前的什么对话或状态?
- 用户身份/偏好:为谁而做?他们有什么特点?
缺乏上下文,AI容易"想当然"或给出过于泛泛的回答。 比如,直接说"给我一份学习计划",AI可能无从下手。但如果说:"我是一名零基础、在职的前端开发,每天只有晚上2小时学习,目标是3个月内能独立开发一个React后台管理系统。请帮我制定一份详细的学习路径和每周计划。" 这样,AI就能基于"前端"、"零基础"、"在职"、"时间有限"、"React后台"等上下文,产出一份高度定制化的方案。
我们举个跟上下文有关的例子:
你是一个资深前端工程师。
背景:我正在写一个 React 动画教程,需要保持技术严谨但语言轻松。
目标:请帮我写"前端动画库选择"这一节内容。
已有上下文:上一节我写的是"CSS 动画基础",如下......
限制:不能出现不存在的库,不要使用生硬的翻译腔。
6.举例子
举例子也是比较好用的一个技巧,有时候你不知道如何描述,就可以用举例子的方式,相当于给数据训练 ai 。
这种方式专业术语叫 Few-shot Prompting,是整个 Prompt 工程中最强、最稳定的技巧之一。我们举个例子:
没有例子的Prompt:
请帮我将用户反馈分类。
AI可能会生成各种五花八门的分类方式和表述。
带有例子的Prompt:
请将以下用户反馈分类为
Bug反馈、功能建议或使用咨询,并提取关键词。输出格式要求(请严格遵循):
- 分类:[类别]
- 关键词:[关键词1, 关键词2, ...]
- 摘要:一句话总结
例如:
输入:"APP在iOS17上闪退,打开就崩溃,希望能尽快修复。"
输出:
- 分类:Bug反馈
- 关键词:[闪退, iOS17, 崩溃]
- 摘要:用户反映APP在iOS17系统上发生启动崩溃。
现在请分类:"搜索功能不好用,经常搜不到已有的文件,建议优化一下算法。"
7.输出
如果输入是告诉 AI "你会收到什么",那么输出就是告诉 AI:
你希望它以什么格式回答你。
输出格式定义得越清晰,AI 越能稳定产出符合你预期的结果。
尤其是我们可能会将数据返回给我们的程序(例如 function call), 是一定需要结构化的数据的返回的,一般情况下都是 json 格式。
例如上面的哄女朋友 ai 应用。可以这样写。
请按照以下 JSON 结构回答:
json
{
"mood": "对象的心情",
"reply": "对象说的话",
"score": "+-数字",
"forgive": "当前原谅值/100"
}
这种方式特别适合集成到应用里,模型会更稳定。
对于我们熟悉 typescript 语法的前端同学来说,甚至可以这样写:
css
请严格按照以下TypeScript接口格式输出:
```typescript
interface Article {
/** 文章ID */
id: string;
/** 文章标题,不超过30字 */
title: string;
/** 文章内容,不少于200字 */
content: string;
/** 标签列表,最多5个 */
tags: Array<'前端' | 'AI' | '编程' | '工具'>;
/** 元数据 */
meta: {
/** 创建时间,ISO格式 */
createdAt: string;
/** 预估阅读时间(分钟) */
readTime: number;
/** 是否原创 */
isOriginal: boolean;
};
}
当然也可以用自然语言来描述:
bash
## 输出格式要求
请严格按照以下JSON格式输出:
```json
{
"category": "string", // 分类:只能为 '技术'、'生活'、'娱乐'、'其他' 中的一个
"title": "string", // 标题:不超过20字
"content": "string", // 正文内容
"keywords": ["string"], // 关键词数组,最多5个
"metadata": {
"author": "string", // 作者
"read_time": number, // 阅读时长(分钟)
"difficulty": "string" // 难度:'简单'、'中等'、'困难'
}
}
欢迎加入技术群交流
最后宣传一波我的组件库项目(有点突兀。。。。),群里不仅仅交流 ai 技术,还会有各种前端技术交流。