LangChain组件Tools/Toolkits详解(2)——装饰器@tool
- 本篇摘要
- 14. LangChain组件Tools/Toolkits详解
- 14.2 装饰器@tool
- 14.2.1 创建工具
- 14.2.2 配置模式schema
- 14.2.3 文档字符串解析parse_docstring
- 参考文献
本章目录如下:
- 《LangChain组件Tools/Toolkits详解(1)——Tools接口与创建工具概述》
- 《LangChain组件Tools/Toolkits详解(2)——装饰器@tool》
- 《LangChain组件Tools/Toolkits详解(3)——结构化工具StructuredTool》
- 《LangChain组件Tools/Toolkits详解(4)——处理Error》
- 《LangChain组件Tools/Toolkits详解(5)——返回产物artifact》
- 《LangChain组件Tools/Toolkits详解(6)——特殊类型注解》
- 《LangChain组件Tools/Toolkits详解(7)——工具调用与Toolkits》
本篇摘要
本章介绍LangChain组件Tools/Toolkits。
14. LangChain组件Tools/Toolkits详解
工具(Tools)是一种封装函数及其模式schema的方法,可以传递给聊天模型,使模型能够请求执行带有特定输入的工具函数,例如从数据库获取数据、发出API请求或运行自定义代码。LangChain中的tool抽象类将Python函数与定义函数名称、描述和预期参数的模式schema关联起来,以明确创建工具的作用及调用方式。本节将从Tools接口与创建工具概述、装饰器@tool、结构化工具StructuredTool、处理Error、返回产物artifact、特殊类型注解、工具调用和Toolkits等方面详细介绍工具。
14.2 装饰器@tool
装饰器@tool是创建自定义工具的最简单方式,它简化了工具创建过程。默认情况下,装饰器会使用函数名称作为工具名称,但可以通过传递一个字符串作为第一个参数来覆盖此行为。此外,装饰器会将函数的文档字符串(docstring)作为工具的描述——因此必须提供文档字符串。装饰器@tool还支持以下功能:
- 自动推断工具的名称、描述和预期参数,同时也支持自定义;
- 自定义工具返回的artifact工件类型(例如图像、数据框架等);
- 从模式(以及模型)中,使用注入的工具参数隐藏输入参数。
本节将讲述这些功能。
14.2.1 创建工具
使用@tool装饰器创建工具的方法是:在定义一个函数后,用@tool装饰它,以创建一个实现工具接口的工具,这种方法适用于大多数情况。示例代码如下:
from langchain_core.tools import tool@tool
def multiply(a: int, b: int) -> int:"""Multiply two numbers."""return a * bmultiply.invoke({"a": 2, "b": 3}) # 6
# Let's inspect some of the attributes associated with the tool.
print(multiply.name)
print(multiply.description)
print(multiply.args)
multiply
Multiply two numbers.
{'a': {'title': 'A', 'type':