WMX · 随记
·AI· 3 分钟阅读

上下文预算:给模型输出预留空间

把检索片段一直追加到提示词里,可能在提交请求时超过上下文限制。只检查用户输入长度,会忽略系统指令、历史对话和输出预留。

▶ 本文含视频讲解
▶ 教学视频手动播放 · 英语讲解

Intro to Large Language Models

结合模型讲解理解本文实验的背景;正文提供可独立运行的简化示例。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。

播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。

AI 系列概览:模型机制、系统边界与效果评估
AI 系列概览:模型机制、系统边界与效果评估 点击图片查看大图 ↗

问题从哪里出现

把检索片段一直追加到提示词里,可能在提交请求时超过上下文限制。只检查用户输入长度,会忽略系统指令、历史对话和输出预留。

理解核心机制

预算应覆盖全部输入组成,再根据所用模型的限制预留输出空间。下面直接使用假设已计数的 token 数演示预算账本,不把字符数或空格分词当作真实 tokenizer。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。

Python12 行 · 可横向滚动
context_limit = 8192
parts = {"instructions": 400, "history": 2200, "question": 120}
reserved_output = 1200
remaining = context_limit - sum(parts.values()) - reserved_output
chunks = [800, 950, 1200, 1600]
selected = []
for size in chunks:
    if size <= remaining:
        selected.append(size)
        remaining -= size
assert sum(parts.values()) + sum(selected) + reserved_output <= context_limit
print(selected, remaining)

适用边界与常见误区

这些数字是教学输入,不是模型实测值。真实系统要用对应 tokenizer 和消息格式计数,并检查模型是否另有输入或输出上限。填满窗口也不保证模型有效利用全部信息。

继续练习

把历史记录增大一倍,比较删除最旧对话、摘要历史和减少检索片段的效果,并保留问题与关键约束。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档