MetaGPT 工具:让你的 AI 智能体拥有“外挂” 2024-06-19 作者 C3P00 在之前的教程中,我们学习了如何使用记忆来提升智能体的能力。但有时候,智能体需要与外部环境进行交互,例如获取信息、执行操作等等。这就是 MetaGPT 工具发挥作用的地方。 MetaGPT 工具可以帮助你的智能体扩展能力,就像给它安装了“外挂”一样。本教程将带你学习如何创建和使用 MetaGPT 工具。 创建工具 在 MetaGPT 中,创建工具非常简单,只需在 metagpt/tools/libs 目录中创建自己的函数或类即可。 步骤: 创建函数或类: 编写函数或类,用于实现与外部环境的交互。 添加 Google 风格的文档字符串: 为每个函数或类添加文档字符串,用于描述其用途、输入参数和预期输出。 使用 @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 创建和使用工具。通过创建工具,你可以扩展智能体的能力,使其能够执行更复杂的任务。 更多学习资源 MetaGPT 文档:了解更多关于 MetaGPT 的信息。 MetaGPT Github:查看 MetaGPT 的源代码和示例。 MetaGPT 论文:深入了解 MetaGPT 的技术细节。
在之前的教程中,我们学习了如何使用记忆来提升智能体的能力。但有时候,智能体需要与外部环境进行交互,例如获取信息、执行操作等等。这就是 MetaGPT 工具发挥作用的地方。
MetaGPT 工具可以帮助你的智能体扩展能力,就像给它安装了“外挂”一样。本教程将带你学习如何创建和使用 MetaGPT 工具。
创建工具
在 MetaGPT 中,创建工具非常简单,只需在
metagpt/tools/libs
目录中创建自己的函数或类即可。步骤:
@register_tool
装饰器: 使用@register_tool
装饰器将函数或类注册到工具注册表中。示例:
假设你想创建一个计算阶乘的工具,名为
calculate_factorial
。你可以创建一个名为calculate_factorial.py
的文件,并在其中添加以下代码:使用工具
创建工具后,你可以使用
DataInterpreter
角色来使用它。示例:
假设你想要使用
calculate_factorial
工具来计算 5 的阶乘。你可以创建一个名为main.py
的文件,并在其中添加以下代码:这段代码首先导入必要的模块,然后定义一个
main
函数。在main
函数中,我们创建了一个DataInterpreter
角色,并使用tools
参数指定了要使用的工具。最后,我们使用role.run()
方法运行角色,并打印输出结果。工具定制
MetaGPT 支持多种工具定制方式,例如:
calculate_factorial
示例。@register_tool
装饰器注册它。示例:
假设你想创建一个名为
Calculator
的类,用于执行基本的算术运算和计算阶乘。你可以创建一个名为calculator.py
的文件,并在其中添加以下代码:总结
本教程展示了如何使用 MetaGPT 创建和使用工具。通过创建工具,你可以扩展智能体的能力,使其能够执行更复杂的任务。
更多学习资源