Skip to content

Tools 工具调用

工具允许模型与外部系统交互。在 LangChain 中,工具就是 Python 函数——带上一些元数据。

定义工具

使用 @tool 装饰器

python
from langchain.tools import tool

@tool
def search(query: str) -> str:
    """搜索互联网信息"""
    return f"关于 '{query}' 的搜索结果..."

@tool
def calculator(expression: str) -> str:
    """计算数学表达式"""
    return str(eval(expression))

@tool 装饰器自动:

  • 使用函数名作为工具名
  • 使用文档字符串作为工具描述
  • 使用类型注解作为参数 schema

使用 Pydantic 定义复杂参数

python
from pydantic import BaseModel, Field
from langchain.tools import tool

class SearchInput(BaseModel):
    query: str = Field(description="搜索关键词")
    max_results: int = Field(default=5, description="返回结果数量")

@tool(args_schema=SearchInput)
def search(input: SearchInput) -> str:
    """搜索互联网信息"""
    return f"找到 {input.max_results} 条关于 '{input.query}' 的结果"

将工具传入 Agent

python
from langchain.agents import create_agent
from langchain.tools import tool

@tool
def get_weather(city: str) -> str:
    """获取指定城市的天气"""
    return f"{city}: 晴,22°C"

@tool
def search(query: str) -> str:
    """搜索信息"""
    return f"搜索结果: {query}"

agent = create_agent(
    model="openai:gpt-4o",
    tools=[get_weather, search],
    system_prompt="你是一个助手,可以使用工具回答问题",
)

工具运行时上下文

工具可以访问运行时上下文:

python
from langchain.tools import tool
from langchain.tools import ToolRuntime

@tool
def get_user_info(runtime: ToolRuntime) -> str:
    """获取当前用户信息"""
    return f"用户ID: {runtime.context.user_id}"

动态工具选择

你可以在运行时动态选择工具:

python
tools = [get_weather, search, calculator]

# 只使用部分工具
agent = create_agent(
    model="openai:gpt-4o",
    tools=tools,
)

下一步

本站为非官方中文学习站点,不代表 LangChain 官方。部分内容参考官方文档并重新整理为中文学习笔记。