Introduction to SmartGPT
SmartGPT is an innovative and experimental program designed to enhance the capabilities of Language Learning Models (LLMs) like GPT-3.5 and GPT-4. This project focuses on enabling LLMs to accomplish complex tasks independently by breaking them into smaller problems and gathering information from the internet and other external sources. It presents a groundbreaking approach, aiming to maximize the utility of these advanced models in practical scenarios.
Why SmartGPT?
With several existing solutions available, such as Auto-GPT and BabyAGI, one might wonder about the necessity of SmartGPT. Here's why it's special:
-
Modularity: SmartGPT boasts remarkable modularity due to its plugin support. Users are able to compose Autos tailored to their project's needs.
-
Flexibility: It features a
config.yml
file that is automatically generated, allowing detailed customization and configuration. -
Consistency: SmartGPT uses a dynamic system to execute actions and performs tool-chaining for consistent results.
However, the project does face some challenges:
-
Ecosystem: Compared to its well-established counterparts like AutoGPT, SmartGPT has fewer tools and integrations, making it relatively nascent.
-
Memory Management: Currently, the project has only a basic memory management system, which is expected to evolve as SmartGPT matures.
Supporting the Project
SmartGPT primarily operates with GPT3.5 but also explores the potential of using GPT4 to attain higher levels of capability. Nonetheless, the project involves significant expenses. The core maintainer, being a high school student, emphasizes the difficulty in funding such an innovative venture. Individuals with an interest in expanding the boundaries of LLMs are encouraged to support the project through Patreon.
A Notice on Stability
SmartGPT is extremely experimental and prioritizes unlocking the full potential of LLMs over stability. This means that not all features are backward compatible, and the app houses some of the most cutting-edge ideas in the AutoGPT space, albeit with a trial-and-error approach.
Getting Started with SmartGPT
To start using SmartGPT, follow these quick steps:
- Install
cargo
(preferably the latest stable version). - Clone the SmartGPT repository using
git clone https://github.com/Cormanz/smartgpt.git && cd smartgpt
. - Launch SmartGPT in release mode with
cargo run --release
, which will generate aconfig.yml
. - Tweak the configuration to your preferences and then run SmartGPT again.
For more detailed instructions or to incorporate SmartGPT within your own projects, readers are directed to consult the project's documentation.
How SmartGPT Operates
Autos
The fundamental components of SmartGPT are called Autos, which are categorized into two types:
- Runner: Assigned a single task to complete.
- Assistant: Capable of engaging in conversation and providing contextual responses.
The constructors of SmartGPT recommend using Runners as Assistants are in a highly experimental phase.
Within an Auto, the following agents operate:
Dynamic Agent
Essentially, it acts as the base agent, engaging in a process similar to the REACT model—thinking, reasoning, and deciding actions. It can:
- Brainstorm ideas.
- Execute an action.
- Deliver a final response to the user.
When the Dynamic Agent opts to perform an action, it hands over the task to the Static Agent.
Static Agent
This agent manages the subtasks as specified by the Dynamic Agent by:
- Planning out necessary tools in a specific order.
- Executing each step and filling in tool arguments.
It also saves assets generated by the Dynamic Agent for future tasks.
Memory Functionality
After finishing a task, agents integrate their observations into long-term memory, which they can access later when embarking on new tasks, with the help of a VectorDB.
Plugin Infrastructure
Autos are capable of utilizing varied tools, such as google_search
and browse_url
, defined by plugins. These plugins can introduce their own toolsets and store data independently.
Licensing
SmartGPT is distributed under the MIT license, with the full license text available on the project's GitHub repository.