自主 AI 来了?一文详解火爆全网的 AutoGPT

你听说过开源项目自动GPT吗?这个项目构建的拥有各种技能的GPT可以围绕一个特定的目标独立完成任务,同时也为GPT提供了一个可执行的命令列表,帮助其朝着总体目标不断前进。

我尝试使用自动GPT,得到了一些有趣的结果。我还研究了项目的整体架构。GitHub上10万+的星数,可见其发展潜力之大。

为了更好地理解自动GPT的概念和工作原理,我们将探讨以下核心领域:

这个项目用的是什么型号?

如何让GPT拥有记忆?

如何提高GPT的响应可靠性?

如何解析GPT的回应?

如何指定GPT可以执行的命令?

型号

在撰写本文时,Auto-GPT仅支持OpenAI的GPT模式。如果不熟悉OpenAI,请参考官方文档(参考链接:https://platform.openai.com/docs/guides/chat/introduction)了解API和模型的交互。

在用GPT-3.5涡轮和GPT-4测试自动GPT后,我发现仍有改进的空间空,但通过GPT-4得到的输出远远好于GPT-3.5涡轮。包括令牌限制在内的所有设置都可以直接在中配置。环境文件。例如,您可以使用token来限制控制输入(上下文)和输出(响应)的长度,从而控制成本。

我看到一些与LangChain集成的pull请求,这意味着Auto-GPT可以访问其他开源模型,但可能项目本身有集成其他模型的计划。我在这里不打算深究OpenAI API或者其他开源模型,但是在后面主题的讨论中了解一些大型语言模型的背景会有所帮助。

如何让GPT有记忆?

GPT车型的设计不考虑内存,然而,Auto-GPT使用外部存储模块来消除这一限制。在了解如何让GPT拥有记忆之前,先介绍几个概念:

插入

向量存储和搜索

OpenAI的聊天完成API

嵌入是文本的向量表示,可以更容易地用在各种机器学习模型或算法中。自动GPT使用OpenAI的嵌入API来创建基于GPT文本输出的嵌入。

我们可以使用许多矢量存储服务。自动GPT使用:本地存储,松果(第三方服务),Redis和Milvus(开源服务)。Pinecone和Milvus优化了向量搜索算法,可以根据相关上下文搜索文本嵌入。

自动GPT将嵌入存储在这些向量存储服务之一中,然后通过搜索当前任务会话的相关向量将上下文注入GPT。下面是这段代码的核心部分:

自主 AI 来了?一文详解火爆全网的 AutoGPT

图片来自:https://github . com/significant-attractions/auto-GPT/blob/master/auto GPT/chat . py

OpenAI的聊天完成API有“系统”角色的概念,用来为GPT提供初始身份、约束和上下文。您可以看到,在上面的代码片段中,relevant_memory被注入到对话中,作为对GPT过去事件的引用。此外,自动GPT还将对应角色的完整聊天对话传递给聊天完成API(最大长度为token的上限)。

给出提示以获得可靠的响应

在对话开始时,Auto-GPT使用“系统”的角色来配置约束并进行自我绩效评估。自动GPT有一个提示生成器,其中一些约束是硬编码的:

自主 AI 来了?一文详解火爆全网的 AutoGPT

图片来自:https://github . com/significant-attractions/auto-GPT/blob/master/auto GPT/prompts/prompt . py

我们可以看到,在这些小技巧的指导下,GPT的自主性和自立性得到了提高,我们也可以看到许多通过持续的反馈回路帮助GPT提高产量的案例。我不确定以下自我表现评估的小技巧是否能达到同样的效果,但至少这份守则已经奠定了基础:

自主 AI 来了?一文详解火爆全网的 AutoGPT

图片来自:https://github . com/significant-attractions/auto-GPT/blob/master/auto GPT/prompts/prompt . py

对于初始角色,有一些额外的提示。但需要指出的是:“每一个命令都是有成本的,一定要聪明高效。我们的目标是用最少的步骤完成任务。”因为我们稍后会查看命令以及GPT执行每个命令的过程,所以这一行代码对于确保响应尽可能高效、避免不必要的步骤(使用更多token)以及确保成本最低非常重要。

解释响应

这可能是理解自动GPT内部工作原理最重要的一个方面。如果您不能有效地解释响应,您就不应该让GPT执行命令(也就是说,允许它访问外部世界)。自动GPT使用一种非常简单但强大的提示技术来确保GPT以固定的JSON格式响应,然后通过代码解析它:

自主 AI 来了?一文详解火爆全网的 AutoGPT

图片来自:https://github . com/significant-attractions/auto-GPT/blob/master/auto GPT/prompts/generator . py

在测试中,我使用了固定格式的响应。从结果来看,GPT-3.5涡轮非常高效,虽然偶尔会有错觉(GPT-4更可靠)。这样,我们指示GPT执行命令,我们也需要检查结果。当GPT执行命令时,响应信息包含在命令对象中。

与现实世界互动

为了发挥真正的作用,自主代理必须能够完成实际工作,并与真实世界进行交互,如文件系统或互联网。自动GPT必须编写每一个可以授权GPT执行的命令,它还可以在生成约束和自我评估的初始提示时提供可执行命令及其参数的列表。下面是一个向提示符添加命令的类函数:

自主 AI 来了?一文详解火爆全网的 AutoGPT

图片来源:https://github . com/significant-attracts/auto-GPT/blob/master/auto GPT/prompts/generator . py

基本提示生成器中有一个预定义的命令列表:

自主 AI 来了?一文详解火爆全网的 AutoGPT

图片来源:https://github . com/significant-attractions/auto-GPT/blob/stable/auto GPT/prompt . py

这是GPT参考命令的格式,可以带参数执行。以下代码可以将最终提示格式化为GPT字符串:

自主 AI 来了?一文详解火爆全网的 AutoGPT

图片来源:https://github . com/significant-attracts/auto-GPT/blob/master/auto GPT/prompts/generator . py

如您所见,这段代码集成了上述所有功能。这种暗示可以为GPT提供约束、自我评估的方向、资源、命令和响应格式。接下来,在解析GPT返回的响应时,我们将清楚它执行的命令和参数。最后一步是执行命令:

自主 AI 来了?一文详解火爆全网的 AutoGPT

图片来源:https://github . com/significant-attracts/auto-GPT/blob/stable/auto GPT/app . py

在这段代码中,在解析GPT的响应后,每个命令都获得自己的参数,然后执行它。GPT的命令之一是任务完成。如果以连续模式运行,程序将在GPT达到目标后关闭或退出:

自主 AI 来了?一文详解火爆全网的 AutoGPT

图片来源:https://github . com/significant-景点/自动GPT/blob/master/autogpt/app.py

八木

BabyAGI也使用了类似的概念,但它大大简化了实现(整体功能较少)。它支持将LLaMA和OpenAI作为模型输入。在提供目标和初始任务后,它创建三个代理来执行目标:任务执行代理、任务创建代理和任务优先级代理。每个代理都有自己的提示和约束,包括来自每个相关任务执行的上下文。这个过程将循环执行,直到没有剩余任务,目标完成。

自动GPT和八木受到了很多关注,并在不断改进。

摘要

毫无疑问,很多人都为这些项目付出了努力,并在不断完善。这些项目是人工智能领域令人兴奋的一步,我们距离人工智能独立完成任务并在生活的各个方面协助我们的未来又近了一步。我想强调的不仅是一些核心概念,而且这些概念可以帮助我们理解其内部运作,并为独立代理的新世界做出贡献。

本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系admin#jikehao.com删除。
(0)
极客号的头像极客号
上一篇 2023年 5月 4日
下一篇 2023年 5月 4日

相关推荐

合作联系:1152QQ041010