geekan / MetaGPT

🌟 The Multi-Agent Framework: First AI Software Company, Towards Natural Language Programming
https://deepwisdom.ai/
MIT License
43.51k stars 5.18k forks source link

MetaGPT and possible enhancements #149

Open gnovelli opened 1 year ago

gnovelli commented 1 year ago

I have used your interesting software and it produces very nice output. I propose these possible ehancements. 1) To provide the possibility, in an iterative fashion, to enhance the software product itself and update all it's architectural views and implementation details until the user stop this iteration. 2) To save checkpoints of such iteration with some versioning control 3) To provide the possibility to restart the iteration from the last checkpoint saved 4) To analyze the code produced and identify any possible manual modification as a part of the produced software lifecycle itself

Firstly point 1.

Other points are more complex.

voidking commented 1 year ago

Good suggestion, thanks a lot. We will take it into consideration. Some of your suggestions are in the roadmap.

gnovelli commented 1 year ago

To make the software development cycle iterative and integrate agents that examine and modify the code, you can adopt an approach similar to the Agile development model. Here's a possible solution:

  1. Phase Definition:

    a. Requirements: Receive the description of the requirements from the customer/user.

    b. Design: Your GPT agent designs a solution based on the requirements.

    c. Implementation: The GPT agent writes the code according to the design.

    d. Review: Another set of agents examines the produced code.

    e. Feedback: The user or another agent provides feedback on the product.

    f. Modification/Iteration: Based on feedback, return to the design or implementation phase.

  2. Reviewing Agents: Create or train specific agents to examine the produced code. These agents could specialize in finding bugs, style issues, or potential improvements.

  3. User Feedback: Implement an interface through which the user can provide specific feedback on the produced software. This feedback could pertain to issues, missing features, or improvement suggestions.

  4. Iteration Agents: These agents take the feedback (from both the reviewing agent and the user) and make the necessary changes to the code or return to the design phase.

  5. Automate the Cycle: Once an iteration is complete, the system should automatically start the next one, unless a stopping criterion is met (e.g., a maximum number of iterations or user approval).

  6. Logging and Tracking: Maintain a detailed record of each iteration, including the changes made, feedback received, and decisions taken. This will help understand and improve the process over time.

  7. Continuous Integration and Continuous Deployment (CI/CD): Consider implementing CI/CD tools to automate the testing and deployment of the software after each iteration.

The success of this approach will largely depend on the quality of the agents you develop and the effectiveness of your interactions with the user. Ensure you have a good feedback mechanism and respond quickly to user needs.

geekan commented 1 year ago

Great idea, this is what we most want to do

kripper commented 6 months ago

Any update on enhancing existing software products?

iorisa commented 6 months ago

Well, the functionality to incrementally add requirements was already supported in version 0.6, and this feature was further enhanced in version 0.7. However, the incremental development mode indeed encountered some issues:

  1. Larger models tend to gradually lose track during the accumulation of requirements.
  2. Class diagrams and sequence diagrams from the original process cannot describe all requirements, such as those regarding development conditions, which may require specific packages or technologies.
  3. Incremental development is based on some existing code rather than code generated by MetaGPT, and so on.
  4. Most importantly, we found that there isn't a suitable test suite available to evaluate our improvements in these areas. Therefore, efforts are focused on establishing a test suite and building a test flow recently.

We believe that these foundational efforts will accelerate research in incremental development in the future.