news 2026/9/12 20:47:54

GPT Researcher 用 Claude、GPT-5 等长输出模型报告被截断时怎么调整 SMART_TOKEN_LIMIT

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GPT Researcher 用 Claude、GPT-5 等长输出模型报告被截断时怎么调整 SMART_TOKEN_LIMIT

GPT Researcher 用 Claude、GPT-5 等长输出模型报告被截断时怎么调整 SMART_TOKEN_LIMIT

【免费下载链接】gpt-researcherAn autonomous agent that conducts deep research on any data using any LLM providers项目地址: https://gitcode.com/GitHub_Trending/gp/gpt-researcher

用 GPT Researcher 跑研究时,如果把SMART_LLM换成 Claude 4.x 或 GPT-5 这类输出能力更强的模型,生成的报告可能在段落中间突然结束、内容不完整。官方文档明确说明:默认的 token 限制是按 GPT-4o 级别模型(16k 最大输出)校准的,对于输出容量更大的模型,需要把SMART_TOKEN_LIMIT及相关变量提高到默认值之上,否则会出现截断报告(truncated reports)。LLM 配置文档 中专门用一段引用块提示了这一点,并指向 配置文档 的推荐值表格。本文按"确认问题 → 选值 → 配置 → 验证"的顺序给出操作路径。

确认截断是否由 token 限制引起

SMART_TOKEN_LIMIT控制 smart LLM 响应的最大 token 数,即研究报告、推理这类 smart 操作的输出上限(config.md 中对它的定义是 "Maximum token limit for smart LLM responses")。研究报告生成时,SMART_TOKEN_LIMIT会作为max_tokens传入 LLM 调用(见 report_generation.py),所以报告长度被卡在这个值上时,模型就会在中途停写。

两个文档中记录过的截断现象,可以作为判断参考:

  • 深度研究报告不完整、结果不一致,issue 归因于 token limits 和 provider TPM caps,维护者的处理建议就是调高SMART_TOKEN_LIMIT(ISSUE_BACKLOG.md 中 #1378)。
  • 多 Agent 场景下,reviewer 的 JSON 输出因SMART_TOKEN_LIMIT过低被截断、无法修复,导致修复循环一直转(同上文件 #1137)。

另外,SMART_TOKEN_LIMIT有硬性上限 200000(防止写错的 sanity guard)。如果值被误配得超过 200k,llm.py 中的create_chat_completion会直接抛出ValueError,错误信息会提示:

max_tokens=... exceeds the largest output limit of any currently available model (128k as of late 2025). Check your FAST_TOKEN_LIMIT / SMART_TOKEN_LIMIT / STRATEGIC_TOKEN_LIMIT env vars for typos.

出现这条报错时,问题不是"值太小",而是环境变量写错了。

一个需要注意的默认值差异:config.md 写SMART_TOKEN_LIMIT默认值是6000,而仓库内 default.py 当前默认值是12000(同文件中FAST_TOKEN_LIMIT6000STRATEGIC_TOKEN_LIMIT8000)。两处不一致,判断当前环境实际生效的默认值时,以你安装的版本中default.py为准。

按所用模型选择推荐值

config.md 给出的长输出模型推荐值如下:

模型系列最大输出推荐 SMART_TOKEN_LIMIT
GPT-4o / GPT-4.116k8000
Claude Haiku 4.564k16000
Claude Sonnet 4.664k16000
Claude Opus 4.7128k32000
GPT-5 系列128k32000

两点配套说明(均来自同一文档):

  • 如果你的FAST_LLMSTRATEGIC_LLM用的是不同的模型,需要给FAST_TOKEN_LIMITSTRATEGIC_TOKEN_LIMIT按同样比例设置相应数值。
  • 对于 reasoning 模型,这个限制在 default.py 的注释中说明会映射到max_completion_tokens,该额度同时覆盖 reasoning tokens,因此在可见输出之上还需要预留余量;llm.py 中对应注释也说"预算需要额外的 headroom"。

配置方法

文档给出两条路径:改.env/ 手动 export,或者提供外部 JSON 配置文件。

方式一:环境变量(.env 或 export)

config.md 说明可以直接在.env文件中添加与配置项同名的变量,或在本地手动 export。以 GPT-5 系列模型为例:

export SMART_TOKEN_LIMIT=32000

如果 fast/strategic 角色也换了长输出模型,按比例追加,例如:

export FAST_TOKEN_LIMIT=16000 export STRATEGIC_TOKEN_LIMIT=16000

方式二:外部 config.json

也可以在config_path参数中指定一个自定义 JSON 文件,格式需与默认 config 的键一致(下面按文档示例格式裁剪,只保留与本文相关的键,SMART_TOKEN_LIMIT按上表 GPT-5 系列的推荐值 32000 填写):

{ "SMART_LLM": "openai:gpt-5.4", "FAST_TOKEN_LIMIT": 16000, "SMART_TOKEN_LIMIT": 32000, "STRATEGIC_TOKEN_LIMIT": 16000 }

启动时指定该文件(命令来自 config.md):

python gpt_researcher/main.py --config_path my_config.json

如果同时使用 Anthropic 模型,SMART_LLM等变量需按 llms.md 的 Anthropic 章节设置(如SMART_LLM=anthropic:claude-3-opus-20240229),并确保安装了langchain-anthropic(Docker 场景需要把该依赖加入 requirements.txt)。

验证配置是否生效

用官方 LLM 连通性脚本做基础验证

testing-your-llm.md 提供了一个验证 LLM 环境变量配置是否正确的代码片段(仓库中对应文件为 test-your-llm.py),它读取当前Config里的smart_token_limit并实际发起一次调用:

from gpt_researcher.config.config import Config from gpt_researcher.utils.llm import create_chat_completion import asyncio from dotenv import load_dotenv load_dotenv() async def main(): cfg = Config() try: report = await create_chat_completion( model=cfg.smart_llm_model, messages = [{"role": "user", "content": "sup?"}], temperature=0.35, llm_provider=cfg.smart_llm_provider, stream=True, max_tokens=cfg.smart_token_limit, llm_kwargs=cfg.llm_kwargs ) except Exception as e: print(f"Error in calling LLM: {e}") # Run the async function asyncio.run(main())

这个脚本的作用是确认 provider、模型名和 token 限制这套组合能正常调通:出现Error in calling LLM: ...说明环境变量或依赖有问题,需要先解决它再谈报告截断。

重跑研究任务确认报告完整

基础调通后,用与截断时相同的研究任务重跑一次。文档给出的目标结果就是"avoid truncated reports":报告应能完整生成,而不是在半句处中断。注意 llms.md 同时提醒,GPT Researcher 是在 GPT 模型上优化和大量测试的,其他模型可能会遇到 context limit 错误和异常响应——如果调高SMART_TOKEN_LIMIT后问题依旧,先核对模型名是否被 provider 正确支持,而不是继续加大这个值。

边界与已知限制

  • 硬性上限 200kSMART_TOKEN_LIMIT超过 200000 会触发ValueError(见上文报错信息),这是防笔误的保护,不是可突破的配额。
  • reasoning 模型额度共享:对 reasoning 模型,max_completion_tokens同时覆盖 reasoning tokens 和可见输出,文档注释建议在可见输出之上预留余量,取值时不要只按最终报告长度估算。
  • provider 侧限制仍然存在:issue #1378 中截断的成因除了 token limits,还包括 provider TPM caps。调高SMART_TOKEN_LIMIT解决的是本项目侧的输出上限,provider 的配额限制需要另行处理。
  • 多 Agent 场景:低SMART_TOKEN_LIMIT导致 JSON 被截断还会引发 reviewer 修复循环(issue #1137),调高该值是消除这一现象的前提。

【免费下载链接】gpt-researcherAn autonomous agent that conducts deep research on any data using any LLM providers项目地址: https://gitcode.com/GitHub_Trending/gp/gpt-researcher

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 20:47:49

在 Blender 中启用 AMD GPU 加速:ZLUDA 完整指南

在 Blender 中启用 AMD GPU 加速:ZLUDA 完整指南 【免费下载链接】ZLUDA CUDA on non-NVIDIA GPUs 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLUDA 在 RX 580 上,同一份 Cycles 室内场景渲染任务,纯 CPU 需要约 3 小时&…

作者头像 李华
网站建设 2026/9/12 20:45:20

Windows 电脑微信文件保存位置和误删恢复排查

Windows 电脑上排查微信文件丢失,先确认文件来源和存储边界:个人微信通常看 WeChat Files,企业微信通常看 WXWork;实际路径以客户端设置中的存储位置为准。误删后不要继续向原分区写入数据。本文按可验证路径、系统回收入口、备份…

作者头像 李华
网站建设 2026/9/12 20:43:55

ClawX for Mac:AI数字员工搭建工具全解析

1. ClawX for Mac 项目概述OpenClaw 官方桌面客户端 ClawX 是2026年3月推出的新一代AI数字员工搭建工具,专为Mac用户优化设计。作为长期关注效率工具的技术博主,我第一时间测试了这款软件,发现它确实如宣传所说能在5分钟内完成从安装到配置的…

作者头像 李华
网站建设 2026/9/12 20:43:11

Karpathy式LLM工程实践:用claude.md与Claude Code构建可审计工作流

1. 项目概述:这不是一份“技能清单”,而是一份LLM时代工程师的生存地图你点开这个标题——“andrej-karpathy-skills”——大概率不是想查Andrei Karpathy的LinkedIn履历,也不是要背诵他2017年那场经典演讲里的金句。你真正想问的是&#xff…

作者头像 李华
网站建设 2026/9/12 20:43:10

字轮水表读数识别:OpenCV定位+CNN分类的OCR工程化实践

简介:一套Python字轮式自来水水表识别项目源码,面向具备基本Python语法、希望深入计算机视觉与机器学习实战的开发者,解决自动读取字轮水表数字的问题。项目以OpenCV为图像处理核心,覆盖灰度化、二值化、直方图均衡化、边缘检测等…

作者头像 李华