Significant-Gravitas / AutoGPT

AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.
https://agpt.co
MIT License
166.48k stars 44.06k forks source link

Interactive set-up file #3820

Closed CoinCartel closed 12 months ago

CoinCartel commented 1 year ago

Duplicates

Summary 💡

Seeing that there are a few configurable options, owuld it be viable for user friendliness to be able to run a shell command to initiate an interactive setup, ie. [local only, local and Cloud, Cloud only][memory choice: weaviate, pinecone...][cloud specific arguments][containerized?]... Is this possible or am i being naiive?

Sam

Examples 🌈

No response

Motivation 🔦

coming in with some experience but nothing about cloud computing or working with docker, it can be. a challenge to try and put it all together at once, especially since we are learning about vectorization for embeddings, vector search...MLOps... just lot to take in at once, would be nice to be able to just run and fill in the answers, when you don't know, go look instead of running without knowing what you don't know ;)

Sam

anonhostpi commented 1 year ago

I think this would be a great feature. Perhaps model npm init and how it sets up package.json interactively.

Boostrix commented 1 year ago

indeed, support for interactive configuration might come in handy - and in fact, the agent API itself could benefit from some sort of interactive interface to walk people through different processes. That way, agents themselves could use the same library to set up agents and their workflows internally.

We'd probably need a headless/CLI option to set up step-based wizards. This could in fact be a command system (plugin) to set up/change and execute wizards and steps dynamically. Any wizard can be represented as a graph, so JSON would seem like a suitable format.

There are a number of Python libraries that can be used to create interactive wizards. Some popular ones include:

By using a headless based option that is based on a format like JSON, web UIs could also leverage the same mechanism. The only issue with this generic approach is that the "wizard plugin" would by default by constrained to working inside a restricted workspace - however, we could still make this work by creating all the config files inside the workspace and finally give instructions on how to copy those into the correct place - alternatively, offer to run the equivalent of "sudo" to copy the generated files to the proper place.

If this could be implemented in a fashion to also support input validation, it could streamline not just the setup/config process, but also the way people interact with their agents.

Thoughts / ideas ?

anonhostpi commented 1 year ago

Well, given my background in JavaScript, I think we both know which one I want lol.

Boostrix commented 1 year ago

it would ideally be something CLI based obviously, and something with support for serialization to save generated wizards. Input validation would be a plus, too. Not sure what else would be useful ? Also, we'd need to turn this into a plugin that register a new "wizard" command category that provides a bunch of options to create/modify and execute wizards. Internally, wizards woud have access to the standard command system of Auto-GPT - that way, they can already write files etc.

In the original use case of the OP, the final step would simply involve copying the new config files into the proper place.

That would also help handle platform specifics/differences (think file/directory permissions). And it could even support i18n out of the box using this approach.

anonhostpi commented 1 year ago

Just so that others also don't have to do the same google search that I did...

i18n=internationalization. the 18 means there are 18 chars between the i and the n

CoinCartel commented 1 year ago

My educated but bareley experienced opinion is to go with a one file download, for linux, mac (Apple/Intel), windows that could be run through the cli and (as [anonhostpi] has in mind, would run like npm, (i think all of the cli libraries for interactive setups mentioned by Boostrix sound good. The one file would then create the devops setup as required, including getting thecurrent stable repo downloaded and set-up (on 1 to many systems depending on the setup).

A GUI could look like any .dmg setup where the installer can assess your system, ask some preference questions and complete the installation.

I think going about it as a plug-in is not necessarily solving the UX problem, probably worsening it. But a wizrd to interactively CHANGE the current setup would be a VALUABLE add-on, due to complexities that may arise from having to migrate vector spaces and what not!

anonhostpi commented 1 year ago

To be honest, while streamlining the install is for sure indefinitely going to be part of the roadmap, I think it won't happen for a bit. I think that the main reason that it has been ignored for so long is that this repository is still experimental and mostly targeted at developers.

The maintainers are more interested in ironing out the internal kinks right now (hence the big re-arch that is going on right now) than streamlining the experience for the end-user.

Still important to have this convo tho, as it will be needed later on, when the repository exits the experimental phase.

Boostrix commented 1 year ago

we could come up with some sort of JSON based wizard format that merely serialized a bunch of steps with "preconditions" and "postconditions" in between (which would also neatly encapsulate input validation).

The plugin based approach is because the command system is currently in the process of being re-architected accordingly. Thus, having a "wizard" plugin that registers new commands to create/modify and execute wizards based on templates would probably be fairly straightforward (and could be extended upon if/when the need arises).

Here's what GPT has to say about our little convo:

A command-based system implemented as a plugin to dynamically generate/modify and execute step-based wizards based on templates is a powerful tool for guiding users through complex processes and workflows in a CLI/shell environment. Here is a high-level overview of how such a system might work:

The user initiates the wizard by invoking a command in the CLI/shell environment. The command is defined by the plugin and is responsible for creating a new wizard instance.

The wizard instance is based on a template that defines the steps, prompts, and inputs required to complete the process or workflow. The template is defined by the plugin and can be customized or extended as needed.

The wizard prompts the user to input data and provides feedback or guidance as needed. Each step of the wizard is defined by the template and can include validation, defaults, and other advanced features.

The wizard stores the user's input as it progresses through the steps. The data can be validated and modified as needed before being stored.

Once all the steps are completed, the wizard generates a report or summary of the user's input. The report can be displayed in the CLI/shell environment or saved to a file or database.

The user can choose to execute the process or workflow based on the data collected by the wizard. The execution command is defined by the plugin and can be customized or extended as needed.

The plugin can also provide additional functionality such as saving and loading templates, managing wizards, and generating reports.

This type of system is ideal for guiding users through complex processes and workflows in a CLI/shell environment. It provides a structured and intuitive interface for data input and validation, and can be customized or extended to meet the needs of specific workflows. By using a plugin-based architecture, the system can be easily integrated with other tools and frameworks to provide a seamless user experience.

CoinCartel commented 1 year ago

I was just thinking the same thing!

CoinCartel commented 1 year ago

oops wrong reply

I was just thinking we should wait til the repo is stable, any change in architecture could mean a restructuring of our "setup.***" file

Boostrix commented 1 year ago

it is worth pointing out that while this repo may be aimed at devs, implementing the wizard as part of a plugin will mean that people USING the system can also use it to interact with agents. Regardless of the use-case you have in mind, there will always be a way to describe its steps using a wizard (in fact, ai_settings.yaml could simply say "execute a wizard asking the user what to do"

CoinCartel commented 1 year ago

it is worth pointing out that while this repo may be aimed at devs, implementing the wizard as part of a plugin will mean that people USING the system can also use it to interact with agents. Regardless of the use-case you have in mind, there will always be a way to describe its steps using a wizard (in fact, ai_settings.yaml could simply say "execute a wizard asking the user what to do"

What he said :D

Boostrix commented 1 year ago

Also, the only "hard" requirement (at least currently) is having an OpenAI API key - and that could be asked as one of the first steps obviously, there could even be a dedicated command set_openai_api_key - afterwards, the wizard would have al the info to start an actual agent and do its thing in a "smart" way

CoinCartel commented 1 year ago

So what are you proposing, a wizard-maker plug-in?

CoinCartel commented 1 year ago

or an agent maker wizard?

CoinCartel commented 1 year ago

or an agent maker wizard?

Now that I like

anonhostpi commented 1 year ago

I wouldn't count on that "hard" requirement for too long. Especially with the proposal to implement APIs as plugins. The "core" plugin may end up being completely optional at some point. There is a big push towards self-hosted solutions over OpenAI

anonhostpi commented 1 year ago

I believe he was referring to agent maker wizard (which will inevitably transform into a workspace maker wizard after the re-arch)

Boostrix commented 1 year ago

a wizard making plugin, so that you can have your cake and eat it in this case:

we would be reviewing the 3-5 main python frameworks to set up wizards. Use the plugin template to register a few new command options to GENERATE/MODIFY/EXECUTE wizards based on a simple template (possibly json)

Once that is in place, the plugin can also be used to generate an agent making wizard.

Therefore, having a built-in way to serialize/store wizards (versioning!) would be useful.

CoinCartel commented 1 year ago

Well ive never installed this yet but having installed a bunch of other autogpt-based but more advanced (should i of said that?) yes, using openai should be an option not a given see: Agent-LLM

Notice how the env file allows for everything (except the option to host in a docker since it would be i think impossible)

CoinCartel commented 1 year ago

a wizard making plugin, so that you can have your cake and eat it in this case:

we would be reviewing the 3-5 main python frameworks to set up wizards. Use the plugin template to register a few new command options to GENERATE/MODIFY/EXECUTE wizards based on a simple template (possibly json)

Once that is in place, the plugin can also be used to generate an agent making wizard.

Therefore, having a built-in way to serialize/store wizards (versioning!) would be useful.

image
CoinCartel commented 1 year ago

Lol ;)

anonhostpi commented 1 year ago

Did I just scan a QR code just to open a gif meme? lol

CoinCartel commented 1 year ago

Ok so seeing that i wont get a setup file tonight could someone guide me through seting this up with weaviate longchain

Yup!

CoinCartel commented 1 year ago

Ok so seeing that i wont get a setup file tonight could someone guide me through seting this up with weaviate longchain in a docker on my mac that will be also cloned on a GCP VM

anonhostpi commented 1 year ago

That's a convo better suited for the discord server or GH discussions. Not really for GH Issues

CoinCartel commented 1 year ago

Oh yes, i forgot where i was!

Boostrix commented 1 year ago

the wizard making plugin is the most general approach and the most useful one after having set up/configured Auto-GPT. The only issue is, at this point, the agent cannot access OpenAI yet, because it's missing the OpenAI API key. But that would be a matter of coming up with a command type that is to be executed directly without going through the LLM layer (this command/type may be removed or disabled afterwards).

So, in essence, you end up having a single wizard step (first question!) to get the OpenAI API key from the user, init the system and let the rest of the system work through the remaining steps/pages of the setup wizard - which may involve disconnecting/reconnecting the API or even re-initializing the agent, but it will just work.

Like I said, the final step would then involve instructions on copying the config to the right place or giving it permission to do so for you.

Afterwards, the same mechanism could be used to set up projects, agents, tasks and workspaces - so all solved, using a single approach.

Also, these various "wizards" (think json files) could be stored on disk, and shared with other users - even maintained in git, so that folks can easily share their own additions/changes and let the system evolve over time.

For the docker/web UI use-case, you would be able to execute the same sort of wizard by using just the json files, but not going through something like the local Python module, but instead hooking up the back-end to a REST/AJAX interface.

CoinCartel commented 1 year ago

https://giphy.com/clips/RobertEBlackmon-clapping-finally-standing-ovation-Y4I1zxZ0lrVMnEeSSD#:~:text=Reactions,Terms

CoinCartel commented 1 year ago

sorry i cant make the gifffy just appear, and im not in the mood to search in putting it in an iframe

anonhostpi commented 1 year ago

You need to use a .gif URL:

![image](https://media.giphy.com/media/v1.Y2lkPTc5MGI3NjExYmNjMGJkNWZmZDFmOTIxMmJkYTdkY2JlYTRlZTllYTBkYTU0NmNhMSZlcD12MV9pbnRlcm5hbF9naWZzX2dpZklkJmN0PWc/f3jaUOPTe53Ah0VzZ3/giphy.gif)

image

CoinCartel commented 1 year ago

and ![image]?

anonhostpi commented 1 year ago

Yup embedded markdown format=![caption](file)

CoinCartel commented 1 year ago

So discord eh? Do I need an invite?

anonhostpi commented 1 year ago

Nope. Just join up homie

https://discord.gg/autogpt

Boostrix commented 1 year ago

Plugin candidate, once the dust settles with #3652 Progress update at: https://github.com/Significant-Gravitas/Auto-GPT/issues/1412#issuecomment-1543602114

github-actions[bot] commented 1 year ago

This issue has automatically been marked as stale because it has not had any activity in the last 50 days. You can unstale it by commenting or removing the label. Otherwise, this issue will be closed in 10 days.

github-actions[bot] commented 12 months ago

This issue was closed automatically because it has been stale for 10 days with no activity.