多智能体入门
多智能体入门
2024年5月28日修改
在上一章中,我们简要讨论了单智能体的创建。虽然对许多情况来说,单智能体可能已经足够,但更复杂的任务通常需要协作和团队合作,这也就是多智能体为什么必不可少的原因。MetaGPT 的核心优势也在于轻松灵活地开发一个智能体团队。在 MetaGPT 框架下,用户可以通过少量代码实现智能体之间的交互。
完成本节,你将能够:
1.
理解智能体之间如何进行交互
2.
开发你的第一个智能体团队
运行“软件公司”示例
代码块
metagpt "write a function that calculates the product of a list"
开发你的第一个智能体团队
希望你会发现软件创业示例很有启发。也许现在你已经有了灵感,想要开发一个根据你的独特需求而定制的智能体团队。在本节中,我们将继续在智能体入门中的简单代码示例中添加更多角色,并引入智能体之间的交互协作。
让我们还雇佣一名测试人员和一名审阅人员携手与编码人员一起工作。这开始看起来像一个开发团队了,不是吗?总的来说,我们需要三个步骤来建立团队并使其运作:
1.
定义每个角色能够执行的预期动作
2.
基于标准作业程序(SOP)确保每个角色遵守它。通过使每个角色观察上游的相应输出结果,并为下游发布自己的输出结果,可以实现这一点。
3.
初始化所有角色,创建一个带有环境的智能体团队,并使它们之间能够进行交互。
完整的代码在本教程的末尾可用
定义动作和角色
•
SimpleCoder 具有 SimpleWriteCode 动作,接收用户的指令并编写主要代码
•
SimpleTester 具有 SimpleWriteTest 动作,从 SimpleWriteCode 的输出中获取主代码并为其提供测试套件
•
SimpleReviewer 具有 SimpleWriteReview 动作,审查来自 SimpleWriteTest 输出的测试用例,并检查其覆盖范围和质量
通过上述概述,我们使得 SOP(标准作业程序)变得更加清晰明了。接下来,我们将详细讨论如何根据 SOP 来定义Role。
定义动作
我们列举了三个 Action。
代码块
class SimpleWriteCode(Action):
PROMPT_TEMPLATE: str = """
Write a python function that can {instruction}.
Return ```python your_code_here ``` with NO other texts,
your code:
"""
name: str = "SimpleWriteCode"
async def run(self, instruction: str):
prompt = self.PROMPT_TEMPLATE.format(instruction=instruction)
rsp = await self._aask(prompt)
code_text = parse_code(rsp)
return code_text