标签: AGI

  • MetaGPT 人机协作:让 AI 与人类并肩作战

    在之前的教程中,我们学习了如何创建和使用智能体以及工具。但有时候,我们希望在 AI 系统中引入人类的参与,例如在项目中进行质量保证、在关键决策中提供指导或在游戏中进行角色扮演。这就是 MetaGPT 人机协作功能发挥作用的地方。

    本教程将带你学习如何将人类引入到 MetaGPT 的 AI 系统中,实现人机协作。

    人机交互

    MetaGPT 允许你在 LLM 驱动的智能体和人类之间进行交互。

    示例:

    我们以之前的多智能体教程为例。原本,SimpleReviewer 角色由 LLM 扮演。假设我们想要对审查过程有更多控制权,可以自己扮演 SimpleReviewer 角色。

    只需要在初始化 SimpleReviewer 时设置 is_human=True 即可。代码如下:

    team.hire(
        [
            SimpleCoder(),
            SimpleTester(),
            # SimpleReviewer(),  # 原代码
            SimpleReviewer(is_human=True),  # 修改后的代码
        ]
    )

    现在,你将以人类的身份扮演 SimpleReviewer,与两个 LLM 驱动的智能体 SimpleCoderSimpleTester 进行交互。你可以对 SimpleTester 生成的单元测试进行评论,例如要求增加覆盖率或边缘情况测试。你的反馈将被发送回 SimpleTester,以便它编写新版本的测试用例。

    交互方式

    每次轮到人类进行响应时,运行过程将会暂停,等待你的输入。只需输入你想要的内容,你的消息就会被发送到智能体。

    限制:

    • 目前,交互是通过终端输入进行的,对于多行或结构化的文本输入不太方便。
    • 用户必须遵守提示词的内容或格式要求,以便在人类输入后,逻辑能够正常运行。

    总结

    本教程展示了如何将人类引入到 MetaGPT 的 AI 系统中,实现人机协作。通过人机协作,你可以更好地控制 AI 系统,并发挥人类的优势,例如创造力、判断力等等。

    更多学习资源

  • MetaGPT 工具:让你的 AI 智能体拥有“外挂”

    在之前的教程中,我们学习了如何使用记忆来提升智能体的能力。但有时候,智能体需要与外部环境进行交互,例如获取信息、执行操作等等。这就是 MetaGPT 工具发挥作用的地方。

    MetaGPT 工具可以帮助你的智能体扩展能力,就像给它安装了“外挂”一样。本教程将带你学习如何创建和使用 MetaGPT 工具。

    创建工具

    在 MetaGPT 中,创建工具非常简单,只需在 metagpt/tools/libs 目录中创建自己的函数或类即可。

    步骤:

    1. 创建函数或类: 编写函数或类,用于实现与外部环境的交互。
    2. 添加 Google 风格的文档字符串: 为每个函数或类添加文档字符串,用于描述其用途、输入参数和预期输出。
    3. 使用 @register_tool 装饰器: 使用 @register_tool 装饰器将函数或类注册到工具注册表中。

    示例:

    假设你想创建一个计算阶乘的工具,名为 calculate_factorial。你可以创建一个名为 calculate_factorial.py 的文件,并在其中添加以下代码:

    # metagpt/tools/libs/calculate_factorial.py
    import math
    from metagpt.tools.tool_registry import register_tool
    
    # 使用装饰器注册工具
    @register_tool()
    def calculate_factorial(n):
        """
        计算一个非负整数的阶乘。
        """
        if n < 0:
            raise ValueError("输入必须是非负整数")
        return math.factorial(n)

    使用工具

    创建工具后,你可以使用 DataInterpreter 角色来使用它。

    示例:

    假设你想要使用 calculate_factorial 工具来计算 5 的阶乘。你可以创建一个名为 main.py 的文件,并在其中添加以下代码:

    # main.py
    import asyncio
    from metagpt.roles.di.data_interpreter import DataInterpreter
    from metagpt.tools.libs import calculate_factorial
    
    async def main(requirement: str):
       role = DataInterpreter(tools=["calculate_factorial"])  # 集成工具
       await role.run(requirement)
    
    if __name__ == "__main__":
       requirement = "请计算 5 的阶乘。"
       asyncio.run(main(requirement))

    这段代码首先导入必要的模块,然后定义一个 main 函数。在 main 函数中,我们创建了一个 DataInterpreter 角色,并使用 tools 参数指定了要使用的工具。最后,我们使用 role.run() 方法运行角色,并打印输出结果。

    工具定制

    MetaGPT 支持多种工具定制方式,例如:

    • 从函数定制工具: 如上面的 calculate_factorial 示例。
    • 从类定制工具: 你可以创建一个类,并使用 @register_tool 装饰器注册它。

    示例:

    假设你想创建一个名为 Calculator 的类,用于执行基本的算术运算和计算阶乘。你可以创建一个名为 calculator.py 的文件,并在其中添加以下代码:

    # metagpt/tools/libs/calculator.py
    import math
    from metagpt.tools.tool_registry import register_tool
    
    # 使用装饰器注册工具,并指定标签和包含的函数
    @register_tool(tags=["math"], include_functions=["__init__", "add", "subtract", "multiply", "divide", "factorial"])
    class Calculator:
       """
       一个简单的计算器工具,可以执行基本的算术运算和计算阶乘。
       """
    
       @staticmethod
       def add(a, b):
           """
           计算两个数字的和。
           """
           return a + b
    
       @staticmethod
       def subtract(a, b):
           """
           计算两个数字的差。
           """
           return a - b
    
       @staticmethod
       def multiply(a, b):
           """
           计算两个数字的积。
           """
           return a * b
    
       @staticmethod
       def divide(a, b):
           """
           计算两个数字的商。
           """
           if b == 0:
               return "错误:除数不能为零"
           else:
               return a / b
    
       @staticmethod
       def factorial(n):
           """
           计算一个非负整数的阶乘。
           """
           if n < 0:
               raise ValueError("输入必须是非负整数")
           return math.factorial(n)

    总结

    本教程展示了如何使用 MetaGPT 创建和使用工具。通过创建工具,你可以扩展智能体的能力,使其能够执行更复杂的任务。

    更多学习资源

人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网
Page Stats: PV: 2308 | UV: 1241
Last updated: 2025-06-25 13:52:12
沪ICP备2024052574号-1