LangGraph全家桶使用

文章目录

全家桶组件介绍

LangGraph

基于有向图(State Graph)的 AI 应用框架,用来构建多步推理、Agent 协作和可控对话流程。相比直接写 Chain,更结构化、可观测。

LangSmith

平台化工具,用于 调试、观测、评估 LangChain / LangGraph 应用。可以记录运行轨迹、比较不同版本、做回放和质量评估。

LangGraph Studio

一个 可视化 IDE,支持拖拽式创建/修改 LangGraph 流程,实时运行和调试节点逻辑。对非纯代码开发者特别友好。

LangGraph CLI

命令行工具,用来 初始化项目、运行、部署 LangGraph 应用。比如 langgraph dev 本地调试,langgraph deploy 一键上云。

Agent Chat UI

一个现成的 聊天前端(React + Tailwind),直接对接 LangGraph Agent 服务,用来展示对话、思维链、工具调用等。

LangGraph 提供了开发框架,LangSmith 做监控和评估,Studio 做可视化构建,CLI 管理项目和部署,Agent Chat UI 提供用户界面 ------ 一套从开发到调试、部署、交互的完整闭环。

创建LangGraph智能体项目

注册LangSmith

为了更好的监控智能体实时运行情况,我们可以考虑借助LangSmith进行追踪(会将智能体运行情况实时上传到LangGraph官网并进行展示)。具体使用可参考文档:
LangSmith监控

创建相关文件

创建.env 文件,存放 API 密钥信息,文件内容如下:

python 复制代码
LANGSMITH_TRACING="true"
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY='langsmith api key'
LANGSMITH_PROJECT='项目名称'
OPENWEATHER_API_KEY="天气助手API KEY"

创建 tools.py 文件,存放自定义 tools 工具

python 复制代码
import json
import os
import httpx
import dotenv
from loguru import logger
from pydantic import Field, BaseModel
from langchain_core.tools import tool

# 加载环境变量配置
dotenv.load_dotenv()


class WeatherQuery(BaseModel):
    """
    天气查询参数模型类,用于定义天气查询工具的输入参数结构。

    :param city: 城市名称,字符串类型,表示要查询天气的城市
    """
    city: str = Field(description="城市名称")


class WriteQuery(BaseModel):
    """
    写入查询模型类

    用于定义需要写入文档的内容结构,继承自BaseModel基类

    属性:
        content (str): 需要写入文档的具体内容,包含详细的描述信息
    """
    content: str = Field(description="需要写入文档的具体内容")


@tool(args_schema=WeatherQuery)
def get_weather(city):
    """
    查询指定城市的即时天气信息。

    :param city: 必要参数,字符串类型,表示要查询天气的城市名称。
                 注意:中国城市需使用其英文名称,如 "Beijing" 表示北京。
    :return: 返回 OpenWeather API 的响应结果,URL 为
             https://api.openweathermap.org/data/2.5/weather。
             响应内容为 JSON 格式的字符串,包含详细的天气数据。
    """
    # 构建请求 URL
    url = "https://api.openweathermap.org/data/2.5/weather"

    # 设置查询参数
    params = {
        "q": city,  # 城市名称
        "appid": os.getenv("OPENWEATHER_API_KEY"),  # 从环境变量中读取 API Key
        "units": "metric",  # 使用摄氏度作为温度单位
        "lang": "zh_cn"  # 返回简体中文的天气描述
    }

    # 发送 GET 请求并获取响应
    response = httpx.get(url, params=params)

    # 将响应解析为 JSON 并序列化为字符串返回
    data = response.json()
    logger.info(f"查询天气结果:{json.dumps(data)}")
    return json.dumps(data)


@tool(args_schema=WriteQuery)
def write_file(content):
    """
    将指定内容写入本地文件

    参数:
        content (str): 要写入文件的文本内容

    返回值:
        str: 表示写入操作成功完成的提示信息
    """
    # 将内容写入res.txt文件,使用utf-8编码确保中文字符正确保存
    with open('res.txt', 'w', encoding='utf-8') as f:
        f.write(content)
        logger.info(f"已成功写入本地文件,写入内容:{content}")
        return "已成功写入本地文件。"

创建 main.py 主程序文件,编写构建图的具体逻辑,这里我们将利用预构建图API编写天气助手的代码填进去。

python 复制代码
from langchain_ollama import ChatOllama
from tools import get_weather, write_file
from langgraph.prebuilt import create_react_agent

# 初始化本地大语言模型,配置基础URL、模型名称和推理模式
llm = ChatOllama(base_url="http://localhost:11434", model="deepseek-r1:8b", reasoning=False)

# 定义工具列表,包含天气查询、写入文件工具
tools = [get_weather, write_file]

# 创建ReAct代理,结合语言模型和工具函数
agent = create_react_agent(model=llm, tools=tools)

创建langgraph.json文件,内容如下

python 复制代码
{
  "dependencies": [
    "./"
  ],
  "graphs": {
    "chatbot": "./main.py:agent"
  },
  "env": ".env"
}

dependencies: 依赖路径数组,"./": 表示当前目录为依赖源

graphs: 执行图配置对象,chatbot: 图名称,对应./main.py文件中的agent函数作为聊天机器人入口点

env: 环境变量配置文件路径,".env": 指定使用当前目录下的.env文件作为环境变量配置源 */

安装langgraph-cli 并启动项目

执行pip install -U "langgraph-cli[inmem]"命令安装langgraph-cli 工具

执行langgraph dev命令启动项目,启动之后可以看到三个链接,第一个链接是当前部署完成后的服务端口,第二个是LangGraph Studio的可视化页面,其中第三个端口是端口的说明文档。

python 复制代码
# 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.

全家桶使用

查看接口文档

访问http://127.0.0.1:2024/docs即可查看接口文档。

LangGraph Studio 可视化调试

访问https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024既可在 web 页面调试。

LangSmith 追踪

点击LangGraph Studio侧边栏的Tracing Projects按钮,然后点击我们的项目langgraph_studio_chatbot,可以看到LangSmith的调试记录:

Agent Chat UI 前端交互

除了使用LangGraph Studio 调试交互外,我们也可以使用Agent Chat UI 进行交互,项目主页:https://github.com/langchain-ai/agent-chat-ui。项目提供本地部署和在线使用两种方式,为方便调试,此处以在线使用为例演示。

访问https://agentchat.vercel.app/,填写相关信息。

聊天测试进行功能验证

相关推荐
pulinzt1 分钟前
【python第三节】循环+函数初步
开发语言·python
三维空间7 分钟前
如何在 Python 中使用 MySQL 数据库使用存储过程
python
課代表15 分钟前
大语言模型能够理解的11种文件格式
人工智能·语言模型·自然语言处理·llm·markdown·token·模型
旦莫16 分钟前
怎么才能算对自动化测试框架二次开发(以Pytest为例)
python·测试开发·pytest·ai测试
半壶清水24 分钟前
【开源免费】使用 Python + Whisper + PyDub 自动切割长音频文件
开发语言·python·语言模型·开源·whisper
gorgeous(๑>؂<๑)26 分钟前
【南京大学-李文斌-arXiv25】超高分辨率遥感多模态大语言模型基准测试
人工智能·语言模型·自然语言处理
BoBoZz1928 分钟前
BillboardTextActor3D 3D字体随镜头旋转
python·vtk·图形渲染·图形处理
天才测试猿32 分钟前
软件测试之bug分析定位技巧
软件测试·python·selenium·测试工具·职场和发展·测试用例·bug
課代表35 分钟前
Python 数据可视化:从单变量到多变量
开发语言·python·信息可视化·数据分析·变量·时间序列·文本分析