LangGraph Server Agent 框架本地部署指南

本文讲解基于 LangGraph Server 服务搭建本地离线 AI Agent 的完整部署流程,适配 Windows 开发环境,全程无需调用公有大模型接口,实现纯本地化 AI 推理与工作流编排,帮助开发者快速搭建可调试、可复用的本地私有化 AI Agent 服务,适用于个人开发、本地功能调试、轻量化私有化 AI 场景落地。

需要特别区分的是,LangGraph 底层核心 Python 库采用 MIT 开源协议,可以永久免费使用,不存在运行额度限制;但教程中用到的 LangGraph Server 属于配套服务组件,即便采用本地自托管的 Lite 轻量模式,也受软件许可约束:每年最多提供 100 万次节点运行额度,该统计为工作流内部节点执行次数,不等同于接口请求次数。当年度节点执行量超出额度,按照许可要求,则需要升级购买企业版授权。

LangGraph Server

1、本次部署仅安装运行 LangGraph Server 与 SDK 所需核心依赖,保证环境纯净无冗余、无版本冲突,采用清华源加速安装,适配 Windows 离线本地化部署。执行以下 CMD 命令安装核心组件。

bash 复制代码
CMD> pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple "langgraph-cli[inmem]"
CMD> pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple langgraph-sdk
CMD> pip list
Package                                  Version
---------------------------------------- -----------
langchain                                1.3.15
langgraph-api                            0.12.6
langgraph-checkpoint                     4.2.0
langgraph-cli                            0.4.31
langgraph-prebuilt                       1.1.0
langgraph-runtime-inmem                  0.32.6
langgraph-sdk                            0.4.2
langsmith                                0.11.0

2、为快速搭建标准化 LangGraph 项目结构,直接拉取官方开源模板项目,适配 LangGraph Server 运行规范。

打开 CMD 执行以下命令,克隆项目并进入项目根目录:

bash 复制代码
CMD> git clone https://github.com/langchain-ai/new-langgraph-project
CMD> cd new-langgraph-project
CMD> pip install -e .

3、进入项目根目录,新建 .env 环境配置文件。Windows 系统无法直接右键创建/改名该文件,可通过 Sublime Text、VS Code 等编辑器直接新建保存。该文件用于配置本地大模型地址、项目标识,实现完全离线私有化调用。

文件配置内容如下,适配本地 llama.cpp 部署的大模型接口

bash 复制代码
# To separate your traces from other application
LANGSMITH_PROJECT=new-agent

# Add API keys for connecting to LLM providers, data sources, and other integrations here
OPENAI_API_KEY=dummy
OPENAI_BASE_URL=http://127.0.0.1:11433/v1

4、为避免 Windows 编码乱码问题,先配置系统编码为 UTF-8,再启动 LangGraph 内存开发服务,内存模式专为本地调试、功能测试设计,支持代码热重载、可视化调试。

在项目根目录 CMD 中依次执行命令,其中测试环境可以使用dev,在编译环境则使用build部署

bash 复制代码
CMD> set PYTHONUTF8=1
CMD> set PYTHONIOENCODING=utf-8
CMD> 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 LangSmith Deployment.

5、进入本地 llama.cpp 程序目录,执行启动命令,加载本地 GGUF 量化模型,开启 jinja 模板解析,保证与 LangGraph 服务正常消息交互,全程无公网调用。

bash 复制代码
CMD> llama-server.exe -m qwen2.5-1.5b-instruct-q4_k_m.gguf --host 127.0.0.1 --port 11433 -c 4096 --jinja
init: llama threadpool init, n_threads = 12
load_model: initializing, n_slots = 4, n_ctx_slot = 4096, kv_unified = 'true'
llama_server: model loaded
llama_server: listening on http://127.0.0.1:11433

6、项目核心工作流逻辑位于 new-langgraph-project/src/agent/graph.py,替换默认代码,实现本地大模型调用、自定义系统提示、消息应答逻辑,完成离线智能体功能调试。

完整测试代码如下:

python 复制代码
from __future__ import annotations
from dataclasses import dataclass
from typing import Any, Dict
from langgraph.graph import StateGraph
from langgraph.runtime import Runtime
from typing_extensions import TypedDict
from langchain_openai import ChatOpenAI

# 读取.env配置
llm = ChatOpenAI(model="qwen2.5:1.5b")

class Context(TypedDict):
    my_configurable_param: str

@dataclass
class State:
    changeme: str = "example"

async def call_model(state: State, runtime: Runtime[Context]) -> Dict[str, Any]:
    messages = [
        ("system", "你是AI助手,所有回答必须使用简体中文,禁止输出英文回答。"),
        ("human", state.changeme)
    ]
    resp = await llm.ainvoke(messages)
    return {
        "changeme": resp.content
    }

graph = (
    StateGraph(State, context_schema=Context)
    .add_node(call_model)
    .add_edge("__start__", "call_model")
    .compile(name="New Graph")
)

LangGraph SDK

LangGraph SDK 是对接本地 LangGraph Server 的核心工具,支持同步调用、流式响应、批量执行、会话记忆等多种场景,以下提供多套完整可运行案例,适配不同业务需求。

通过 stream 接口实现 SSE 流式输出,逐段返回大模型推理内容,适用于聊天界面实时刷新、长文本生成场景:

python 复制代码
from langgraph_sdk import get_client
import asyncio

client = get_client(url="http://127.0.0.1:2024")

async def stream_chat():
    # 流式执行工作流
    async for chunk in client.runs.stream(
        None,
        "agent",
        input={
            "changeme": "你会做什么工作"
        },
    ):
        print(f"事件类型:{chunk.event}")
        print(f"返回数据:{chunk.data}")
        print("-" * 50)

if __name__ == "__main__":
    asyncio.run(stream_chat())

输出内容如下

bash 复制代码
CMD> python main.py

事件类型:metadata
返回数据:{'run_id': '01a0334b-3b5f-7661-8944-ee72f849d1b8', 'attempt': 1}
--------------------------------------------------
事件类型:values
返回数据:{'changeme': '你会做什么工作'}
--------------------------------------------------
事件类型:values
返回数据:{'changeme': '作为一个AI助手,我可以帮助用户进行多种任务,包括但不限于:\n\n1. 提供信息搜索和查询服务。\n2. 回答各种问题,涵盖科技、文化、生活等各个领域。\n3. 收发邮件
,处理日常事务。\n4. 与用户进行对话交流,提供娱乐、教育等互动内容。\n5. 进行数据分析和机器学习训练。\n6. 与各种应用和服务进行集成,提供更全面的服务。\n\n总的来说,我会尽力协助用
户解决各种问题,提供便利和高效的服务。'}
--------------------------------------------------
相关推荐
lyshark2 天前
基于 HuggingFace Tokenizers 训练自定义分词器
大模型应用技术实践
lyshark3 天前
基于 vLLM+Nginx 构建负载均衡推理集群
大模型应用技术实践
lyshark4 天前
LLama-Factory 实现大模型LoRA-SFT微调指南
大模型应用技术实践
lyshark6 天前
千问大模型完整RLHF全参数微调指南
大模型应用技术实践
lyshark8 天前
千问大模型二次LoRA‑SFT指令微调指南
大模型应用技术实践
lyshark13 天前
轻量化小模型MiniMind从训练到落地指南
大模型应用技术实践
lyshark18 天前
Ubuntu 大模型HF转GGUF全流程实践指南
大模型应用技术实践·linux 系统运维技术实践
lyshark19 天前
LangChain 消息流输出与结构化处理
大模型应用技术实践
lyshark20 天前
Python 原生封装 Llama.cpp 大模型推理接口
大模型应用技术实践