## 前言

在 AI Agent 开发领域,LangGraph 作为 LangChain 的扩展框架,为构建复杂的多步骤 AI 应用提供了强大的状态管理能力。本文将带你从零开始,使用 LangGraph 的预构建组件快速搭建一个支持多轮对话的天气查询 Agent,让你 5 分钟上手 LangGraph 核心概念。

---

## 一、核心概念

### 1.1 什么是 LangGraph

LangGraph 是 LangChain 团队推出的用于构建 Agent 应用的框架,它通过图(Graph)的结构来组织 AI 工作流。相比传统的链式调用,LangGraph 提供了:

- **状态管理**:在对话中保持上下文

- **循环支持**:支持多轮交互和循环执行

- **工具调用**:轻松集成外部工具和 API

### 1.2 为什么需要记忆功能

在真实的 AI 对话场景中,用户很少一次性说完所有需求。比如:

```

用户:"旧金山天气怎么样?"

AI:"旧金山天气晴朗..."

用户:"那纽约呢?"  ← 这里隐含了"天气"的上下文

```

没有记忆功能的 AI 会无法理解第二个问题。LangGraph 通过 `checkpointer` 机制完美解决了这个问题。

---

## 二、环境准备

### 2.1 安装依赖

```bash

pip install langgraph langchain langchain-openai pydantic python-dotenv

```

### 2.2 配置 API 密钥

创建 `.env` 文件:

```env

SILICONFLOW_API_KEY=your_api_key_here

```

本文使用硅基流动平台的 Qwen 模型,你也可以替换为 OpenAI 或其他兼容 OpenAI API 的模型。

---

## 三、代码实现

### 3.1 完整代码

```python

"""

LangGraph 快速入门示例 - 第一个 Agent 程序

本示例演示如何使用 LangGraph 的预构建组件创建一个简单的天气查询 Agent。

"""

from langgraph.prebuilt import create_react_agent

from langchain.chat_models import init_chat_model

from langgraph.checkpoint.memory import InMemorySaver

from pydantic import BaseModel

from dotenv import load_dotenv

from langchain_openai import ChatOpenAI

import os

# 加载环境变量

load_dotenv()


 

# 1. 定义工具函数

def get_weather(city: str) -> str:

    """获取指定城市的天气信息。

   

    Args:

        city: 城市名称

       

    Returns:

        天气描述字符串

    """

    return f"It's always sunny in {city}!"


 

# 2. 定义结构化输出格式

class WeatherResponse(BaseModel):

    """天气响应的结构化格式。"""

    conditions: str


 

# 3. 初始化模型(使用硅基流动平台的 Qwen 模型)

model = ChatOpenAI(

    model="Qwen/Qwen3-Next-80B-A3B-Instruct",

    openai_api_key=os.getenv("SILICONFLOW_API_KEY"),

    openai_api_base="https://api.siliconflow.cn/v1",

    temperature=0

)


 

# 4. 创建检查点器(用于记忆功能)

checkpointer = InMemorySaver()


 

# 5. 创建 Agent

agent = create_react_agent(

    model=model,

    tools=[get_weather],

    checkpointer=checkpointer,

    prompt="你是一个有帮助的助手,专门回答天气相关的问题。",

    response_format=WeatherResponse

)


 

# 6. 运行 Agent

def main():

    """主函数 - 演示 Agent 的使用。"""

    print("🤖 LangGraph Agent 已启动!")

    print("=" * 50)

   

    # 配置线程 ID(用于多轮对话)

    config = {"configurable": {"thread_id": "1"}}

   

    # 第一轮对话

    print("\n用户:what is the weather in san francisco?")

    sf_response = agent.invoke(

        {"messages": [{"role": "user", "content": "what is the weather in san francisco"}]},

        config

    )

   

    print(f"助手:{sf_response['messages'][-1].content}")

    print(f"结构化响应:{sf_response.get('structured_response')}")

   

    # 第二轮对话(测试记忆功能)

    print("\n用户:what about new york?")

    ny_response = agent.invoke(

        {"messages": [{"role": "user", "content": "what about new york?"}]},

        config

    )

   

    print(f"助手:{ny_response['messages'][-1].content}")

    print(f"结构化响应:{ny_response.get('structured_response')}")

   

    print("\n" + "=" * 50)

    print("✅ 示例运行完成!")


 

if __name__ == "__main__":

    main()

```

### 3.2 代码解析

#### 3.2.1 工具函数定义

```python

def get_weather(city: str) -> str:

    """获取指定城市的天气信息。"""

    return f"It's always sunny in {city}!"

```

这是一个模拟的天气查询工具。在实际应用中,你可以替换为真实的天气 API 调用。

#### 3.2.2 结构化输出

```python

class WeatherResponse(BaseModel):

    """天气响应的结构化格式。"""

    conditions: str

```

使用 Pydantic 定义输出格式,让 Agent 返回结构化的数据而不是纯文本。

#### 3.2.3 模型初始化

```python

model = ChatOpenAI(

    model="Qwen/Qwen3-Next-80B-A3B-Instruct",

    openai_api_key=os.getenv("SILICONFLOW_API_KEY"),

    openai_api_base="https://api.siliconflow.cn/v1",

    temperature=0

)

```

这里使用硅基流动的 Qwen 模型,temperature=0 确保输出稳定。

#### 3.2.4 记忆功能核心

```python

# 创建检查点器(存储引擎)

checkpointer = InMemorySaver()

# 配置线程 ID(会话标识)

config = {"configurable": {"thread_id": "1"}}

```

- `checkpointer`:决定对话历史存储在哪里(内存、数据库等)

- `thread_id`:标识不同的对话会话,相同 ID 会共享历史记录

#### 3.2.5 创建 Agent

```python

agent = create_react_agent(

    model=model,

    tools=[get_weather],

    checkpointer=checkpointer,

    prompt="你是一个有帮助的助手,专门回答天气相关的问题。",

    response_format=WeatherResponse

)

```

`create_react_agent` 是 LangGraph 提供的预构建 Agent,实现了 ReAct(Reasoning + Acting)模式:

- **Reasoning**:理解用户意图

- **Acting**:调用工具获取信息

- **Observing**:根据结果生成回复

---

## 四、运行效果

### 4.1 执行步骤

```bash

python 01快速入门.py

```

### 4.2 输出结果

**关键观察**:第二个问题 "what about new york?" 没有明确说"天气",但 Agent 根据上下文理解了用户的意图!

---

## 五、踩坑记录

| 问题 | 原因 | 解决方案 |

|------|------|----------|

| `checkpointer` 和 `config` 的区别混淆 | 两者都用于记忆,但作用不同 | `checkpointer` 是存储引擎,`config` 是会话标识 |


 

---

## 六、总结

通过本文,你学会了:

1. ✅ 使用 `create_react_agent` 快速搭建 Agent

2. ✅ 定义工具函数并集成到 Agent 中

3. ✅ 使用 `checkpointer` 实现多轮对话记忆

4. ✅ 配置结构化输出格式

这只是 LangGraph 的冰山一角,后续可以探索:

- 自定义图结构(StateGraph)

- 持久化存储(PostgreSQL、Redis)

- 人机协作(Human-in-the-loop)

- 多 Agent 协作系统


 

---

## 参考资料

- [LangGraph 官方文档](https://langchain-ai.github.io/langgraph/)

- [硅基流动 API 文档](https://docs.siliconflow.cn/)

- [ReAct 论文](https://arxiv.org/abs/2210.03629)

---

> 📌 本文首发于 CSDN,作者:码上AI_123

> 🔗 转载请注明出处

>

> 💡 如果觉得有帮助,欢迎点赞、收藏、关注!

> 🎯 你的支持是我持续创作的动力!

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐