首页/报错百科/context_length_exceeded:上下文超长怎么解决
ERROR CODE 400 · 高频

context_length_exceeded:上下文超长怎么解决

上下文超限的四种修法:裁剪历史、摘要化、分段处理、换长窗口模型,附 token 估算方法。

更新 2026-10-28 核验 2026-10-28 · 码农阿风 上下文token超长

30 秒结论

这次请求的 token 总数超过了模型窗口。 注意:输入 + 输出都算,输出还要预留 max_tokens。

报错原文对照

{'error': {'message': "This model's maximum context length is 128000 tokens. However, your messages resulted in 135000 tokens.", 'type': 'invalid_request_error', 'code': 'context_length_exceeded'}}

{"type":"error","error":{"type":"invalid_request_error","message":"prompt is too long: 210000 tokens > 200000 maximum"}}

原因排序

概率原因
45%历史消息没裁剪,越聊越长
30%塞了长文档 / 大段代码
15%max_tokens 设太大,挤占输入空间
10%模型窗口本身就小(8K/16K)

修法

1. 裁剪历史

只保留最近 N 轮 + 第一条(通常第一条最重要)。中间的丢掉或摘要。

def trim(messages, keep_first=1, keep_last=10):
    if len(messages) <= keep_first + keep_last:
        return messages
    return messages[:keep_first] + messages[-keep_last:]

2. 长文档先摘要

不要把整本书塞进去。先分块摘要,再把摘要喂给主模型。

3. 换大窗口模型

模型档位典型窗口
小模型(mini/flash)128K
中端200K
长上下文专用1M

我们的模型库可以按上下文排序筛。

责任判定表

现象责任方
报错里明确说超了多少 token你的输入
明明内容不长也报站点把窗口改小了(有些中转站会缩水)
只有某家站报那家站限制更严

一个常被忽略的点

很多中转站会把 200K 窗口标称成 "1M"。实测方法:发一个超长 prompt 看在哪一步报错。

你在这个站点上遇到过这个问题?

认领站点后可补充证据、申请公开核验;认证不改榜单排序,只对应可复核的检测与复测。

认领 / 申请认证

双确认订阅,可随时退订。不发广告,不卖排名。