【Langchain】Tool模块:自定义工具、自动选择与内置工具使用指南

26 阅读1分钟

1.tool模块是干啥的

让大模型调用 外部函数或API

2.tool模块怎么用啊?

#1.定义一个工具 
@tool
def get_weather(city: str) -> str:
    """查询城市天气"""
    resp =     requests.get(f"https://wttr.in/{city}?format=3")
    return resp.text

# 2.创建模型
llm = ChatOpenAI(model="gpt-4o")

# 3.初始化 agent,并注册工具
agent = initialize_agent(
    tools=[add],
    llm=llm,
    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION
)
只要把工具注册进去, Agent就能自己决定什么时候  用哪个 怎么用

3.如何多个工具自动选择

# 工具1:查天气
@tool
def get_weather(city: str) -> str:
    """查询城市天气"""
    resp = requests.get(f"https://wttr.in/{city}?format=3")
    return resp.text

# 工具2:计算加法
@tool
def add(a: int, b: int) -> int:
    """计算两个数的和"""
    return a + b

llm = ChatOpenAI(model="gpt-4o")

# 注册多个工具
agent = initialize_agent(
    tools=[get_weather, add],
    llm=llm,
    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True   # 打印中间推理过程
)

4.内置工具怎么用

from langchain.utilities import SerpAPIWrapper

search = SerpAPIWrapper()  # 直接实例化就可以
agent = initialize_agent(
    tools=[search],
    llm=llm,
    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION
)

5.langchain内置的实用工具列举

SerpAPIWrapper:网页搜索;
PythonREPLTool:执行 Python 代码;
ArxivQueryRun:查论文;
WikipediaQueryRun:查百科;
RequestsGetTool:HTTP 请求;
SQLDatabaseToolkit:连接数据库查询;
BrowserToolkit:网页操作。