Release Highlights
- Easier and more flexible configuration: Simplified config setup, moving away from a global CONFIG to use Config instances for more granular control. Typical use cases involve assigning different LLMs to different Roles. Please check out here for detailed usage.
- Introduced Context: Context is made up of config, repo, workspace, etc. Each Role can possess its own context, allowing more flexible context management.
- Added metagpt --init-config command: A more friendly setup process for pypi package users.
- Repo restructuring: Consolidated FileRepo and GitRepo responsibilities to simplify code and logic.
- Subscription to tags: Changed the concept of subscription to tags for improved readability and usability.
- Removal of explicit serialize/deserialize functions: Removed these functions from Role, used mixin instead for better clarity.
- Supported initializing ActionNode from pydantic.BaseModel: An easy and structured way to define ActionNode.
- WritePRD Action restructuring: Simplified code, enhanced effectiveness, and fixed buggy logic.
- Env restructuring (experimental): Re-abstracted Env to accommodate various environments more effectively; Uses mark_as_readable mark_as_writable to decorate APIs to uniformly observe and act on the environment through observe and step.
- Embraced Multi-modality: Added a vision agent based on GPT-4V, check out the example here!
- Improved Incremental development: Higher success rate of incremental development compared to previous version.
- Introduced CodeInterpreter: A general agent who solves problems through coding. The agent leverages on plans and tools, capable of tackling a wide range of problems, including data visualization, machine learning modeling, math reasoning, web scraping, webpage imitating, etc. We are adding examples here!
What's Changed
Backwards Incompatible Changes
- IMPORTANT: We removed config.yam, key.yaml and switched to a minimal config2.yaml. Please check the latest setup method here
Features
- Easier and more flexible configuration, introduced Context, embraced Multi-modality, improved Incremental development, introduced CodeInterpreter, and more (see release highlights) #852 by @geekan @mannaandpoem @garylin2099 @shenchucheng @voidking @iorisa @better629 @stellaHSR @orange-crow @buttogo @FromCSUZhou @luxiangtaoya
- Supported Generating class views from source code #676 by @iorisa
Bugfixes and improvements
- Improved testing SOP, increased test coverage, and fix bugs during testing, ensuring quality and preparing for more effective development. #673 #678 #685 #688 #689 #690 #694 #696 #698 #702 #703 #707 #709 #710 #711 #713 #715 #718 #727 #729 #863 #867 by @shenchucheng @voidking @iorisa @garylin2099
- Fixed is_human not working at Role initialization #715 by @kkdev163
- Fixed system_prompt error at BaseLLM #732 by @better629
- Constrain the language for the qa_engineer #743 by @arnaudgelas
- Fixed: requirements.txt not written to the disk #744 by @arnaudgelas
- Fixed multiple issues at qa_engineer.py, including crashing if no code_doc, generating tests for non-python files, trying to install dependencies when there are none #765 #775 by @arnaudgelas
- Upgraded Zhipu API #770 #861 by @better629
- Fixed prompt logic when defining to whom the message should be sent. #785 by @arnaudgelas
- Fixed JSONDecodeError when parsing LLM outputs #799 by @HuZixia
- Modified get_choice_delta_text for safer dict access while using ZHIPU API #801 by @pkdog