-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Moa #2628
base: main
Are you sure you want to change the base?
Moa #2628
Conversation
Ngl this is a hell of a PR. I hope @paul-gauthier accepts it. |
key question -- is this any good? @gembancud can you provide any kind of evaluations, or performance metrics? |
This is with Sonnet and Gpt-4o together.
Will look to chaining o1, and 1206 as well, as soon as my rate limits relax abit! |
@gembancud so I understand that it is not currently any better than the Sonnet alone. @paul-gauthier recommend to reject because: Having to wait approx. 1 minute per question is fundamentally not compatible with the original vision of Aider -- of being an user-interactive system. @gembancud it's a great exercise but at this time I would recommend that you keep this private; we should avoid |
no autocomplete suggestion for /discuss |
my bad, i accidentally overrode My deepest apologies, i have been a bad contributor, not uploading a method use for this technique. I will do though soon, ive done prompt changes, and i pretty much use it as a daily driver now. |
Thanks for your interest in aider and for preparing this PR. This is a very large PR, that radically alters how aider would function. It seems unlikely that I could merge it would a pretty strong set of objective, quantitative evidence that it provides significant benefits. Have you been benchmarking this approach? |
Thank you for the attention! :) I have been recently dismayed by jerzydziewierz's remarks, coupled that the expensive benchmark tests i ran didnt breach the saturation mark. I have not had the time and financial confidentiality to test beyond the code editing benchmark unfortunately. More of my benchmarks are in a discord thread easily dug through the showcases channel Though you may notice the commits in here are continuous, that is evidenced by my tweaking nearly everyday as I have it as a main driver for development moving forward. I do think the code quality in here is much better compared to I am on the lookout for QoL suggestions though, to make it easier for everyone to try it out, as I think thats just a much more organic adoption if people look beyond the But if my message does not answer the base need for quantitative evidence then, Im fine with postponing the fight until the next release of benchmarks with reduced saturation. On a minor note, |
Dear @gembancud , sorry if you feel insulted, My personal experience with these auto coding tools is that they very quickly fall into the trap of under-specification: that is, the problem shifts into eliciting what does the user even want and need in the first place, rather than providing the solution. Hence, Aider has been envisioned as an coder-interactive tool rather than an auto-chatbot arena with some agentic effects on the source code. as @paul-gauthier said, May I suggest that you can fork aider (if licence permits) and develop your vision there, and when you can demonstrate to a few people that your approach is superior, the word of mouth will surely spread. As to benchmarking, you indeed do not need to demonstrate superiority on any of the big official benchmarks that may cost hundreds of dollars to run. Just demonstrate it nicely on one or a few examples specifically tailored to the strength of what you are proposing here. I honestly wish you best of luck with your passion project. |
Hi @gembancud, I am happy to sponsor any benchmarking cost that you may need :) |
Im back with some developments and a short demo of how it can be used ObservationsBenchmark performance is believed to be poor. Thats the base testing i did with gpt4o and o1-mini at the least. I havent tested it with better models due to budget constraints. If that didn't turn you off, good, because i use this method everyday, and pretty much avoid using any other ai code assistants, because they dont have multi-model collab. :)
Usage (Try it yourself)Testing the MOA Branch for AiderThis branch introduces the MOA feature to Aider. Follow the steps below to test out the branch in your own environment. Step 1: Clone the RepositoryClone the branch from my fork using the following command: git clone -b moa https://github.com/gembancud/aider.git Then navigate into the repository: cd aider Step 2: Set Up a Virtual Environment (Recommended)Warning: Installing in the global environment may overwrite your current packages. We strongly recommend using a virtual environment. Using
|
Hey! Thanks for commenting on my feature request - looks like you beat me to it with this idea. Since you asked me to take a look, I'll give you my first impressions. What you've done here is very cool and it's certainly inspiring. Open-source needs people like you who push the boundary and build new things on top of existing software, which goes without saying. However, I found it a little difficult to understand why I should use MoE. Big PRs are quite hard to swallow and for them to go well, the presentation of your PR needs to be just as impactful as it is big in terms of number of lines introduced. It would help your case a lot if you had a clear demonstration that provides a strong argument as to why I should use it, and it'd also help if the usage could be simplified. I say this because I really believe in the idea, but I think the presentation and approach needs work. After spending around 5-10 minutes looking into the PR I still struggled to understand how I'd go about using it. If the idea was as simple as a way to configure or enhance the architect mode, this would be a lot easier of a pill to swallow. I really appreciate your honesty about the benchmark results, but as you can imagine people need to see positive results in order to consider such a big change. Even if it was a small enhancement, I think people need to see convincing proof that it's a real improvement. In all cases, thanks for showing me this, and I really hope some variation of this feature gets implemented soon, because there's no doubt in my mind about its massive potential, and perhaps we can work together on it if you're interested (in particular, I'm considering developing my own personal enhancement of the architect mode which implements these ideas, but I'm open for us to work together on this if you'd like) All the best and thanks again! |
Add Mixture of Architects (MOA) Feature
Why choose between r1, o3, and sonnet, when you can have 'em all!
Overview
This PR introduces a powerful new feature called "Mixture of Architects" (MOA) - a collaborative AI architecture where multiple LLM "architects" work together to solve programming tasks. Each architect maintains its own conversation thread while being able to see and respond to other architects' proposals, enabling true multi-agent collaboration.
EDIT: Below is a long-winded explanation of the idea. But it should be concisely demonstrated in a later comment: here
Click to expand long explanation
Key Features
Multiple Architect Collaboration
Discussion Flow
The discussion proceeds in rounds, with each round following this pattern:
Commands
Users can interact with MOA using three main commands:
/discuss <message>
(or just type normally) - Start/continue a discussion round/code <message>
- Move to implementation phase/drop <architect-name>
- Remove an architect from the discussionImplementation Phase
When moving to implementation (
/code
), the entire discussion history is compiled chronologically with full context. The editor coder then decides how to implement the changes based on:Technical Implementation
Key Components
MixtureOfArchitectsCoder
: Main class implementing the MOA functionalityArchitectAgent
: Class representing individual architects<user_message>
- Contains user queries<proposal>
- Contains an architect's specific proposal<architect name='NAME'>
- Contains full architect responsesCollaborative Design
/code
messageBenefits
Example Usage & Message Flow
Visual Flow Representation
Detailed Example with Clear Message Flow
🗣️ User Initiates
👤 ALPHA's Turn
What Alpha Sees:
Alpha's Response:
👤 BRAVO's Turn
What Bravo Sees:
Bravo's Response:
👤 CHARLIE's Turn
What Charlie Sees:
Charlie's Response:
Key Points About the Flow
Sequential Processing:
XML Structure:
<user_message>
wraps user inputs<architect name='NAME'>
wraps each architect's full response<proposal>
wraps specific proposals within responsesContext Accumulation:
Implementation Phase:
/code
command triggers the editorTesting
Future Enhancements
Breaking Changes
None. This is a new feature that doesn't affect existing functionality.
Dependencies
No new dependencies required.
This PR represents a significant enhancement to aider's capabilities, enabling more sophisticated and collaborative code generation and modification. The Mixture of Architects approach provides a unique way to leverage multiple LLMs for better code quality and more thorough problem solving.
Please contact me at discord for discussion :)
upnp