共计 2031 个字符,预计需要花费 6 分钟才能阅读完成。
1. 基础概念:理解 LLM 的 ” 语言单位 ”
在 LLM 开发中,Token是最小的处理单位。它不等同于单词或字母——例如:

- 英文单词 ”unhappy” 会被拆解为
["un", "happy"]两个 Token - 中文短语 ” 人工智能 ” 可能被编码为
["人工", "智能"](不同模型分词方式不同)
计算 Token 数量的 Python 示例(使用 OpenAI 的 tiktoken 库):
import tiktoken
def count_tokens(text: str, model_name: str = "gpt-4") -> int:
try:
encoding = tiktoken.encoding_for_model(model_name)
return len(encoding.encode(text))
except KeyError:
print(f"Warning: Model {model_name} not found. Using default encoding.")
encoding = tiktoken.get_encoding("cl100k_base")
return len(encoding.encode(text))
# 示例用法
print(count_tokens("你好,人工智能助手!")) # 输出: 7 (以实际模型为准)
2. Context Window:模型的 ” 记忆边界 ”
Context Window决定了模型能处理的最大 Token 数量。当前主流模型的典型值:
| 模型 | Context Window |
|---|---|
| GPT-3.5-turbo | 4k tokens |
| GPT-4 | 8k/32k tokens |
| Claude 3 | 200k tokens |
当输入超过这个限制时,常见解决方案:
- 截断法:保留最后 N 个 Token(可能丢失关键信息)
- 摘要法:用另一个 LLM 生成前文摘要
- 分块法:将长文档拆分成多个片段处理
3. Prompt 工程:与模型对话的艺术
System Prompt 设计模板
system_prompt = """
你是一个专业的技术文档助手,需要遵守以下规则:1. 使用中文回答
2. 对复杂概念提供比喻解释
3. 当不确定答案时明确告知用户
当前对话上下文:{context}
"""
用户 Prompt 优化技巧
- 具体性:避免 ” 请解释 AI”,改为 ” 用比喻解释神经网络如何学习 ”
- 结构化:使用 ” 首先 … 其次 … 最后 ” 等引导词
- 示例法:提供输入输出样例(Few-shot learning)
4. 从单次交互到 Agent 系统
基础 Agent 循环实现示例:
from typing import List, Dict
class SimpleAgent:
def __init__(self, system_prompt: str):
self.memory: List[Dict] = []
self.system_prompt = system_prompt
def respond(self, user_input: str) -> str:
# 构建完整 Prompt
full_prompt = f"""{self.system_prompt}
---
历史对话:
{self._format_memory()}
---
用户最新输入: {user_input}"""
# 调用 LLM API(伪代码)response = call_llm_api(full_prompt)
# 更新记忆
self.memory.append({"user": user_input, "agent": response})
return response
def _format_memory(self) -> str:
return '\n'.join([f"用户: {m['user']}\n 助手: {m['agent']}" for m in self.memory[-3:]])
5. 生产环境避坑指南
| 问题类型 | 解决方案 |
|---|---|
| Context 长度超限 | 实时监控 Token 消耗,动态清除最早的历史消息 |
| Prompt 注入攻击 | 对用户输入进行关键词过滤,设置系统角色边界 |
| Tool 调用超时 | 设置 5 -10 秒超时限制,提供降级响应 |
| 多轮对话记忆混乱 | 使用向量数据库存储历史,按相关性检索 |
| API 费用失控 | 实施请求限流,对高 Token 消耗操作需二次确认 |
6. 性能与成本的平衡艺术
Context Window 大小的影响公式:
总成本 ≈ 输入 Token 数 × 输入单价 + 输出 Token 数 × 输出单价
延迟时间 ≈ 基础延迟 + (总 Token 数 / 处理速率)
优化建议:
– 对实时性要求高的场景选择 4k 窗口模型
– 文档分析类任务选用大窗口模型减少 API 调用次数
– 长文本处理时优先压缩非关键信息
延伸学习路线
- 官方文档精读:
- OpenAI Tokenizer
- HuggingFace Transformers
- 实验建议:
- 比较不同分词器对同一文本的 Token 切分结果
- 设计 System Prompt 控制 LLM 输出格式(JSON/XML/Markdown)
- 进阶方向:
- 实现带有工具调用 (Tool) 的 Agent
- 探索 ReAct 推理框架
(注:本文代码示例需要根据实际使用的 LLM API 调整调用方式,类型标注基于 Python 3.9+ 语法)
正文完
