LangGraph智能体(天气和新闻助手)开发与部署
LangGraph智能体(天气和新闻助手)开发与部署
·
文章目录
说明
- 本文学自赋范社区九天老师的相关公开课课程,仅供学习和交流使用!
一 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格式对象,并用字符串形式进行表示,其中包含了全部重要的天气信息
"""
# Step 1.构建请求
url = "https://api.openweathermap.org/data/2.5/weather"
# Step 2.设置查询参数
params = {
"q": loc,
"appid": os.getenv("OPENWEATHER_API_KEY"), # 输入API key
"units": "metric", # 使用摄氏度而不是华氏度
"lang":"zh_cn" # 输出语言为简体中文
}
# Step 3.发送GET请求
response = requests.get(url, params=params)
# Step 4.解析响应
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 # 开启Chat Agent UI
- 填写Graph ID和LangSmith API Key进行连接。
- 测试体验,还是存在不幻觉(不准确的情况),经过提醒纠正后,回答还可以。
- 信息真实性核对,结果为真实消息!
更多推荐
所有评论(0)