Pythagora-io / gpt-pilot

The first real AI developer
Other
29.42k stars 2.93k forks source link

[epic] Agent Routing #91

Open nalbion opened 11 months ago

nalbion commented 11 months ago

As a user I want to start GPT Pilot with various types of initial prompts So that I can build a new app, modify an existing app or debug an issue.

See also #73

Start a non-trivial project

A simple chat app with real time communication

Compatibility with Auto-GPT benchmarks - #73

Write the word 'Washington' to a .txt file

Interact with issue management - #83

Issue 89 is done

nalbion commented 10 months ago

After studying the documentation and source for LangChain Agents and Microsoft's AutoGen I've come up with an idea for how we could make some architectural changes to allow a lot more flexibility in the future.

image

nalbion commented 10 months ago

The objective being that we end up with an extensible framework which integrates with existing tools and agents: (See also Support for Auto-GPT Plugins, which is not represented in this diagram, but could be employed by any of the worker Agents in red or green)

image

mnieber commented 10 months ago

It would be interesting to consider how such an architecture could support the existing use-case (gpt pilot with its current agents) without really changing anything, so that the "open" case (where you can add any agents to the system) is a generalization of the "closed" case (gpt pilot with a fixed set of agents).

For example, TechLead could describe the other agents that it depends upon. It can declare that it needs to work together with a Developer agent, and offer a description of what a Developer agent should be capable of. In that case, TechLead can still send messages to Developer (*), but the router will intercept those messages and find out if there is any available agent that can take the Developer role (using the "Developer" role description and the self-description of every agent).

(*) in this case, TechLead only has an abstract notion of "Developer". It doesn't know which concrete Developer agent it is communicating with.

PS In that case, the use of the RouterAgent can also be toggled on and off. If it's off, then the "Developer" role is only matched if there is an agent with that exact name. I'm just brainstorming here (I'm sure there are all kinds of details to be sorted out), but I like both the "closed" model (because it's simple and predictable) and the "open" model (because it's more general) so it would be nice to support both.

nalbion commented 9 months ago

GitHub CoPilot now lets you address agents directly using @workspace or @vscode in addition to /slash commands which the agents support

wayland commented 9 months ago

@nalbion Love your work!

@mnieber Interesting idea (where they declare what agents they want to work with). Could tie in well with my comments at https://github.com/Pythagora-io/gpt-pilot/issues/182#issuecomment-1836435382 .