LangGraph 工具调用实战:构建 ReAct 搜索机器人
在掌握 LangGraph 的基础状态图之后,进阶的关键在于让 AI 具备与外部世界交互的能力。本文将带你深入工具调用(Tool Calling)领域,通过集成 Tavily 搜索引擎,实现经典的 ReAct(Reasoning + Acting)模式,让聊天机器人能够主动获取实时信息。
核心概念
什么是工具调用
工具调用是 LLM 从'知识库'走向'执行者'的关键能力。它允许模型根据上下文判断需求,并执行以下动作:
- 推理:理解用户意图,判断是否需要外部数据。
- 行动:调用预定义的工具(如搜索、计算器)获取结果。
- 观察:整合工具返回的数据,生成最终回答。
这种循环正是 ReAct 模式的核心。
为什么需要工具调用
| 场景 | 纯 LLM | 带工具调用的 LLM |
|---|---|---|
| 实时信息 | ❌ 知识截止,无法回答 | ✅ 调用搜索工具获取 |
| 数学计算 | ❌ 容易出错 | ✅ 调用计算器精确计算 |
| 数据库查询 | ❌ 无法访问 | ✅ 调用 SQL 工具查询 |
| API 调用 | ❌ 无法执行 | ✅ 调用 API 工具操作 |
工具调用让 AI 从纸上谈兵变为实干家。
核心组件架构
┌─────────────────────────────────────────────────────────┐
│ 工具调用架构 │
├─────────────────────────────────────────────────────────┤
│ 1. 工具定义 │ TavilySearch、Calculator 等 │
│ 2. 工具绑定 │ llm.bind_tools(tools) │
│ 3. 工具节点 │ BasicToolNode 执行工具调用 │
│ 4. 条件路由 │ route_tools 判断是否需要工具 │
│ 5. 循环执行 │ chatbot ↔ tools 形成 ReAct 循环 │
└─────────────────────────────────────────────────────────┘
环境准备
安装依赖
确保你的环境中已安装必要的库:
pip install langgraph langchain langchain-openai langchain-community pydantic python-dotenv typing-extensions
配置 API 密钥
创建 .env 文件存储敏感信息,避免硬编码:
# 硅基流动平台 API 密钥
SILICONFLOW_API_KEY=your_siliconflow_key
# Tavily 搜索引擎 API 密钥
TAVILY_API_KEY=your_tavily_key
注意:Tavily API Key 需前往官网注册获取。



