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

本地环境部署LangGraph

运行LangGraph本地服务器教程总结

该教程详细介绍了在本地环境搭建、运行LangGraph应用的完整流程,涵盖依赖安装、项目创建、环境配置、服务器启动及测试验证,同时提供后续部署与进阶学习方向,适用于开发者快速搭建LangGraph应用的本地开发环境,具体内容如下:

一、前提条件

需提前准备LangSmith API密钥(可免费注册获取),用于后续应用的追踪、调试与可观测性支持。

二、核心操作步骤

1. 安装LangGraph CLI(命令行工具)

LangGraph CLI是创建、管理LangGraph项目的核心工具,需确保Python版本≥3.11,安装命令如下:

pip install --upgrade "langgraph-cli[inmem]"
  • [inmem]:表示同时安装内存存储相关依赖,用于本地开发时的临时状态存储。

2. 创建LangGraph应用(基于模板)

通过CLI从官方模板创建新项目,快速生成可扩展的基础架构(示例使用new-langgraph-project-python模板,为单节点应用,便于后续自定义逻辑):

langgraph new path/to/your/app --template new-langgraph-project-python
  • 模板选择说明:若未指定--template参数,执行langgraph new path/to/your/app后会弹出交互式菜单,可从多个可用模板中选择(如多智能体模板、带记忆功能的模板等)。

3. 安装项目依赖(编辑模式)

进入项目根目录,以“编辑模式”(-e)安装依赖,确保本地代码修改能实时被服务器识别(无需重复安装):

# 进入项目目录
cd path/to/your/app
# 安装依赖
pip install -e .

4. 配置环境变量(创建.env文件)

项目根目录会生成.env.example示例文件,需基于该文件创建.env并填充关键配置(核心为LangSmith API密钥):

  1. 复制.env.example内容到新创建的.env文件;
  2. 替换LANGSMITH_API_KEY为实际密钥,示例:
    LANGSMITH_API_KEY=lsv2...  # 替换为你的LangSmith API密钥
    

5. 启动本地LangGraph服务器

通过langgraph dev命令启动本地API服务器,默认启用内存模式(仅适用于开发与测试,生产环境需切换至持久化存储后端):

langgraph dev
启动成功后输出信息

启动成功后会显示3个关键链接,分别对应API地址、文档地址与可视化UI地址:

>    Ready!
>
>    - API: http://localhost:2024/  # 本地API接口地址
>
>    - Docs: http://localhost:2024/docs  # API文档(Swagger风格,可查看所有接口)
>
>    - LangGraph Studio Web UI: https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024  # 可视化调试UI
  • Safari兼容性处理:若使用Safari浏览器,本地localhost连接可能受限,需添加--tunnel参数创建安全隧道:
    langgraph dev --tunnel
    

6. 测试应用(通过LangGraph Studio)

LangGraph Studio是专为LangGraph设计的可视化UI,支持本地应用的交互、调试与流程可视化,操作步骤如下:

  1. 访问langgraph dev输出中的“LangGraph Studio Web UI”链接(如https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024);
  2. 在Studio中可直接与LangGraph应用交互(如发送用户消息)、查看状态流转、调试工具调用逻辑;
  3. 若服务器使用自定义主机/端口(非默认localhost:2024),需手动修改链接中的baseUrl参数(如baseUrl=http://192.168.1.100:8080)。

7. 测试API接口(3种方式)

除可视化UI外,可通过Python SDK(同步/异步)或REST API直接调用本地服务器接口,验证应用功能。

方式1:Python SDK(异步)
  1. 安装LangGraph Python SDK:
    pip install langgraph-sdk
    
  2. 发送异步请求(无对话线程,单次调用):
    from langgraph_sdk import get_client
    import asyncio# 连接本地服务器
    client = get_client(url="http://localhost:2024")async def main():# 流式调用API,查询“What is LangGraph?”async for chunk in client.runs.stream(None,  # thread_id为None,表示“无线程”单次调用"agent",  # 智能体名称,在项目langgraph.json中定义input={"messages": [{"role": "human", "content": "What is LangGraph?"}]},):print(f"接收事件类型: {chunk.event}...")print(chunk.data)print("\n\n")# 执行异步函数
    asyncio.run(main())
    
方式2:Python SDK(同步)
  1. 安装SDK(同上,已安装可跳过);
  2. 发送同步请求:
    from langgraph_sdk import get_sync_client# 连接本地服务器(同步客户端)
    client = get_sync_client(url="http://localhost:2024")# 流式调用API
    for chunk in client.runs.stream(None,  # 无线程ID"agent",  # 智能体名称input={"messages": [{"role": "human", "content": "What is LangGraph?"}]},stream_mode="messages-tuple",  # 流式输出模式:按消息元组返回
    ):print(f"接收事件类型: {chunk.event}...")print(chunk.data)print("\n\n")
    
方式3:REST API(curl命令)

通过curl发送POST请求,直接调用API接口:

curl -s --request POST \--url "http://localhost:2024/runs/stream" \--header 'Content-Type: application/json' \--data "{\"assistant_id\": \"agent\",\"input\": {\"messages\": [{\"role\": \"human\",\"content\": \"What is LangGraph?\"}]},\"stream_mode\": \"messages-tuple\"}"
  • assistant_id: 对应智能体名称(与SDK中的“agent”一致);
  • stream_mode: 流式输出格式,此处为“消息元组”。

三、后续步骤

本地服务器运行成功后,可进一步探索LangGraph的部署与高级功能:

  1. 部署快速入门:通过LangGraph Platform将应用部署到生产环境(需配置持久化存储,如PostgreSQL);
  2. LangGraph Platform概述:学习平台核心概念(如多智能体协作、大规模部署优化等);
  3. API参考文档:访问http://localhost:2024/docs或官方文档,深入了解所有API的参数与使用场景;
  4. Python SDK参考:探索SDK的更多功能(如对话线程管理、状态查询、批量调用等)。

四、关键注意事项

  • 内存模式局限性langgraph dev默认的内存模式下,服务器重启后所有状态(如对话历史、检查点)会丢失,生产环境需替换为SqliteSaverPostgresSaver等持久化存储;
  • 智能体名称配置:代码中使用的“agent”是默认智能体名称,可在项目根目录的langgraph.json中修改或新增智能体;
  • LangSmith的作用:LangSmith不仅提供API密钥,还用于追踪应用运行轨迹、调试错误、评估智能体性能,是LangGraph开发的重要辅助工具。
http://www.dtcms.com/a/519644.html

相关文章:

  • 在 R 医学数据分析中,关于 RStudio 和 VSCode 哪个效率更高
  • GPIO引脚操作方法概述
  • APP 开发抉择:定制服务与模板套用如何选?
  • 工程经理应该(有时候)写代码
  • Linux:进程间通信(1)
  • 基于ORB-SLAM、A*及DWA的自主导航方案
  • 阜新网站开发公司dede手机网站建设教程
  • 网站搭建价格宁波网站优化技术
  • 达梦数据库怎么查看连接情况
  • UVa1497/LA5719 A Letter to Programmers
  • 谷歌Quantum Echoes算法:迈向量子计算现实应用的重要一步
  • 网络管理员教程(初级)第六版--第2章 局域网技术
  • PY32F040单片机介绍(1)
  • 数据库多表关系、查询与约束
  • 空调设备公司网站建设建设部网站社保联网
  • 济源网站建设电话锦州做网站的个人
  • 逻辑推演题——谁是骗子
  • 单位网站建设汇报材料wordpress菜单保存不
  • 【底层机制】【Android】Android 系统的启动流程
  • js基础:06、函数(创建函数、参数、返回值、return、立即执行函数、对象(函数))和枚举对象的属性
  • LeetCode 刷题【131. 分割回文串】
  • 7. Functions(函数)
  • 零基础掌握 Vanna Text2SQL 框架:从原理到实战训练指南
  • [linux仓库]信号处理及可重入函数[进程信号·陆]
  • webrtc源码走读(一)-QOS-NACK-概述
  • wordpress 企业网站 免费如何注册网站免费的
  • 斗地主游戏源码,自适应手机版,带有管理后端
  • Linux桌面X11服务-XRecord方案捕获鼠标点击的应用窗口
  • 021数据结构之并查集——算法备赛
  • 网站制作售后免费在线代理网站