当前位置: 首页 > backend >正文

LangGraph智能体(天气和新闻助手)开发与部署

文章目录

  • 说明
  • 一 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对象,就可以去调用它的invokebatch等。

  • LangSmith 网页端查看任何 Trace 时,又能一键Run in Studio回放整条执行链,所以它是通过统一 Trace SDKLangSmith 紧密集成,而LangGraph CLI则是构建这个项目的关键。

二 LangGraph智能体项目创建流程

  • 目标使用LangGraph CLI来创建一个完整的LangGraph Agent项目,并在此过程中使用LangGraph、Chat Agent UI进行前端对话,以及使用LangGraph Studio进行架构实时演示,并使用LangSmith进行运行效果监督。
  1. 创建LangGraph项目文件夹:在代码文件目录下创建langraph_chatbot文件夹
  2. 创建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
  1. 注册LangSmith,并创建创建一个 API 密钥,该密钥将允许项目开始向 Langsmith 发送跟踪数据。创建完密钥后,在后续配置环境变量环节设置开启追踪、并输入密钥即可接入LangSmith。
    在这里插入图片描述
    在这里插入图片描述
  2. 创建.env配置文件
  • 以下某些平台的访问可能需要使用魔法网络,请读者自行解决。
  • 请在阿里云百炼获取OPENAI_API_KEYOPENAI_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"
  1. 创建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)
  1. 创建langgraph.json文件:在langgraph_chatbot文件夹中,新建一个langgraph.json文件,在该json文件中配置项目信息。
    • 必须包含dependenciesgraphs字段
    • 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                 # ✅ 环境变量
  1. 安装虚拟环境和相关依赖
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\),导致安装失败并回滚。
  1. 启动项目:基于创建的虚拟环境在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部署调用流程

  1. 首先可以访问API Docs: http://127.0.0.1:2024/docs查看详细的接口方法。
    在这里插入图片描述
  2. 然后可以点击Studio UI中显示的链接,在浏览器中打开并访问Studio
    在这里插入图片描述
  3. 在LangSmith中看到当前项目运行情况。
    在这里插入图片描述
  4. 运行测试效果。
    在这里插入图片描述
    在这里插入图片描述

四 LangGraph Agent接入Agent Chat UI

  1. 首先本地安装node.js
  2. 打开Agent Chat UI项目主页,下载项目源码,然后解压到当前项目目录下。
  3. 使用管理员运行终端,进入Agent Chat UI项目目录。执行以下命令,运行前端页面
npm install -g pnpm
pnpm -v
pnpm install # 安装前端项目依赖
pnpm dev # 开启Chat Agent UI
  1. 填写Graph ID和LangSmith API Key进行连接。
    在这里插入图片描述
  2. 测试体验,还是存在不幻觉(不准确的情况),经过提醒纠正后,回答还可以。
    在这里插入图片描述
    在这里插入图片描述
  • 信息真实性核对,结果为真实消息!
    在这里插入图片描述

在这里插入图片描述

http://www.xdnf.cn/news/16474.html

相关文章:

  • MySQL的常用数据类型详解
  • ROS2编写一个简单的插件
  • 2025年7月一区SCI-基尔霍夫定律优化算法Kirchhoff’s law algorithm-附Matlab免费代码
  • HDFS Block与Spark的partition对比
  • 基于AFLFast的fuzz自动化漏洞挖掘(2)
  • 中型企业如何用 RUM 技术破解地理分布式用户体验难题?从指标监测到优化实操
  • 嵌入式开发学习———Linux环境下数据结构学习(四)
  • Cacti RCE漏洞复现
  • 【AlphaFold3】网络架构篇(2)|Input Embedding 对输入进行特征嵌入
  • halcon-blob
  • docker 入门,运行上传自己的首个镜像
  • 学习人工智能所需知识体系及路径详解
  • CTF-Web学习笔记:文件包含篇
  • java中一些数据结构的转换
  • ts学习3
  • CES Asia 2025:以创新为笔,书写亚洲科技新纪元
  • python-内存管理
  • 安宝特方案丨智能革新安全管控:AR技术赋能物流仓储行业安全升级
  • 【STM32编码器接口测速】实现测速功能
  • strcmp 与 strcpy 的深入解析
  • Day 24:元组与os模块
  • 基于Hadoop3.3.4+Flink1.17.0+FlinkCDC3.0.0+Iceberg1.5.0整合,实现数仓实时同步mysql数据
  • 基于springboot的在线购票系统/在线售票系统
  • C++ 中实现 `Task::WhenAll` 和 `Task::WhenAny` 的两种方案
  • Gradle#Plugin
  • Triton编译
  • JavaScript - 实现套索工具的demo
  • MySQL 8.0.42创建MGR集群
  • 深度学习(鱼书)day04--手写数字识别项目实战
  • OpenCL study - code03 rgb2gray