前言
在构建大模型应用时,单纯依赖 LLM 往往难以满足复杂场景的需求。LangGraph 为我们提供了一种状态机式的开发模式,能够轻松实现对话记忆、工具调用以及关键节点的人工干预(Human-in-the-loop)。本文将带你从零搭建一个具备联网搜索能力,并在特定场景下自动请求人工协助的聊天机器人。
前置准备
确保已安装 Python 3.9+ 环境,并准备好以下 API Key:
- 智谱/DeepSeek 等大模型 API:用于驱动对话核心。
- Tavily API:专为 AI 设计的搜索引擎,提供实时联网能力。
- LangSmith API:用于追踪调试和监控 Agent 的执行链路。
创建项目根目录下的 .env 文件配置密钥:
ZHIPUAI_API_KEY=你的智谱 API Key
TAVILY_API_KEY=你的 Tavily API Key
LANGCHAIN_API_KEY=你的 LangSmith API Key
LANGSMITH_TRACING=true
LANGSMITH_PROJECT=langgraph-agent
核心实现
1. 环境与依赖初始化
首先导入必要的库,加载环境变量,并定义状态结构。我们使用 InMemorySaver 来保存对话历史,实现多轮记忆。
from typing import Annotated, TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
from langchain_core.messages import SystemMessage
from dotenv import load_dotenv
from pathlib import Path
import os
# 加载环境变量
env_path = Path(__file__).parent / ".env"
load_dotenv(dotenv_path=env_path)
# 定义状态:维护消息列表
class State(TypedDict):
messages: Annotated[list, add_messages]
2. 引入人工干预机制
这是本项目的亮点。通过 interrupt 函数,我们可以让 Agent 在遇到高风险或不确定问题时暂停执行,等待人工输入后再继续。
from langgraph.types import Command, interrupt
from langchain_core.tools tool
() -> :
human_response = interrupt({: query})
human_response[]


