1. LangChain工具与工具包完全指南:从零构建多工具智能体
在人工智能应用开发中,大语言模型(LLM)虽然强大,但存在两个固有局限:知识更新滞后和无法直接操作外部系统。LangChain的Tool和Toolkit机制正是为解决这些问题而设计的核心组件。本文将带你从零开始,掌握创建自定义工具、构建工具包以及实现智能工具调用的完整流程。
1.1 工具的核心价值
工具(Tool)本质上是LLM与外部世界交互的桥梁。想象一下,你给AI助手配备了一套瑞士军刀,每把刀都有特定功能:
- 天气查询刀:获取实时气象数据
- 计算器刀:执行数学运算
- 文件操作刀:读写本地文档
这些"刀具"就是LangChain中的Tool,而将它们组织在一起的"刀鞘"就是Toolkit。这种设计使得AI能够突破自身限制,执行更复杂的任务链。
1.2 开发环境准备
开始前确保已配置以下环境:
bash复制pip install langchain==0.1.17 langchain-community python-dotenv dashscope
创建.env文件存放API密钥:
ini复制DASHSCOPE_API_KEY=你的阿里云百炼API密钥
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 工具创建的三种方法论
2.1 装饰器方式:极简入门
@tool装饰器是最快捷的工具创建方式,适合简单函数转换。以下是将乘法函数转化为工具的示例:
python复制from langchain.tools import tool
@tool
def multiply(first_int: int, second_int: int) -> int:
"""将两个整数相乘。"""
return first_int * second_int
# 调用示例
result = multiply.invoke({"first_int": 5, "second_int": 7})
print(result) # 输出: 35
特点分析:
- 自动从函数签名生成参数schema
- 描述文本(Docstring)会成为工具的usage说明
- 适合参数结构简单的场景
2.2 Tool类方式:平衡之选
Tool.from_function提供了更灵活的定义方式,是大多数场景的首选。以下是天气查询工具的典型实现:
python复制from langchain.tools import Tool
from pydantic import BaseModel, Field
class WeatherInput(BaseModel):
city: str = Field(description="城市名称")
date: str = Field("今天", description="查询日期")
def get_weather(city: str, date: str) -> str:
"""获取指定城市在特定日期的天气数据"""
# 实际API调用逻辑
return f"{date} {city}天气:晴,25℃"
weather_tool = Tool.from_function(
func=get_weather,
name="weather_checker",
description="当需要查询城市天气时使用",
args_schema=WeatherInput
)
关键优势:
- 支持Py
