LangGraph智能体开发快速入门(第2章)-从零构建LangGraph智能体
二、从零构建LangGraph智能体
1. LangGraph接入大模型流程
- LangGraph安装
本次公开课使用的版本是:langgraph==0.4.8
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
- LangGraph接入DeepSeek模型流程
接下来以DeepSeek为例,介绍LangGraph接入大模型流程。
|
Python |
|
Plaintext |
这里我们使用DeepSeek官方的API_KEK进行调用。如果初次使用,需要现在DeepSeek官网上进行注册并创建一个新的API_Key,其官方地址为:https://platform.deepseek.com/usage

注册好DeepSeek的API_KEY后,首先在项目同级目录下创建一个env文件,用于存储DeepSeek的API_KEY,如下所示:


接下来通过python-dotenv库读取env文件中的API_KEY,使其加载到当前的运行环境中,代码如下:
|
Python |
|
Python |
|
Plaintext |
接下来我们要考虑的是,对于这样一个DeepSeek官方的API,如何接入到LangGraph中呢?其实非常简单,我们只需要使用LangChain中的一个DeepSeek组件即可向像述代码一样,直接使用相同的DeepSeek API KEY与大模型进行交互。因此,我们首先需要安装LangChain的DeepSeek组件,安装命令如下:
|
Python |
|
Plaintext |
安装好LangChain集成DeepSeek模型的依赖包后,需要通过一个init_chat_model函数来初始化大模型,代码如下:
|
Python |
其中model用来指定要使用的模型名称,而model_provider用来指定模型提供者,当写入deepseek时,会自动加载langchain-deepseek的依赖包,并使用在model中指定的模型名称用来进行交互。
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
这里可以看到,仅仅通过两行代码,我们便可以在LangChain中顺利调用DeepSeek模型,并得到模型的响应结果。相较于使用DeepSeek的API,使用LangChain调用模型无疑是更加简单的。同时,不仅仅是DeepSeek模型,LangChain还支持其他很多大模型,如OpenAI、Qwen、Gemini等,我们只需要在init_chat_model函数中指定不同的模型名称,就可以调用不同的模型。其工作的原理是这样的:

理解了这个基本原理,如果大家想在用LangGraph进行开发时使用其他大模型如Qwen3系列,则只需要先获取到Qwen3模型的API_KEY,然后安装Tongyi Qwen的第三方依赖包,即可同样通过init_chat_model函数来初始化模型,并调用invoke方法来得到模型的响应结果。关于LangChain都支持哪些大模型以及每个模型对应的是哪个第三方依赖包,大家可以在LangChain的官方文档中找到,访问链接为:https://python.langchain.com/docs/integrations/chat/

2. 借助预构建的智能体API快速创建LangGraph智能体
正如开篇所说,我们先尝试用最高层的API快速构建智能体,然后在后续的课程讲解中,将逐渐深入到其背后的底层原理及更底层的API进行讲解。

在LangGraph所有的顶层API中,最常见的预构建智能体API就是create_react_agent,借助该API,开发者仅需将大模型、工具和提示词模板(可选)以参数形式带入,即可快速创建一个拥有完整功能、并且能够串联并联调用多个外部工具的智能体。
- 创建自定义工具
|
Python |
|
Plaintext |
|
Python |
|
Python |
|
Plaintext |
在LangGraph中,我们可以直接使用上述外部工具带入到LangGraph中创建智能体,不过更为稳妥的形式,是通过一个结构化工具函数来说明外部函数的参数输入(包括参数类型),以确保在实际调用过程中大模型能够准确识别外部函数的参数类型及其实际含义:
|
Python |
|
Python |
|
Plaintext |
其中Pydantic 提供的 BaseModel 负责定义外部函数的参数结构,相当于是告诉模型外部函数参数名是 loc、类型是字符串(str)、描述为“城市名称”,有了这个结构,模型能更好地理解如何调用该函数。
- 创建LangGraph智能体
|
Python |
|
Python |
|
Python |
|
Python |
|
Python |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
然后测试外部工具调用
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
而这背后其实就是一次完整的Function calling调用流程:
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |

更加完整的Function calling执行链路

3. LangGraph React Agent外部工具响应形式
借助LangGraph React Agent,无需任何额外设置,即可完成多工具串联和并联调用。

|
Python |
|
Python |
|
Plaintext |
|
Python |
|
Python |
|
Python |
|
Python |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
能够看出,此时Agent能够顺利完成多工具的多次调用,并最终完成用户需求。需要注意的是,此时react agent的执行逻辑是先发起了一次并联调用工具的请求,然后第二次再发起调用write函数的调用请求,因此总共是7条消息。
4. LangGraph React Agent接入内置工具流程
当然对于LangGraph智能体来说,除了能够灵活接如自定义工具,还能够接入LangChain丰富的内置工具,快速完成智能体开发。
在 LangChain 框架中,**工具(Tools)**是实现语言模型与外部世界交互的关键机制。LangChain 提供了大量内置与可扩展的工具接口,使得智能体(Agent)能够执行函数调用、访问 API、查询搜索引擎、调用数据库等任务,从而超越纯语言生成的能力,真正实现“能行动的智能体”。LangChain 官方文档将这些工具按照其用途进行了模块化划分,涵盖了以下主要类别:
|
功能类别 |
工具名称 |
简要说明 |
|
🔎 搜索工具 |
TavilySearchResults |
快速搜索实时网络信息 |
|
SerpAPIWrapper |
基于 SerpAPI 的搜索结果工具 |
|
|
GoogleSearchAPIWrapper |
调用 Google 可编程搜索引擎 |
|
|
🧠 计算工具 |
PythonREPLTool |
执行 Python 表达式并返回结果 |
|
LLMMathTool |
结合 LLM 和数学推理能力 |
|
|
WolframAlphaQueryRun |
基于 Wolfram Alpha 的计算引擎 |
|
|
🗂 数据工具 |
SQLDatabaseToolkit |
构建 SQL 数据库查询工具集 |
|
PandasDataframeTool |
用于在 Agent 中操作表格数据 |
|
|
🌐 网络/API |
RequestsGetTool / RequestsPostTool |
执行 HTTP 请求 |
|
BrowserTool / PlaywrightBrowserToolkit |
自动化网页浏览与抓取 |
|
|
💾 文件处理 |
ReadFileTool |
读取本地文件内容 |
|
WriteFileTool |
写入文本到指定文件中 |
|
|
📚 检索工具 |
FAISSRetriever |
基于向量的文档检索工具 |
|
ChromaRetriever |
使用 ChromaDB 的检索器 |
|
|
ContextualCompressionRetriever |
上下文压缩检索器,适合长文档 |
|
|
🧠 LLM 工具 |
ChatOpenAI / OpenAIFunctionsTool |
使用 OpenAI 模型作为工具调用 |
|
ChatAnthropic |
Anthropic Claude 模型封装工具 |
|
|
🔧 自定义工具 |
@tool 装饰器 |
任意函数可封装为 Agent 可调用工具 |
|
Tool 类继承 |
自定义更复杂逻辑的工具实现 |
LangChain工具集:https://python.langchain.com/docs/integrations/tools/

- 创建带搜索功能的Agent
这里我们尝试借助LangChain内置的Tavily搜索引擎工具,搭建能够进行网络搜索的智能体。首先需要在tavily官网进行注册并获取API-KEY:https://www.tavily.com/

并继续将tavily的API-KEY写到.env文件中:

然后安装对应的库:
|
Python |
|
Plaintext |
然后即可导入该工具,并快速将其封装为LangGraph智能体工具:
|
Python |
|
Python |
|
Python |
|
Python |
|
Python |
|
Python |
|
Plaintext |
5. LangGraph React Agent限制最大迭代次数
LangChain工具集:https://python.langchain.com/docs/integrations/tools/

|
Python |
|
Python |
5. LangGraph React Agent限制工具调用次数
对于任何全自动的代理,合理控制调用次数都是至关重要的一环,对于LangGraph React Agent来说,我们只需要在Agent运行的时候设置{"recursion_limit": X},即可限制智能体自主执行任务时的步数。
|
Python |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Python |
|
Python |
|
Python |
|
Python |
|
Python |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
|
Python |
|
Python |
|
Plaintext |
|
Python |
|
Plaintext |
更多推荐


所有评论(0)