SmartGPT
SmartGPT 是一个实验性程序,旨在为大型语言模型(尤其是 GPT-3.5 和 GPT-4)提供无需用户输入即可完成复杂任务的能力,通过将任务分解为更小的问题,并利用互联网和其他外部资源收集信息。
如果你有兴趣跟进 SmartGPT 的进展、想为开发做出贡献或有问题要讨论,加入 SmartGPT Discord。
https://github.com/Cormanz/smartgpt/assets/32941017/11d737b4-9c93-4f22-b84f-d9c9d1ee0f9c
为什么选择 SmartGPT?
目前已有许多允许大型语言模型执行更复杂任务的解决方案,如 Auto-GPT 和 BabyAGI。那么,为什么选择 SmartGPT 呢?
-
模块化:通过对插件的一级支持以及为你的项目需求定制 Autos 的能力,SmartGPT 具有极高的模块化。
-
灵活性:SmartGPT 有一个自动生成的
config.yml
文件,你可以在其中配置所有内容。 -
一致性:SmartGPT 具有动态执行操作和静态工具链的智能系统,能够提供极其一致的结果。
然而,SmartGPT 也有两个主要的不足。
-
生态系统:由于 AutoGPT 的广泛使用,它是一个非常完善且精炼的工具。它拥有更多的工具和与记忆系统的集成。此外,其代码库经过了大量审查,因此相比 SmartGPT 更少出现错误,并且测试更充分。
-
内存管理:由于该项目还处于初期阶段,目前只有一个简单但有限的内存系统。然而,这将随着时间的推移而改变。
支持开发
目前,SmartGPT 的测试主要在 GPT-3.5 上进行,偶尔也会使用 GPT-4,因更昂贵的模型成本高昂。随着项目的成熟,我们计划同时实验多个代理和更多地使用 GPT-4,以释放大型语言模型的最大潜力。然而,这非常昂贵,作为 SmartGPT 的核心维护者,我仍然是一名高中生,资助这样的项目对我来说很困难。如果你有兴趣帮助推动大型语言模型的边界,请考虑加入我们的 Patreon。
免责声明
SmartGPT 是一个极其实验性的应用程序。目标是释放大型语言模型的最大潜力,因此稳定性在此过程中被牺牲。向后兼容在这里几乎是不可能的。然而,SmartGPT 也汇集了一些目前在 AutoGPT 领域最具创新性的想法和实验,尽管大多数不成功,但少数达到了目标。
快速开始
-
安装
cargo
,最好是最新的稳定版本。 -
使用
git clone https://github.com/Cormanz/smartgpt.git && cd smartgpt
克隆仓库。 -
使用
cargo run --release
在发布模式下运行它。这将为你创建一个config.yml
文件。 -
根据你的喜好调整配置,然后再次执行。
如果你想获取更多信息,或想在你自己的项目中使用 SmartGPT 作为 crate,请阅读文档。
SmartGPT 如何工作
Autos
Auto 是 SmartGPT 的构建模块。Auto 有两种类型。
- Runner:Runner 被分配一个任务,并要求完成它。
- Assistants:Assistant Auto 可以与之对话,并会根据对话上下文给出回应。
Assistants 是高度实验性的,因此我们推荐使用 Runners。
Auto 实际上会运行代理。代理有两部分:动态代理和静态代理。
动态代理
动态代理是基础代理。它运行一个类似 REACT 的过程,思考、推理,然后做出决定。它可以执行以下三项中的一项:
- 头脑风暴。
- 执行一个操作。
- 给用户一个最终回应。
当它执行操作时,会调用静态代理来执行该操作。
静态代理
静态代理执行动态代理分配给它的子任务。其工作原理如下:
- 它规划出完成任务所需的每个工具,并按照精确的顺序进行规划。
- 它会逐一运行计划的每一步,填写工具所需的参数。
静态代理还会保存动态代理可以传回给静态代理用于未来任务的资产。
内存
代理都有内存。在完成任务后,代理会将所有观察结果保存到长期记忆中。当它开始另一个任务时,会提取所有与该任务相关的长期记忆(使用 VectorDB 来完成此操作)。
插件系统
Autos 可以使用一组工具,例如 google_search
、browse_url
等。你可以使用插件来定义这些工具。插件定义自己的一组工具,并可以拥有自己的数据。