文章目录 说明 一 LangGraph 智能体技术架构 二 LangGraph智能体项目创建流程 三 LangGraph Agent部署调用流程 四 LangGraph Agent接入Agent Chat UI
说明
本文学自赋范社区九天老师的相关公开课课程,仅供学习和交流使用!
一 LangGraph 智能体技术架构
LangSmith 与 LangGraph Studio 都是 LangChain AI 生态中非常核心的工具,前者是用于跟踪和分析大模型的使用情况,而langGraph Studio则是对于LangGraph来说,则是比LangSmith更加方便和高效的可视化调试工具平台。
基于LangGraph框架可以开发出各种复杂的应用、Agent、Workflow等,在生产中被部署成一个Server。 LangGraph官方提供LangGraph Platform可以方便高效地把LangGraph的Graph部署成一个Server,其完整架构。 LangGraph Studio :LangGraph Studio 是专为 LangGraph 图式代理打造的本地/云端 IDE,具备可视化节点和状态及实时调试功能。LangGraph Studio 在本地可视化运行时会自动把调用过程上传到 LangSmith。目前桌面版应用(目前【2025-7-28】仅支持Mac)和本地运行(适用于所有操作系统)。LangServer :最终构建出来的服务,提供Assistant API
接口。Python/JS SDK :通过接口可以直接和LangServer
提供的各个API接口连接。Remote Graph :类似于LangServe
的用法,可以直接用Graph
的接口去调用,获得的Graph
是一个Runable
对象,就可以去调用它的invoke
,batch
等。
在 LangSmith
网页端查看任何 Trace
时,又能一键Run in Studio
回放整条执行链,所以它是通过统一 Trace SDK
与 LangSmith
紧密集成,而LangGraph CL
I则是构建这个项目的关键。
二 LangGraph智能体项目创建流程
目标使用LangGraph CLI
来创建一个完整的LangGraph Agent
项目,并在此过程中使用LangGraph、Chat Agent UI
进行前端对话,以及使用LangGraph Studio
进行架构实时演示,并使用LangSmith
进行运行效果监督。
创建LangGraph项目文件夹:在代码文件目录下创建langraph_chatbot
文件夹 创建requirements.txt
文件:在langgraph_chatbot
文件夹中,新建一个requirements.txt
文件,填写需要安装的依赖项。
langgraph
langchain
langchain-core
langchain-openai
python-dotenv
langsmith
pydantic
matplotlib
seaborn
pandas
IPython
langchain_mcp_adapters
langchain_tavily
uv
注册LangSmith,并创建创建一个 API 密钥,该密钥将允许项目开始向 Langsmith 发送跟踪数据。创建完密钥后,在后续配置环境变量环节设置开启追踪、并输入密钥即可接入LangSmith。 创建.env配置文件
以下某些平台的访问可能需要使用魔法网络,请读者自行解决。
请在阿里云百炼获取OPENAI_API_KEY
和OPENAI_API_BASE
。 请在openweathermap获取OPENWEATHER_API_KEY
。 请在tavily.com/获取TAVILY_API_KEY
LANGSMITH_TRACING = "true"
LANGSMITH_ENDPOINT = "https://api.smith.langchain.com"
LANGSMITH_API_KEY = "lsv2_xxx"
LANGSMITH_PROJECT = "pr-proper-chess-56"
OPENAI_API_KEY = "sk-xxx"
OPENAI_API_BASE = "https://dashscope.aliyuncs.com/compatible-mode/v1"
OPENWEATHER_API_KEY = "xx"
TAVILY_API_KEY = "tvly-xx"
创建graph.py核心文件:在langgraph_chatbot文件夹中,新建一个graph.py文件,在该文件中编写构建图的具体运行逻辑,如状态、节点、变、图的编译等。在使用LangGraph CLI创建智能体项目时,会自动设置记忆相关内容,并进行持久化记忆存储,无需手动设置。
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from typing import Annotated
from typing_extensions import TypedDict
from langgraph. graph import StateGraph, START, END
from langgraph. graph. message import add_messages
from langchain. chat_models import init_chat_model
from langgraph. prebuilt import create_react_agent
from langchain_tavily import TavilySearch
from langchain_core. tools import tool
from pydantic import BaseModel, Field
import requests, json
load_dotenv( override= True )
search_tool = TavilySearch( max_results= 5 , topic= "general" ) class WeatherQuery ( BaseModel) : loc: str = Field( description= "The location name of the city" ) @tool ( args_schema = WeatherQuery)
def get_weather ( loc) : """查询即时天气函数:param loc: 必要参数,字符串类型,用于表示查询天气的具体城市名称,\注意,中国的城市需要用对应城市的英文名称代替,例如如果需要查询北京市天气,则loc参数需要输入'Beijing';:return:OpenWeather API查询即时天气的结果,具体URL请求地址为:https://api.openweathermap.org/data/2.5/weather\返回结果对象类型为解析之后的JSON格式对象,并用字符串形式进行表示,其中包含了全部重要的天气信息""" url = "https://api.openweathermap.org/data/2.5/weather" params = { "q" : loc, "appid" : os. getenv( "OPENWEATHER_API_KEY" ) , "units" : "metric" , "lang" : "zh_cn" } response = requests. get( url, params= params) data = response. json( ) return json. dumps( data) tools = [ search_tool, get_weather]
model = ChatOpenAI( model= "qwen-plus-latest" , base_url= os. getenv( "OPENAI_API_BASE" ) ) prompt = """
你是一名乐于助人的智能助手,擅长根据用户的问题选择合适的工具来查询信息并回答。当用户的问题涉及**天气信息**时,你应优先调用`get_weather`工具,查询用户指定城市的实时天气,并在回答中总结查询结果。当用户的问题涉及**新闻、事件、实时动态**时,你应优先调用`search_tool`工具,检索相关的最新信息,并在回答中简要概述。如果问题既包含天气又包含新闻,请先使用`get_weather`查询天气,再使用`search_tool`查询新闻,最后将结果合并后回复用户。所有回答应使用**简体中文**,条理清晰、简洁友好。
"""
graph = create_react_agent( model= model, tools= tools, prompt= prompt)
创建langgraph.json
文件:在langgraph_chatbot文件夹中,新建一个langgraph.json文件,在该json文件中配置项目信息。 必须包含dependencies
和graphs
字段 graphs
字段格式:“图名”: “文件路径:变量名”配置文件必须放在与Python
文件同级或更高级的目录
dependencies: ["./"]
:LangGraph
在当前目录查找依赖项(会自动读取requirements.txt
)。chatbot: "./graph.py:graph"
:定义图名为chatbot
,来自graph.py
文件中的graph
变量。env: ".env"
:指定环境变量文件位置。
. / langgraph_chatbot/
├── graph. py # 对应官方的 agent. py
├── requirements. txt # ✅ 依赖管理
├── langgraph. json # ✅ 配置文件
└── . env # ✅ 环境变量
安装虚拟环境和相关依赖
D:\ Code\ langgraph_chatbot> uv venv
D:\ Code\ langgraph_chatbot> .venv\ Scripts\ activate
( langgraph_chatbot) D:\ Code\ langgraph_chatbot> pip install -U "langgraph-cli[inmem]"
( langgraph_chatbot) D:\ Code\ langgraph_chatbot> pip install -r requirements.txt
注意:执行pip install -r requirements.txt
时,如果本地jupyter notebook正在开启请关闭,防止出现pip 正在尝试更新或安装 pywin32,但在卸载旧版本后,由于权限不足,无法写入系统目录(C:\ProgramData\anaconda3\Lib\site-packages\),导致安装失败并回滚。
启动项目:基于创建的虚拟环境在langgraph_chatbot
文件夹下,执行LangGraph dev
即可启动项目。
( langgraph_chatbot) D:\ Code\ langgraph_chatbot> langgraph dev
( langgraph_chatbot) D:\ Code\ langgraph_chatbot> langgraph dev
INFO:langgraph_api.cli:Welcome to╦ ┌─┐┌┐┌┌─┐╔═╗┬─┐┌─┐┌─┐┬ ┬
║ ├─┤││││ ┬║ ╦├┬┘├─┤├─┘├─┤
╩═╝┴ ┴┘└┘└─┘╚═╝┴└─┴ ┴┴ ┴ ┴- 🚀 API: http://127.0.0.1:2024
- 🎨 Studio UI: https://smith.langchain.com/studio/?baseUrl= http://127.0.0.1:2024
- 📚 API Docs: http://127.0.0.1:2024/docs
This in-memory server is designed for development and testing.
For production use, please use LangGraph Platform.
API: http://127.0.0.1:2024
是当前部署完成后的服务端口。Studio UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024
是LangGraph Studio的可视化页面。API Docs: http://127.0.0.1:2024/docs
是项目端口说明。
三 LangGraph Agent部署调用流程
首先可以访问API Docs: http://127.0.0.1:2024/docs
查看详细的接口方法。 然后可以点击Studio UI
中显示的链接,在浏览器中打开并访问Studio
。 在LangSmith中看到当前项目运行情况。 运行测试效果。
四 LangGraph Agent接入Agent Chat UI
首先本地安装node.js 打开Agent Chat UI项目主页,下载项目源码,然后解压到当前项目目录下。 使用管理员运行终端,进入Agent Chat UI项目目录。执行以下命令,运行前端页面
npm install -g pnpm
pnpm -v
pnpm install
pnpm dev
填写Graph ID和LangSmith API Key进行连接。 测试体验,还是存在不幻觉(不准确的情况),经过提醒纠正后,回答还可以。
信息真实性核对,结果为真实消息!