LangChain 工具创建方法总结
.@tool装饰器创建工具
这是什么
主要依赖库:
from pydantic import BaseModel, Fieldfrom langchain_core.tools import tool
定义的类:
MultiplyInput
有什么用
通过本文件学习:
- 相关库的导入和使用方法
- 类的创建和使用
- LangChain 的实际应用场景
示例代码
python
from pydantic import BaseModel, Field
from langchain_core.tools import tool
class MultiplyInput(BaseModel):
a: int = Field(description="第一个数字")
b: int = Field(description="第二个数字")
@tool("multiply_tool", return_direct=True, args_schema=MultiplyInput)
def multiply(a: int, b: int) -> int:
流程图
text
┌─────────┐
│ Input │
└────┬────┘
│
▼
┌─────────┐
│Process │
└────┬────┘
│
▼
┌─────────┐
│ Output │
└─────────┘
.StructuredTool类方法创建工具
这是什么
主要依赖库:
from pydantic import BaseModel, Fieldfrom langchain_core.tools import StructuredTool
定义的类:
MultiplyInput
有什么用
通过本文件学习:
- 相关库的导入和使用方法
- 类的创建和使用
- LangChain 的实际应用场景
示例代码
python
from pydantic import BaseModel, Field
from langchain_core.tools import StructuredTool
class MultiplyInput(BaseModel):
a: int = Field(description="第一个数字")
b: int = Field(description="第二个数字")
def multiply(a: int, b: int) -> int:
return a * b
calculator = StructuredTool.from_function(
func=multiply,
coroutine=amultiply,
name="multiply_tool",
description="将传递的两个数字相乘",
return_direct=True,
args_schema=MultiplyInput,
print("名称: ", calculator.name)
print("描述: ", calculator.description)
print("参数: ", calculator.args)
print("直接返回: ", calculator.return_direct)
print(calculator.invoke({"a": 2, "b": 8}))
流程图
text
┌─────────┐
│ Input │
└────┬────┘
│
▼
┌─────────┐
│Process │
└────┬────┘
│
▼
┌─────────┐
│ Output │
└─────────┘
.BaseTool子类创建工具
这是什么
主要依赖库:
from typing import Any, Typefrom pydantic import BaseModel, Fieldfrom langchain_core.tools import BaseTool
定义的类:
MultiplyInputMultiplyTool
有什么用
通过本文件学习:
- 相关库的导入和使用方法
- 类的创建和使用
- LangChain 的实际应用场景
示例代码
python
from typing import Any, Type
from pydantic import BaseModel, Field
from langchain_core.tools import BaseTool
class MultiplyInput(BaseModel):
a: int = Field(description="第一个数字")
b: int = Field(description="第二个数字")
class MultiplyTool(BaseTool):
return kwargs.get("a") * kwargs.get("b")
calculator = MultiplyTool()
print("名称: ", calculator.name)
print("描述: ", calculator.description)
print("参数: ", calculator.args)
print("直接返回: ", calculator.return_direct)
print(calculator.invoke({"a": 2, "b": 8}))
流程图
text
┌─────────┐
│ Input │
└────┬────┘
│
▼
┌─────────┐
│Process │
└────┬────┘
│
▼
┌─────────┐
│ Output │
└─────────┘