我们如何构建GPT Researcher
在AutoGPT发布后,我们立即进行了试用。首先想到的应用场景就是自主在线研究。对于人工研究任务来说,形成客观结论可能需要花费时间,有时甚至需要数周来寻找合适的资源和信息。看到AutoGPT如此出色地创建和执行任务,让我开始思考利用AI进行全面研究的巨大潜力,以及这对未来在线研究意味着什么。
但AutoGPT的问题是它通常会陷入无限循环,几乎每一步都需要人工干预,不断丢失进度跟踪,几乎从未真正完成任务。
尽管如此,在研究任务期间收集的信息和上下文丢失了(例如跟踪来源),有时还会产生幻觉。
出于对利用AI进行在线研究的热情以及我所发现的局限性,我踏上了一个使命:尝试解决这些问题,同时与世界分享我的工作。就在那时,我创建了GPT Researcher——一个用于在线全面研究的开源自主智能体。
在本文中,我们将分享引导我找到所提出解决方案的步骤。
从无限循环到确定性结果的转变
解决这些问题的第一步是寻求一种更具确定性的解决方案,最终保证在固定时间范围内完成任何研究任务,无需人工干预。
就在那时,我们偶然发现了近期发表的论文Plan and Solve。该论文旨在为上述挑战提供更好的解决方案。其思路相当简单,包含两个组成部分:首先制定计划将整个任务分解为较小的子任务,然后按照计划执行这些子任务。

在研究过程中,首先创建与任务相关的研究问题大纲,然后确定性地为每个大纲项执行一个智能体。这种方法通过将智能体步骤分解为确定性的有限任务集,消除了任务完成的不确定性。当所有任务完成后,智能体将结束研究。
遵循这一策略已将研究任务的完成可靠性提升至100%。现在的挑战在于,如何提高质量和速度?
追求客观公正的结果
The biggest challenge with LLMs is the lack of factuality and unbiased responses caused by hallucinations and out-of-date training sets (GPT is currently trained on datasets from 2021). But the irony is that for research tasks, it is crucial to optimize for these exact two criteria: factuality and bias.
为了应对这些挑战,我们做出了以下假设:
- 大数定律 — 内容越多,结果偏差越小。特别是在正确收集的情况下。
- 利用LLM进行事实信息摘要可以显著提高结果的整体事实准确性。
经过对大型语言模型(LLM)的长期实验后,我们可以得出结论:基础模型最擅长的领域在于对给定内容的总结和重写。因此从理论上说,如果LLM仅对给定内容进行审阅、总结和重写,将能显著减少幻觉现象的产生。
此外,假设给定内容是无偏见的,或者至少包含一个话题各方的观点和信息,那么改写后的结果也将是无偏见的。那么内容如何才能做到无偏见呢?大数定律。换句话说,如果抓取足够多包含相关信息的网站,偏见信息的可能性就会大大降低。因此,思路是抓取足够多的网站,从而对任何话题形成客观的看法。
太好了!听起来目前我们已经有了如何生成确定性、事实性且无偏见结果的思路。但速度问题怎么解决呢?
加速研究进程
AutoGPT的另一个问题是它以同步方式工作。其主要理念是创建一系列任务然后逐个执行。因此,假设一个研究任务需要访问20个网站,每个网站大约需要一分钟来抓取和总结,那么整个研究任务至少需要20分钟以上。这还是假设它最终会停止的情况下。但如果我们可以并行化智能体的工作呢?
通过利用asyncio等Python库,智能体任务已优化为并行工作,从而显著缩短研究时间。
# Create a list to hold the coroutine agent tasks
tasks = [async_browse(url, query, self.websocket) for url in await new_search_urls]
# Gather the results as they become available
responses = await asyncio.gather(*tasks, return_exceptions=True)
在上面的示例中,我们并行触发了所有URL的抓取操作,仅当所有操作完成后才继续执行任务。根据多次测试,平均研究任务耗时约三分钟(!!)。这比AutoGPT快了85%。
完成研究报告
最终,在尽可能多地收集关于给定研究任务的信息后,面临的挑战是撰写一份全面的报告。
在尝试了多个OpenAI模型甚至开源模型后,我得出结论:目前使用GPT-4能获得最佳效果。任务很简单——将所有汇总信息作为上下文提供给GPT-4,并要求它根据原始研究任务撰写详细报告。
提示内容如下:
"{research_summary}" Using the above information, answer the following question or topic: "{question}" in a detailed report — The report should focus on the answer to the question, should be well structured, informative, in depth, with facts and numbers if available, a minimum of 1,200 words and with markdown syntax and apa format. Write all source urls at the end of the report in apa format. You should write your report only based on the given information and nothing else.
结果相当令人印象深刻,只有极少数样本存在轻微幻觉,但可以合理预期随着GPT的持续改进,效果只会越来越好。
最终架构
既然我们已经回顾了GPT Researcher的必要步骤,现在让我们分解最终的架构,如下所示:

更具体地说:
- 针对任何给定任务生成研究问题的大纲,以形成客观意见。
- 针对每个研究问题,触发一个爬虫智能体,该智能体会从在线资源中抓取与给定任务相关的信息。
- 对于每个抓取的资源,仅当其包含相关信息时才进行跟踪、过滤和总结。
- 最后,汇总所有摘要来源并生成最终研究报告。
展望未来
在线研究自动化的未来正面临重大变革。随着人工智能技术的持续进步,AI智能体能够为我们日常需求执行全面研究任务只是时间问题。AI研究将颠覆金融、法律、学术、医疗和零售等领域,在日益增长的在线信息洪流中,将每次研究时间减少95%,同时优化事实性和无偏见的报告。
想象一下,如果AI最终能够理解和分析任何形式的在线内容——视频、图像、图表、表格、评论、文本、音频。再想象一下,如果它能在单个提示中支持并分析数十万字的聚合信息。甚至设想AI最终能在推理和分析方面不断进步,使其更适合得出新颖创新的研究结论。而它能在几分钟内(如果不是几秒钟的话)完成所有这些工作。
这一切都取决于时间,而这正是GPT Researcher的核心所在。