Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Interactive set-up file #3820

Closed
1 task done
CoinCartel opened this issue May 5, 2023 · 38 comments
Closed
1 task done

Interactive set-up file #3820

CoinCartel opened this issue May 5, 2023 · 38 comments
Labels
enhancement New feature or request setup Issues with getting Auto-GPT setup on local machines Stale

Comments

@CoinCartel
Copy link

Duplicates

  • I have searched the existing issues

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
Copy link

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

@Boostrix
Copy link
Contributor

Boostrix commented May 5, 2023

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:

  • PyInquirer - A Python library that provides a simple interface to create interactive command-line user interfaces.
  • Questionary - Another Python library that allows you to create interactive command-line user interfaces with minimal code.
  • Prompt Toolkit - A library that provides building blocks for creating command-line interfaces, including input prompts and menus.
  • Inquirer - A Python port of the popular Node.js library Inquirer.js, which allows you to create interactive command-line user interfaces with a variety of input types.

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
Copy link

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

@Boostrix
Copy link
Contributor

Boostrix commented May 5, 2023

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
Copy link

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
Copy link
Author

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
Copy link

anonhostpi commented May 5, 2023

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
Copy link
Contributor

Boostrix commented May 5, 2023

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
Copy link
Author

I was just thinking the same thing!

@CoinCartel
Copy link
Author

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
Copy link
Contributor

Boostrix commented May 5, 2023

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
Copy link
Author

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
Copy link
Contributor

Boostrix commented May 5, 2023

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
Copy link
Author

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

@CoinCartel
Copy link
Author

or an agent maker wizard?

@CoinCartel
Copy link
Author

or an agent maker wizard?

Now that I like

@anonhostpi
Copy link

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
Copy link

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

@Boostrix
Copy link
Contributor

Boostrix commented May 5, 2023

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

Lol ;)

@anonhostpi
Copy link

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

@CoinCartel
Copy link
Author

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

Yup!

@CoinCartel
Copy link
Author

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
Copy link

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

@CoinCartel
Copy link
Author

Oh yes, i forgot where i was!

@Boostrix
Copy link
Contributor

Boostrix commented May 5, 2023

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
Copy link
Author

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

@anonhostpi
Copy link

You need to use a .gif URL:

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

image

@CoinCartel
Copy link
Author

and ![image]?

@anonhostpi
Copy link

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

@CoinCartel
Copy link
Author

So discord eh? Do I need an invite?

@anonhostpi
Copy link

Nope. Just join up homie

https://discord.gg/autogpt

@Boostrix
Copy link
Contributor

Boostrix commented May 5, 2023

Plugin candidate, once the dust settles with #3652
Progress update at: #1412 (comment)

Boostrix added a commit to Boostrix/Auto-GPT that referenced this issue May 6, 2023
currently, the project is being re-architected, and that also involves the plugin system.
Thus, not a good time to start writing a plugin or making changes to the system as a whole.

It is possible that the wizard framework will end up being a separate plugin/repo - but for now this is just to gather interest.
@k-boikov k-boikov added enhancement New feature or request setup Issues with getting Auto-GPT setup on local machines labels May 6, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Sep 6, 2023

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 github-actions bot added the Stale label Sep 6, 2023
@github-actions
Copy link
Contributor

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

@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Sep 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request setup Issues with getting Auto-GPT setup on local machines Stale
Projects
None yet
Development

No branches or pull requests

4 participants