LLM 原理与 Token
tokens、context、how-llms-work、top-p/top-k。
35 分钟
LLM 原理与 Token
大语言模型 按上文预测下一个 token,不是数据库检索。作为 AI 工程师,你要会估算 上下文占用、采样参数与成本,并在设计 RAG/Agent 时预留窗口。对应 ai-engineer 的 how-llms-work 节点。
学习目标
- 理解 token、context window、训练截止与推理阶段
- 会用 temperature、top-p、top-k 控制输出随机性
- 说清幻觉为何无法「彻底修掉」,只能工程缓解
Token 与上下文
- Token:模型读写的最小单位;中文常 1 字 ≈ 1 token,英文约 4 字符 ≈ 1 token
- Context window:单次请求可见上限(8K / 128K / 200K…)
- 输入 + 输出 共用窗口;RAG 塞太多 chunk 会挤掉用户问题或历史
def estimate_tokens(text: str) -> int:
# 伪代码:生产用 tiktoken 或厂商 tokenizer
return len(text) # 中文粗估:字符数
budget = 128_000
system = 2_000
retrieved = 20_000
user_query = 500
# 留给生成的 output 上限 ≈ budget - system - retrieved - user_query
训练 vs 推理
| 阶段 | 内容 | 对工程的影响 |
|---|---|---|
| 预训练 | 海量文本学统计 | 知识有截止日期 |
| 对齐 / SFT | 指令跟随、安全 | 拒答、风格固定 |
| RLHF 等 | 人类偏好 | 不同厂商行为差异 |
| 推理 | 给定 prompt 生成 | 延迟、账单、可复现性 |
模型 未运行你的代码;它续写「像正确回答的文本」。验证靠测试与文档,见 ai-engineering-essentials 的质量门禁。
采样参数
| 参数 | 作用 | 典型场景 |
|---|---|---|
| temperature | 越高越随机 | 创意 0.7+;代码/JSON 0–0.3 |
| top-p | 核采样,截断长尾 | 与 temperature 二选一微调 |
| top-k | 只从概率最高的 k 个 token 采 | 旧模型常用 |
| max_tokens | 输出上限 | 防账单失控 |
同一 prompt 非零 temperature 时结果可能不同;评测与回归测试宜固定 seed 或 temperature=0(若 API 支持)。
幻觉与缓解
幻觉 = 高置信的错误续写。缓解手段:
- Grounding:RAG 只许引用检索片段(见 aen-rag)
- 工具:让模型查 API/DB,而非凭记忆(见 aen-agents)
- 约束输出:JSON schema、函数参数校验(见 aen-prompt)