基本概念与原理 #
Token:文本的基本单位 #
什么是 Token? #
Token 是大语言模型处理文本的最小单位。模型不会直接处理字符或单词,而是将文本切分成 Token 序列进行处理。
text
┌─────────────────────────────────────────────────────────────┐
│ Token 示例 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 英文文本: │
│ "Hello, World!" │
│ ↓ │
│ Tokens: ["Hello", ",", " World", "!"] │
│ Token 数量: 4 │
│ │
│ 中文文本: │
│ "你好,世界!" │
│ ↓ │
│ Tokens: ["你", "好", ",", "世", "界", "!"] │
│ Token 数量: 6 │
│ │
└─────────────────────────────────────────────────────────────┘
Token 计算规则 #
text
英文:
├── 常见单词:1 token
├── 生僻词:可能拆分为多个 token
└── 标点符号:通常 1 token
中文:
├── 常见汉字:1-2 tokens
├── 生僻字:可能更多
└── 标点符号:1 token
经验法则:
├── 英文:1000 tokens ≈ 750 words
└── 中文:1000 tokens ≈ 500-700 汉字
Token 的重要性 #
text
1. 成本计算
└── API 调用费用按 Token 数量计费
2. 长度限制
└── 上下文窗口有 Token 数量上限
3. 性能影响
└── Token 越多,处理时间越长
4. 提示词优化
└── 精简 Token 可提高效率
Token 优化技巧 #
text
❌ 冗长的提示词(消耗更多 Token):
"请你帮我仔细分析一下下面这段代码,看看有没有什么问题,
如果有问题的话请告诉我具体是什么问题,以及如何修改"
✅ 精简的提示词(节省 Token):
"分析以下代码的问题并给出修改建议:"
Temperature:控制随机性 #
什么是 Temperature? #
Temperature(温度)是控制模型输出随机性的参数,取值范围通常为 0-2。
text
┌─────────────────────────────────────────────────────────────┐
│ Temperature 效果示意 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Temperature = 0 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 输出最确定、最可预测的结果 │ │
│ │ 适合:事实性问答、代码生成 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Temperature = 0.7 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 平衡创造性和一致性 │ │
│ │ 适合:日常对话、内容创作 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Temperature = 1.5 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 高度随机、创意性强 │ │
│ │ 适合:创意写作、头脑风暴 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
Temperature 选择指南 #
| Temperature | 特点 | 适用场景 |
|---|---|---|
| 0 | 最确定、最一致 | 代码生成、数学计算、事实问答 |
| 0.3 | 较确定 | 技术文档、分析报告 |
| 0.7 | 平衡 | 日常对话、一般写作 |
| 1.0 | 较随机 | 创意写作、故事创作 |
| 1.5+ | 高度随机 | 头脑风暴、创意探索 |
Temperature 实例 #
text
提示词:"用一个词形容春天"
Temperature = 0:
"温暖"(每次都相同)
Temperature = 0.7:
"温暖" / "生机" / "明媚"(有变化但相关)
Temperature = 1.5:
"绽放" / "苏醒" / "诗意" / "希望"(更多创意)
Top-P:核采样 #
什么是 Top-P? #
Top-P(又称 Nucleus Sampling)控制模型从概率最高的 Token 中选择输出的范围。
text
┌─────────────────────────────────────────────────────────────┐
│ Top-P 工作原理 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 假设下一个词的概率分布: │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ "的" : 30% │ │
│ │ "是" : 25% │ │
│ │ "有" : 20% │ │
│ │ "在" : 15% │ │
│ │ "了" : 5% │ │
│ │ 其他 : 5% │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ Top-P = 0.5 │
│ └── 只从累计概率达到 50% 的词中选择 │
│ → 选择范围:"的"(30%) + "是"(25%) = 55% │
│ │
│ Top-P = 0.9 │
│ └── 从累计概率达到 90% 的词中选择 │
│ → 选择范围更广,更多样性 │
│ │
└─────────────────────────────────────────────────────────────┘
Top-P vs Temperature #
text
Temperature:
├── 改变概率分布的形状
├── 影响所有 Token 的选择概率
└── 更全局的控制
Top-P:
├── 限制候选 Token 的范围
├── 只考虑高概率 Token
└── 更局部的控制
推荐组合:
├── 精确任务:Temperature=0, Top-P=1
├── 平衡任务:Temperature=0.7, Top-P=0.9
└── 创意任务:Temperature=1, Top-P=0.95
上下文窗口(Context Window) #
什么是上下文窗口? #
上下文窗口是模型能够处理的最大 Token 数量,包括输入和输出。
text
┌─────────────────────────────────────────────────────────────┐
│ 上下文窗口结构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ 上下文窗口 │ │
│ │ ┌───────────┬───────────┬───────────┬───────────┐ │ │
│ │ │ 系统提示 │ 历史对话 │ 当前输入 │ 预留输出 │ │ │
│ │ │ System │ History │ Prompt │ Response │ │ │
│ │ └───────────┴───────────┴───────────┴───────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 总 Token 数 ≤ 上下文窗口大小 │
│ │
└─────────────────────────────────────────────────────────────┘
主流模型的上下文窗口 #
| 模型 | 上下文窗口 | 约等于汉字 |
|---|---|---|
| GPT-3.5 | 4K | 3,000 字 |
| GPT-4 | 8K | 6,000 字 |
| GPT-4 Turbo | 128K | 100,000 字 |
| Claude 3 Haiku | 200K | 150,000 字 |
| Claude 3 Opus | 200K | 150,000 字 |
| Gemini Pro | 1M | 750,000 字 |
上下文管理策略 #
text
策略一:精简提示词
─────────────────────────────────────────────────
删除不必要的信息,使用简洁表达
策略二:分段处理
─────────────────────────────────────────────────
将长文本分成多个部分分别处理
策略三:摘要压缩
─────────────────────────────────────────────────
先让模型生成摘要,再基于摘要继续对话
策略四:优先级排序
─────────────────────────────────────────────────
将重要信息放在提示词的开头或结尾
其他重要参数 #
Max Tokens(最大输出长度) #
text
控制模型输出的最大 Token 数量
示例:
Max Tokens = 100
└── 输出不会超过 100 个 Token
注意:
├── 设置过小可能导致输出被截断
├── 设置过大会增加成本
└── 需要根据任务需求合理设置
Frequency Penalty(频率惩罚) #
text
降低重复使用相同词的倾向
取值范围:-2.0 到 2.0
├── 正值:减少重复
├── 0:无惩罚
└── 负值:增加重复
适用场景:
├── 正值:避免重复表达
└── 负值:需要重复强调
Presence Penalty(存在惩罚) #
text
降低使用已出现过的词的倾向
取值范围:-2.0 到 2.0
├── 正值:鼓励新话题
├── 0:无惩罚
└── 负值:鼓励延续话题
适用场景:
├── 正值:需要广泛覆盖话题
└── 负值:需要深入探讨话题
模型的工作原理 #
预测下一个 Token #
大语言模型的核心是预测下一个最可能的 Token。
text
输入:"今天天气"
↓
模型计算每个 Token 的概率:
┌───────────────────────────────────────────────────────┐
│ "很好" : 25% │
│ "不错" : 20% │
│ "真棒" : 15% │
│ "晴朗" : 12% │
│ "多云" : 10% │
│ ... │
└───────────────────────────────────────────────────────┘
↓
根据 Temperature 和 Top-P 选择一个 Token
↓
输出:"很好"
注意力机制 #
模型通过注意力机制理解词与词之间的关系。
text
句子:"小明把苹果给了小红,她很开心"
注意力关系:
┌───────────────────────────────────────────────────────┐
│ "她" ← 注意到 → "小红" │
│ "开心" ← 注意到 → "小红" │
│ "苹果" ← 注意到 → "小明" │
└───────────────────────────────────────────────────────┘
模型理解:"她"指的是"小红"
提示词位置效应 #
开头效应 #
text
提示词开头的部分对输出影响更大
示例:
┌───────────────────────────────────────────────────────┐
│ "你是一位专业的 Python 开发者。请解释以下代码..." │
│ ↑ │
│ 角色设定放在开头,影响整个输出风格 │
└───────────────────────────────────────────────────────┘
结尾效应 #
text
提示词结尾的部分对最近输出影响更大
示例:
┌───────────────────────────────────────────────────────┐
│ "...请用简单的语言解释,避免使用专业术语。" │
│ ↑ │
│ 格式要求放在结尾,确保遵循 │
└───────────────────────────────────────────────────────┘
最佳实践 #
text
推荐结构:
┌───────────────────────────────────────────────────────┐
│ [角色设定] ← 开头 │
│ [任务描述] │
│ [上下文信息] │
│ [输入数据] │
│ [输出格式] ← 结尾 │
└───────────────────────────────────────────────────────┘
理解模型的局限性 #
知识截止日期 #
text
模型的知识有时间限制
GPT-4: 知识截止到 2023 年
Claude: 知识截止到 2023 年初
解决方案:
├── 提供最新的背景信息
├── 使用联网搜索功能
└── 明确说明时间范围
幻觉问题 #
text
模型可能生成看似合理但实际错误的信息
示例:
提示词:"请介绍《时间简史》的作者"
输出:"《时间简史》的作者是霍金,他出生于..."(可能包含错误细节)
解决方案:
├── 要求标注不确定性
├── 提供参考资料
├── 交叉验证关键信息
└── 使用更可靠的模型版本
推理能力限制 #
text
复杂推理任务可能出错
解决方案:
├── 使用 Chain of Thought
├── 分步骤提问
├── 要求展示推理过程
└── 验证中间结果
下一步 #
现在你已经掌握了 Prompt Engineering 的核心概念,接下来学习 快速开始,动手编写你的第一个提示词!
最后更新:2026-04-05