基本概念与原理 #

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