MetaGPT智能体开发:创建和使用工具
在 MetaGPT 中创建工具是一个直接的过程,涉及创建自己的函数或类,并将它们放在 metagpt/tools/libs 目录下。本教程提供了一个如何创建工具并在数据解释器DataInterpreter中使用它们的逐步指南。
在 MetaGPT 中创建工具是一个直接的过程,涉及创建自己的函数或类,并将它们放在 metagpt/tools/libs 目录下。本教程提供了一个如何创建工具并在数据解释器DataInterpreter中使用它们的逐步指南。
创建工具的步骤
-
创建预提供的函数或类:
编写专门用于与外部环境进行特定交互的函数或类,并将它们放置在
metagpt/tools/libs目录中。 -
使用谷歌风格的文档字符串(Docstring):
为每个函数或类配备谷歌风格的文档字符串。这作为一个简洁而全面的参考资料,详细说明其用途、输入参数和预期输出。
-
应用@register_tool装饰器:
使用
@register_tool装饰器以确保在工具注册表中准确注册。这个装饰器简化了函数或类与DataInterpreter的集成。
自定义工具案例
为了说明这个过程,请阅读下列从函数和类中自定义工具的示例。
自定义计算阶乘的工具
-
在
pythonmetagpt/tools/libs中创建一个你自己的函数,假设它是calculate_factorial.py,并添加装饰器@register_tool以将其注册为工具# 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) -
在数据解释器
pythonDataInterpreter中使用工具# 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))
注意:
- 别忘了为你的函数编写文档字符串(docstring),这将有助于
DataInterpreter选择合适的工具并理解其工作方式。 - 在注册工具时,工具的名称就是函数的名称。
- 在运行 DataInterpreter 之前,记得从
metagpt.tools.libs导入你的calculate_factorial模块,以确保该工具已被注册。
自定义计算器工具
-
在
pythonmetagpt/tools/libs中创建一个你自己的类,假设它是calculator.py,并添加装饰器@register_tool以将其注册为工具# metagpt/tools/libs/calculator.py import math from metagpt.tools.tool_registry import register_tool # 使用装饰器注册工具 # “math”的tag用于将工具分类为数学工具,include_functions 参数用于指定要包含的函数。这有利于`DataInterpreter`选择并理解工具 @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) -
在数据解释器
pythonDataInterpreter中使用工具# main.py import asyncio from metagpt.roles.di.data_interpreter import DataInterpreter from metagpt.tools.libs import calculator async def main(requirement: str): role = DataInterpreter(tools=["Calculator"]) # 集成工具 await role.run(requirement) if __name__ == "__main__": requirement = "请计算 3 和 11 的和,然后计算 5 的阶乘" asyncio.run(main(requirement))
注意:
- 别忘了为你的类和函数编写文档字符串(docstring),这将有助于
DataInterpreter选择合适的工具并理解其工作方式。 - 在注册工具时,工具的名称就是类的名称。
- 在运行 DataInterpreter 之前,记得从
metagpt.tools.libs导入你的calculator模块,以确保该工具已被注册。
通过遵循这些步骤,用户可以无缝地创建并整合MetaGPT中Tools框架内的工具,使DataInterpreter能够有效地与外部环境交互。
《DeepSeek高效数据分析:从数据清洗到行业案例》聚焦DeepSeek在数据分析领域的高效应用,是系统讲解其从数据处理到可视化全流程的实用指南。作者结合多年职场实战经验,不仅深入拆解DeepSeek数据分析的核心功能——涵盖数据采集、清洗、预处理、探索分析、建模(回归、聚类、时间序列等)及模型评估,更通过金融量化数据分析、电商平台数据分析等真实行业案例,搭配报告撰写技巧,提供独到见解与落地建议。助力职场人在激烈竞争中凭借先进技能突破瓶颈,实现职业进阶,开启发展新篇。

更多推荐



所有评论(0)