GPT Researcher 实战指南:3 个场景跑通自动调研,附 3 个常见坑
【免费下载链接】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 是一个开源的自动调研 agent:给它一句问题,它自己拆任务、并行搜集网页、汇总成带引用的完整研究报告,你只管看结果。
它到底帮你解决什么问题
手工调研很慢。搜资料、读原文、做摘要、排引用,一套下来按天算。
LLM 直接问答有个老毛病:训练语料有截止日期。问最近半年的事,它容易一本正经地编。
报告写不长也写不透。单次生成长文,token 装不下、来源又太单一,结论往往偏科。
GPT Researcher 的思路是别让一个模型硬扛:先把问题拆成子问题,多路并行抓资料,最后再汇总成文。速度、来源数量、引用可靠性,都靠分工解决。
五分钟跑通第一个调研
装包,然后配好密钥:
pip install gpt-researcherexport OPENAI_API_KEY=sk-...注意默认检索器是 Tavily,还要配TAVILY_API_KEY;不想再多申请一个 key,可以把检索器换成 DuckDuckGo,见下文。
最小可运行脚本,五行核心代码:
from gpt_researcher import GPTResearcher import asyncio async def main(): r = GPTResearcher("What are the latest LLM agent trends?", "research_report") await r.conduct_research() print(await r.write_report()) asyncio.run(main())跑完拿到的是一份带引用的 markdown 报告。report_type还可以换成resource_report、detailed_report等,控制报告形态。
拆开看它内部怎么运转
把它想象成一个临时拼的研究小组。
一个planner(规划者)负责把你的问题拆成一组子问题;多个 worker 各自带着自己的子问题去搜索、抓网页、写摘要,互相不排队;最后由 publisher 汇总所有素材,过滤、去重、排引用,产出终稿。
代码里这条分工在 multi_agents/agents/ 下能看得更细:researcher 管搜、writer 管写、reviewer 管审,由 LangGraph 串起来跑:
所有可调参数集中在一个文件里:gpt_researcher/config/variables/default.py。搜索用哪家(RETRIEVER)、规划/摘要/写作各用哪个模型(STRATEGIC_LLM/FAST_LLM/SMART_LLM)、并发抓多少个网页(MAX_SCRAPER_WORKERS),改这里就够了。
三个实际用过的场景
场景一:市场趋势摸底。想快速了解一个方向,用默认的research_report就行,报告篇幅由配置里的TOTAL_WORDS控制,默认 1200 词左右,嫌长就调小,不用改代码:
r = GPTResearcher("AI 医疗影像赛道 2026 年动态", "research_report")场景二:只信特定来源的学术综述。综述论文最怕被营销内容带偏。query_domains参数能把搜索圈定在指定域名内,下面的例子只会从 arxiv 上找资料:
GPTResearcher( "LLM hallucination benchmarks 2025", "detailed_report", query_domains=["arxiv.org"] )场景三:本地文档 + 网络混合调研。资料不全在网上时,把本地目录指给它。在.env或初始化配置里把DOC_PATH指向你的文档目录(如"./my-docs"),REPORT_SOURCE保持web,agent 会优先用本地资料、缺的部分用网络补:
踩过的坑和调优经验
现象:搜索直接报错或结果为空。原因:默认检索器 Tavily 需要单独的TAVILY_API_KEY,没配就会在搜索这一步挂掉。 解决:配 key,或者在配置里改成"RETRIEVER": "duckduckgo",零外部依赖。
现象:一份报告要等很久、token 花得不少。原因:规划用的是推理模型,STRATEGIC_LLM每轮都要"想";抓取默认 15 个 worker 并发,子问题默认 3 个。 解决:按需压低REASONING_EFFORT、MAX_ITERATIONS、MAX_SUBTOPICS,深度和成本自己权衡。
现象:在普通同步代码里直接await报语法或运行错误。原因:conduct_research和write_report都是异步方法。 解决:入口用asyncio.run()包一层;notebook 里先nest_asyncio.apply(),参考 docs/docs/examples/pip-run.ipynb。
想深入的话看这里
- docs/docs/:官方文档目录,安装、配置、检索器选择都在里面
- docs/docs/examples/:可运行的示例代码,含 notebook
- docs/docs/reference/:配置项与单例机制的参考
- multi_agents/:LangGraph 多 agent 编排的源码
先跑通第一篇报告,再按需要去动检索器和 LLM 配置,顺序别反过来。
【免费下载链接】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),仅供参考