Context
模型一次能"看见"的全部信息,以及怎么在有限窗口里塞对东西。
一定义
Context(上下文)是模型在一次前向推理中能同时看见的全部 token。系统提示、用户消息、历史回合、工具返回结果,都拼在一起,塞进一个固定大小的上下文窗口(context window)。
二为什么重要
窗口不是无限的。哪怕是 200K token 的窗口,塞太满也会:
- 让推理变慢、成本变高;
- 让模型"注意力涣散",中间的内容被忽略;
- 触发模型的"上下文焦虑"—— 老把回复往长里写。
怎么塞、塞什么、什么时候清掉,是 Agent 工程的核心手艺。
三典型结构
[ system prompt ] ← 固定,几百到几千 token
[ 用户当前问题 ] ← 几十到几百 token
[ 历史对话 ] ← 累积,可能上千 token
[ 工具返回结果 ] ← 检索文档、API 返回
[ 上一轮思维链 ] ← 可选,ReAct / CoT
───────────────
总 token < context_window
四最小可跑的例子
from openai import OpenAI
client = OpenAI()
messages = [
{"role": "system", "content": "你只用一句中文回答。"},
{"role": "user", "content": "1+1=?"},
]
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
max_tokens=50, # 限制输出,也是 context 的一部分
)
print(resp.choices[0].message.content)
# 二。
五常见误区
- 塞满窗口 = 充分利用 —— 错。模型对窗口中段的注意力最弱,关键信息要放头尾。
- 不切分历史 —— 几轮对话之后,早期内容会被稀释,需要主动摘要或丢弃。
- 把 RAG 结果塞进同一个 context —— 检索质量差时,会让模型更糊涂。要先粗筛再精排。
- 忽视 token 计费 —— 输入输出都计费,长 context 直接拖慢响应 + 拉高成本。