快速开始 #
你的第一个提示词 #
最简单的提示词 #
让我们从一个最简单的例子开始:
提示词:
你好
输出:
你好!很高兴见到你。有什么我可以帮助你的吗?
这是最基础的交互形式,但实际应用中我们需要更精确的控制。
一个完整的提示词 #
┌─────────────────────────────────────────────────────────────┐
│ 完整提示词示例 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 角色:你是一位经验丰富的 Python 开发者 │
│ │
│ 任务:请解释以下代码的功能 │
│ │
│ 代码: │
│ def fibonacci(n): │
│ if n <= 1: │
│ return n │
│ return fibonacci(n-1) + fibonacci(n-2) │
│ │
│ 要求: │
│ 1. 用简单的语言解释 │
│ 2. 说明时间复杂度 │
│ 3. 给出一个使用示例 │
│ │
└─────────────────────────────────────────────────────────────┘
基础技巧 #
技巧一:明确角色 #
设定角色可以让 AI 以特定视角回答问题。
❌ 没有角色设定:
"解释什么是机器学习"
✅ 有角色设定:
"你是一位面向初学者的计算机科学教师,请用简单的语言
和生活中的例子解释什么是机器学习"
技巧二:具体描述 #
越具体的描述,越能得到满意的答案。
❌ 模糊的描述:
"写一篇文章"
✅ 具体的描述:
"请写一篇关于人工智能在医疗领域应用的文章:
- 目标读者:医疗从业者
- 文章长度:约 800 字
- 内容要求:包含 3 个具体应用案例
- 写作风格:专业但易懂"
技巧三:提供示例 #
通过示例让 AI 理解你期望的输出格式。
提示词:
请按照以下格式提取信息:
示例:
输入:张三,男,28岁,软件工程师
输出:{"name": "张三", "gender": "男", "age": 28, "job": "软件工程师"}
现在请处理:
输入:李四,女,35岁,产品经理
输出:
技巧四:分步骤 #
将复杂任务分解为多个步骤。
❌ 一次性要求:
"分析这段代码的所有问题并给出优化方案"
✅ 分步骤:
"请分步骤分析以下代码:
步骤 1:识别代码中的潜在问题
步骤 2:解释每个问题的影响
步骤 3:给出具体的优化建议
步骤 4:提供优化后的代码示例"
技巧五:设定约束 #
明确告诉 AI 什么能做、什么不能做。
提示词:
"请解释量子计算的基本原理,要求:
- 使用高中物理水平的语言
- 不要使用复杂的数学公式
- 必须包含一个生活中的类比
- 字数控制在 300 字以内"
实战练习 #
练习一:文本摘要 #
任务:将一篇长文章压缩成简短摘要
提示词模板:
─────────────────────────────────────────────────
请将以下文章压缩成一段 100 字以内的摘要,
保留最重要的信息:
[文章内容]
摘要:
─────────────────────────────────────────────────
示例:
提示词:
请将以下文章压缩成一段 100 字以内的摘要:
人工智能(AI)正在改变各行各业。在医疗领域,
AI 可以帮助医生更准确地诊断疾病;在金融领域,
AI 用于风险评估和欺诈检测;在教育领域,
AI 提供个性化学习体验。然而,AI 的发展也带来
了挑战,如就业影响、隐私保护和伦理问题。
专家认为,需要在技术进步和社会责任之间找到平衡。
输出:
AI 正在改变医疗、金融、教育等行业,提升效率和服务质量。
但同时也带来就业、隐私和伦理等挑战,需要在技术进步与
社会责任之间寻求平衡。
练习二:信息提取 #
任务:从非结构化文本中提取结构化信息
提示词模板:
─────────────────────────────────────────────────
从以下文本中提取关键信息,以 JSON 格式输出:
文本:[文本内容]
输出格式:
{
"field1": "value1",
"field2": "value2"
}
─────────────────────────────────────────────────
示例:
提示词:
从以下文本中提取人物信息,以 JSON 格式输出:
文本:
王明是一位来自北京的软件工程师,今年32岁。
他毕业于清华大学计算机系,现在在一家互联网公司工作,
擅长 Python 和 Java 编程。
输出:
{
"name": "王明",
"city": "北京",
"profession": "软件工程师",
"age": 32,
"university": "清华大学",
"major": "计算机系",
"skills": ["Python", "Java"]
}
练习三:代码解释 #
任务:解释代码的功能和工作原理
提示词模板:
─────────────────────────────────────────────────
请解释以下代码的功能:
```[语言]
[代码]
要求:
- 说明代码的整体功能
- 解释关键步骤
- 分析时间复杂度 ─────────────────────────────────────────────────
示例: 提示词: 请解释以下 Python 代码的功能:
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
输出: 这是一个快速排序算法的实现。
整体功能: 将一个无序列表按升序排列。
关键步骤:
- 基准情况:如果列表长度小于等于1,直接返回
- 选择基准:取中间元素作为基准值
- 分区:将元素分为小于、等于、大于基准三部分
- 递归:对左右两部分递归排序
时间复杂度:
- 平均情况:O(n log n)
- 最坏情况:O(n²),当每次选择的基准都是最大或最小值时
### 练习四:文本转换
任务:将文本从一种格式转换为另一种格式
提示词模板: ───────────────────────────────────────────────── 请将以下 [格式A] 转换为 [格式B]:
[原始内容] ─────────────────────────────────────────────────
示例: 提示词: 请将以下 JSON 数据转换为 Markdown 表格:
[ {“name”: “张三”, “age”: 25, “city”: “北京”}, {“name”: “李四”, “age”: 30, “city”: “上海”}, {“name”: “王五”, “age”: 28, “city”: “广州”} ]
输出:
| name | age | city |
|---|---|---|
| 张三 | 25 | 北京 |
| 李四 | 30 | 上海 |
| 王五 | 28 | 广州 |
### 练习五:问题解答
任务:回答问题并提供解释
提示词模板: ───────────────────────────────────────────────── 请回答以下问题,并解释你的推理过程:
问题:[问题内容]
要求:
- 给出明确答案
- 解释推理过程
- 如果不确定,请说明 ─────────────────────────────────────────────────
示例: 提示词: 请回答以下问题,并解释你的推理过程:
问题:Python 中 list 和 tuple 的主要区别是什么?
输出: 答案:list 是可变的,tuple 是不可变的。
详细解释:
-
可变性
- list:创建后可以修改、添加、删除元素
- tuple:创建后不能修改
-
语法
- list:使用方括号 [1, 2, 3]
- tuple:使用圆括号 (1, 2, 3)
-
性能
- tuple 比 list 更快,占用内存更少
-
使用场景
- list:需要频繁修改的数据集合
- tuple:不需要修改的数据,如坐标、配置
示例代码: my_list = [1, 2, 3] my_list[0] = 10 # 可以修改
my_tuple = (1, 2, 3) my_tuple[0] = 10 # 报错:不能修改
## 常见问题与解决
### 问题一:回答太长或太短
问题:AI 的回答长度不符合预期
解决方案: ├── 明确指定字数或段落数 ├── 使用"简短回答"或"详细解释"等关键词 └── 提供期望长度的示例
示例: “请用 3-5 句话简要回答…” “请详细解释,至少包含 500 字…”
### 问题二:回答偏离主题
问题:AI 的回答与问题不相关
解决方案: ├── 重新组织问题,使其更清晰 ├── 提供更多上下文 ├── 使用"只回答…"来限制范围 └── 将复杂问题拆分为多个简单问题
示例: “请只回答关于性能优化的问题,不要涉及其他方面”
### 问题三:格式不符合预期
问题:输出的格式不是想要的格式
解决方案: ├── 明确指定输出格式 ├── 提供格式示例 ├── 使用结构化要求
示例: “请以以下 JSON 格式输出: { "title": "标题", "content": "内容", "tags": ["标签1", "标签2"] }”
### 问题四:回答不一致
问题:相同问题得到不同回答
解决方案: ├── 降低 Temperature 参数 ├── 使用更明确的指令 ├── 要求"确定性回答"
示例: “请给出确定性的答案,不要使用’可能’、'也许’等不确定词汇”
### 问题五:专业术语过多
问题:回答中包含太多专业术语
解决方案: ├── 指定目标受众 ├── 要求使用简单语言 ├── 要求解释专业术语
示例: “请用小学生能理解的语言解释…” “如果使用专业术语,请同时给出通俗解释”
## 提示词模板库
### 通用问答模板
你是一位 [角色]。 请回答以下问题:[问题] 要求:
- [要求1]
- [要求2] 输出格式:[格式]
### 文本处理模板
请对以下文本进行 [操作]:
文本: [文本内容]
要求:
- [要求1]
- [要求2]
输出格式:[格式]
### 代码相关模板
作为一位 [语言] 专家,请 [任务]:
代码:
[代码]
要求:
- [要求1]
- [要求2]
### 写作模板
请写一篇关于 [主题] 的 [文体]。
要求:
- 目标读者:[受众]
- 文章长度:[字数]
- 写作风格:[风格]
- 必须包含:[要素]
请开始写作:
## 学习检查清单
完成以下练习,确保你掌握了基础技能:
□ 能够编写包含角色设定的提示词 □ 能够明确指定输出格式 □ 能够使用示例引导输出 □ 能够将复杂任务分解为步骤 □ 能够设定合理的约束条件 □ 能够处理常见的输出问题 □ 建立了自己的提示词模板库
## 下一步
恭喜你完成了 Prompt Engineering 的基础学习!接下来学习 [提示词结构设计](/docs/prompt-engineering/structure),深入了解如何构建专业的提示词框架。