Hello kurtosis
tech team!
I have various thoughts about this project, all of which are simply ways to improve -- at least as I see it -- the usability, execution speed, functional application space, or simply the quality of life. This is to say, I think the current state of this project is already great.
BUT...
Here is my vision for how this package could be used which would, for me at least, supercharge usage of this project.
💬 Suggestions
These are not provided in any particular order, and it may well be that some should definitely be implemented before others. I leave that up to the more knowledgeable.
I guess you can't have scrollTo
id links to Headers in issues, or I'm being dumb... Either way sorry, the links above are, save the first, bogus.
🧱 Supporting Local/Unpublished/Private Auto-GPT Plugins
I think it would be a very useful feature to allow users who are actively developing, working with a proprietary codebase, or for any other reason are deploying autogpt
with currently unpublished forks of Auto-GPT-Plugin-Template
to attach their local code to an instance of autogpt-package
.
As for the implementation of this, I am less clear on how it would work, as I don't fully understand kurtosis
under the hood. However, I do think it is possible. I also always think that... but I digress
📦 Adding autogpt
Branch/Version Specification at Runtime
A method with which we could specify the version of autogpt
we want to use would be very helpful, especially given the drastic changes version to version -- such as the scrapping of the MEMORY_BACKEND
system in Auto-GPT v0.4.0
.
Currently, I would like to be able to use autogpt
version 0.3.1
, which can be located under the branch stable-0.3.1
in the Auto-GPT
repository.
📑 Creating a Wiki / Nested Documentation
While you guys have definitely documented things well enough to use your project through just README.md
, I think it's time you have a full-on wiki. I think the easiest, most user-friendly way to do this would be to utilize GitHub repository Wikis, but there are various possible ways. I would be happy to help create such documentation, if you would like.
⏸ "Pausing" & "Unpausing" Instances for Prolonged Use / Execution
Finding a way to save the state of your autogpt-package
instance, write it to a file or files, and then return to it at a later date, would make utilizing this tool much nicer in terms of quality of life (in my opinion of course)
This could also potentially be a benefit when it comes to fault-tolerance / error recovery, which would be a great thing to support, both implemented by you guys, but also opening up a way for us to write our own conditions for "failure" and hook in our own subsequent handling systems.
👑 Constructing a "build
" System for Configuration / Local Caching / Pausable Instances / etc
This one is by far the biggest ask. (save the best for last or something)
I am personally tired of having to provide all my arguments to the project in the form of a single CLI string. Even escaping special characters aside, growth while ultimately hampered by this constraint adds in my opinion unnecessary overhead.
As an alternative, I propose a build
system not unlike that of npm
or setuptools
for Node.js and Python respectively, involving a json
1 file, maybe by convention called agpkg_config.json
2, which would facilitate multiple executions of the same instance -- especially if pausing
is supported. (somehow)
Here's my suggestion, in terms of file examples.
agpkg_config.jsonc
3
// =============================================================================== //
/*
__ __ __
____ ___ __/ /_____ ____ _____ / /_ ____ ____ ______/ /______ _____ ____
/ __ `/ / / / __/ __ \/ __ `/ __ \/ __/_____/ __ \/ __ `/ ___/ //_/ __ `/ __ `/ _ \
/ /_/ / /_/ / /_/ /_/ / /_/ / /_/ / /_/_____/ /_/ / /_/ / /__/ ,< / /_/ / /_/ / __/
\__,_/\__,_/\__/\____/\__, / .___/\__/ / .___/\__,_/\___/_/|_|\__,_/\__, /\___/
/____/_/ /_/ /____/
*/
// =============================================================================== //
// VERSION: ${VERSION}
// <insert project credits, authors, disclaimers, whatever else>
{
"log_level": "DEBUG" // simple stuff like log level can go here
"model_type":"GPT4ALL", // "OpenAI", "GPT4ALL", "llama.cpp", etc (potentially C:)
"autogpt": {
"branch":"stable-0.3.1",
/* https://github.com/Significant-Gravitas/Auto-GPT/blob/master/.env.template
This file (.env) includes all necessary configuration for autogpt, even removing the need to pass
OpenAI API Keys to `kurtosis` in plain-text. */
"env":"path/to/a/.env",
"settings": "path/to/ai_settings.yaml"
/* ...etc */
},
// if "model_type" is GPT4ALL... (or if you have some other want from the config process)
"gpt4all": {
"local": false, // if true, "model" should be a local filepath instead of a URL.
/* if "local": true & "model" typeof URL, then a download of the model could be performed to a standard default location -- probably just ${CWD}/models/... -- wherein after the download is finished, the URL value of "model" is replaced with the local filepath to the newly downloaded model. (this is a bit much to ask, but would be very, very cool!) */
"model": "https://gpt4all.io/models/ggml-gpt4all-l13b-snoozy.bin",
"temperature": 0.28
/* other LLM settings */
},
"network": {
"proxies": [
{
"url":"http://localhost",
"port": 80
}
]
// idk what else, VPN via OpenVPN support? or user-agent swapping? seems like it would be
// specified in the autogpt specifications
}
}
With this concept, a .env
file which is exactly the same format as that which is used in standard autogpt
instances can be utilized off-the-shelf by a new user intending to try out autogpt-package
. Same idea with ai_settings.yaml
.
Along with that, all the specification for other things, such as gpt4all
configuration, or networking, or any other custom stuff you decide to put on top of autogpt
in this package to increase its usefulness, could all be specified from a central file, and we wouldn't need to parse and merge .env
files into json
data then escape it. It just seems like this would be a more scalable approach in my eyes, but I could be wrong.
I also understand this would NOT be as simple as I have put it out to be -- it would be a somewhat major undertaking for the codebase -- but I wanted to put my suggestion out here. Feel free to use it as you see fit; I will not be offended. C:
🎀 Summary
Here is the current README.md
's method of initiating autogpt-package
with a redis
memory backend.4
$ kurtosis run github.com/kurtosis-tech/autogpt-package '{"GPT_4ALL": true, "MODEL_URL": "https://gpt4all.io/models/ggml-gpt4all-l13b-snoozy.bin"}'
Here is how I would have things work, in a perfect world for me -- which is obviously not everyone's perfect world.
$ kurtosis run github.com/kurtosis-tech/autogpt-package --enclave autogpt `/path/to/agpkg_config.json`
Alright, this is insanely long, and I apologize in advance! Hopefully something in here will inspire somebody. Thank you to everyone at kurtosis-tech
again for making this package. It was the first way that I got Auto-GPT to work at all when I was first playing with it, and it was as seamless as it purported to be.
But then I wanted more... hah.
Cheers,
Jason, or zod