Python 构建带记忆与人工干预的搜索机器人
前言
在 LangGraph 官方文档的启发下,我决定尝试构建一个具备长期记忆、支持联网搜索并能触发人工干预的智能助手。虽然背景是 Java 开发,但 AI 应用开发的快速迭代让我意识到掌握 Agent 工作流的重要性。本文将分享基于 LangGraph 搭建此类机器人的实战经验。
前置准备
环境配置
推荐使用 Python 3.9+(本文基于 3.12):
pip install langgraph langchain-community langchain-openai tavily-python python-dotenv langsmith
python-dotenv 用于读取根目录下的 .env 配置文件。
工具介绍
- Tavily:专为 AI 设计的搜索引擎,提供实时联网能力。每月有免费额度,适合学习和测试。
- LangSmith:LangChain 团队的可观测性平台,用于调试和监控 LLM 应用。支持免费额度,可追踪每一步执行细节。
密钥获取与环境配置
- Tavily:登录后进入首页,在左侧菜单添加 API Key。
- LangSmith:登录后进入仪表盘,点击左下角账号设置生成 API Key,并创建一个新的 Project 用于追踪。
- 大模型 API:支持智谱、阿里云等,需自行获取。
在根目录创建 .env 文件,填入如下内容:
# 智谱 API Key
ZHIPUAI_API_KEY=你的 apikey
# Tavily 智能体搜索工具
TAVILY_API_KEY=Tavily APIKEY
# LangSmith
LANGSMITH_TRACING=true
LANGSMITH_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_API_KEY=LangSmith 的 APIKEY
LANGSMITH_PROJECT="langgraph-agent"
核心代码实现
依赖导入与环境加载
from typing import Annotated
from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END
from langgraph.graph.message import add_messages
import os
from dotenv import load_dotenv
pathlib Path
langgraph.types Command, interrupt
langchain_core.tools tool
langchain_tavily TavilySearch
langchain.chat_models init_chat_model
langchain_core.messages SystemMessage
langgraph.checkpoint.memory InMemorySaver
env_path = Path(__file__).parent.parent /
load_dotenv(dotenv_path=env_path)


