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

发布于:2025-07-31 ⋅ 阅读:(31) ⋅ 点赞:(0)

说明

  • 本文学自赋范社区九天老师的相关公开课课程,仅供学习和交流使用!

一 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配置文件
  • 以下某些平台的访问可能需要使用魔法网络,请读者自行解决。
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. 测试体验,还是存在不幻觉(不准确的情况),经过提醒纠正后,回答还可以。
    在这里插入图片描述
    在这里插入图片描述
  • 信息真实性核对,结果为真实消息!
    在这里插入图片描述

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到