跳转到主内容

一篇带有“autonomous-agent”标签的帖子

查看所有标签

我们如何构建 GPT Researcher

·7分钟阅读
Assaf Elovic
GPT Researcher 和 Tavily 的创建者

AutoGPT发布后,我们立刻进行了试用。首先想到的用例是自主在线研究。对于手动研究任务,要形成客观的结论可能需要花费数周时间来寻找合适的资源和信息。看到 AutoGPT 创建和执行任务的出色表现,让我开始思考使用人工智能进行全面研究的巨大潜力,以及这对未来在线研究的意义。

但 AutoGPT 的问题在于它通常会陷入无限循环,几乎每一步都需要人为干预,不断失去对其进度的追踪,而且几乎从未真正完成任务。

尽管如此,在研究任务期间收集的信息和上下文都丢失了(例如,没有跟踪来源),有时还会产生幻觉。

利用人工智能进行在线研究的热情以及我发现的局限性,促使我开始着手解决这个问题,并与世界分享我的工作。就在那时,我创建了 GPT Researcher——一个用于在线全面研究的开源自主代理。

在本文中,我们将分享引导我走向所提出解决方案的步骤。

从无限循环到确定性结果

解决这些问题的第一步是寻求一个更具确定性的解决方案,该方案最终能够保证在固定的时间范围内完成任何研究任务,而无需人为干预。

这时,我们偶然发现了最近的一篇论文“规划与解决”。该论文旨在为上述挑战提供更好的解决方案。这个想法非常简单,包含两个部分:首先,设计一个计划,将整个任务分解为更小的子任务;然后,根据计划执行这些子任务。

Planner-Excutor-Model

就研究而言,首先创建一个与任务相关的研究问题大纲,然后确定性地为每个大纲项目执行一个代理。这种方法通过将代理步骤分解为一组确定性的有限任务,消除了任务完成中的不确定性。一旦所有任务完成,代理便会结束研究。

遵循这一策略,完成研究任务的可靠性提高到了100%。现在的挑战是,如何提高质量和速度?

追求客观和无偏见的结果

大型语言模型(LLM)最大的挑战在于缺乏事实性和无偏见的响应,这是由幻觉和过时的训练数据集(GPT 目前基于 2021 年的数据集进行训练)造成的。但具有讽刺意味的是,对于研究任务来说,至关重要的正是优化这两个标准:事实性和无偏见性。

为了应对这些挑战,我们做了以下假设

  • 大数定律——更多的内容将导致更少偏见的结果。尤其是在收集得当的情况下。
  • 利用大语言模型对事实信息进行总结,可以显著提高结果的整体事实性。

在对 LLM 进行了相当长一段时间的实验后,我们可以说,基础模型最擅长的领域是总结和重写给定内容。所以,理论上,如果 LLM 只审查给定内容并进行总结和重写,可能会显著减少幻觉。

此外,假设给定内容是无偏见的,或者至少包含了某个主题各方的观点和信息,那么重写后的结果也将是无偏见的。那么内容如何才能无偏见呢?答案是大数定律。换句话说,如果抓取了足够多的包含相关信息的网站,带有偏见信息的可能性就会大大降低。因此,想法是抓取足够多的网站,以形成对任何主题的客观意见。

太好了!听起来,我们现在有了一个如何创建既确定、又真实、又无偏见的结果的想法。但是速度问题呢?

加快研究进程

AutoGPT 的另一个问题是它同步工作。其主要思想是创建一个任务列表,然后逐个执行。因此,如果一个研究任务需要访问 20 个网站,每个网站抓取和总结大约需要一分钟,那么整个研究任务至少需要 20 多分钟。这还是假设它能停下来的情况下。但如果我们能并行化代理的工作呢?

通过利用 Python 的 asyncio 等库,代理任务已得到优化,可以并行工作,从而显著减少了研究时间。

# 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 的意义所在。