使用场景
- 长文档问答:把合同、报告、论文或产品文档作为上下文,让模型回答与材料相关的问题。
- 文档总结与对比:对长篇材料进行摘要、提纲整理、差异对比或风险点提取。
- 代码库理解:输入多个文件、调用链或错误日志,让模型分析实现逻辑、定位问题或提出修改建议。
- 多轮对话延续:在会话中保留必要历史,让模型理解前文约束和用户偏好。
- RAG 结果整合:把检索到的多个片段放入上下文,让模型基于证据生成答案。
支持的模型
不同模型支持的上下文窗口不同。使用前请在 模型广场 查看模型详情,确认模型的上下文长度、最大输出长度、价格和能力支持情况。上下文窗口、最大输出长度和价格属于易变信息。正式接入时,请以模型广场展示的模型详情为准,不要只依赖文档中的示例模型。
工作机制
一次模型请求中的上下文通常由以下内容组成:system消息中的角色、规则和输出要求。user消息中的当前问题、任务说明和待处理材料。- 历史
assistant/user消息。 - 应用注入的文档片段、检索结果、代码、日志或结构化数据。
- 模型本次需要生成的输出预算。
messages 中的历史消息也会作为当前请求上下文的一部分传入。保留更多历史可以帮助模型理解前文,但也会占用上下文窗口;如果历史过长,建议只保留必要轮次,或将历史整理成摘要后再传入。
典型流程如下:
- 选择支持足够上下文长度的模型。
- 清理和组织要传入的材料,去除无关内容。
- 在 prompt 中明确任务、材料边界和输出格式。
- 设置合理的
max_completion_tokens,为最终回答预留输出空间。 - 发送请求并根据结果判断是否需要拆分材料、补充检索或调整 prompt。
与 RAG 和 Prompt Cache 的关系
Long Context、RAG 和 Prompt Cache 解决的问题不同:本页只说明 Long Context 的使用方式。Prompt Cache / Context Cache 是否可用、如何开启以及如何计费,请以对应能力文档或 API 指南为准。
关键参数
messages:承载系统提示、用户问题、历史对话和长材料。长材料应有清晰边界,避免模型混淆材料正文和用户指令。model:选择具体模型。不同模型的上下文窗口和最大输出长度不同,请以模型广场为准。max_completion_tokens:控制模型本次生成的最大输出长度。处理长输入时,不要把全部上下文预算都留给输入,应为输出预留空间。如果输出达到该上限,响应可能以finish_reason: "length"结束,内容可能被截断。stream:长回复场景可以设置为True,让客户端边接收边展示输出,降低等待体感。
对于会生成 reasoning 内容的模型,推理过程也可能占用输出预算。如果
max_completion_tokens 设置过小,可能出现最终回答被截断,甚至 content 为空的情况。使用建议
- 先判断是否真的需要长上下文:如果问题只依赖少量片段,优先传入最相关内容,而不是整份材料。
- 保留材料结构:为不同文档、章节、代码文件或检索结果添加标题和分隔符,帮助模型识别信息边界。
- 减少无关内容:上下文越长,成本和延迟通常越高;无关信息过多也可能干扰模型判断。
- 明确任务和依据范围:说明模型应基于哪些材料回答,是否可以使用通用知识,以及输出应采用什么格式。
- 为输出预留空间:长输入场景仍需要设置合理的
max_completion_tokens,避免回答被截断。 - 为 reasoning 和最终回答预留预算:如果模型会生成 reasoning 内容,请同时考虑推理过程和最终回答对输出预算的占用。
- 长回复结合 Streaming:如果预期输出较长,可以启用
stream=True,让用户更早看到生成结果。 - 设置更长的客户端超时:超长输入会增加处理时间,不同模型的响应延迟可能差异明显。生产环境中应结合模型、输入长度和网络情况设置超时策略。
- 大规模知识库优先结合检索:如果材料远超单个请求可承载范围,或问题只需要局部信息,建议先用 Embedding / RAG 找到相关片段,再交给模型生成答案。
限制说明
- 不同模型的上下文窗口、最大输出长度和计费方式不同,请以模型广场为准。
- 长上下文会增加输入 token 数,通常也会增加成本和响应延迟。
- 上下文更长不一定意味着结果更好。过多无关、重复或冲突的信息可能降低回答质量。
- 如果输入和预期输出超过模型限制,请减少输入内容、拆分任务,或选择上下文窗口更大的模型。
- 模型不会自动记住前一次请求中没有再次传入的内容。需要延续上下文时,应用应显式传入必要历史或摘要。
- 单次请求成功处理较长输入,不代表该模型或平台的最大上下文上限。最大上下文长度、最大输出长度和超限行为请以模型详情和实际 API 返回为准。
- 长上下文请求可能返回
usage.prompt_tokens、usage.completion_tokens等用量信息;部分模型还可能返回 reasoning tokens 或 cached tokens 等明细字段。具体字段和计费口径请以 API 指南和用量统计页面为准。 - 与 Structured Output、Function Calling、Streaming、RAG 或缓存能力组合使用时,请分别确认相关能力的支持范围和参数要求。
调用示例
示例使用环境变量读取 API Key,避免将密钥写入代码。- 将长材料放入
user消息。 - 使用明确的分隔符标记材料边界。
- 要求模型只基于给定材料回答。
- 设置
max_completion_tokens,为输出预留预算。
