LangChain 4 服务部署与链路监控

  1. LangServe 服务部署
  2. LangSmith Tracing(跟踪)
  3. Verbose(详细日志打印)
  4. Debug(调试日志打印)

内容会参数版本冲突问题Pydantic 需要 v2.x 才能访问openapi.json,但是 LangServe需要 v1 才能使用。所以仅供学习参考,暂时我没有解决的方法。我感觉作者演示的时候使用的 v1 的 langserve app 打开的 API 文档(当然,这个可以去官文看),具体实操是后台访问可能使用的 v2,我也可以成功复现,只是打不开 API 文档。

1. LangServe 服务部署

  • LangServe 是一个帮助开发者将 LangChain 可运行对象和链部署为 REST API 的库。
  • 该库集成了 FastAPI,并使用 pydantic 进行数据验证。
  • LangServe/FastAPI/Pydantic 的兼容性大坑
    • LangServe 用 FastAPI + Pydantic 做 API 验证和文档。
    • Pydantic 1.x2.x 差异巨大,LangServe 的 OpenAPI 文档(Swagger UI)只有在 Pydantic v1 下能用
    • 用 Pydantic v2,OpenAPI 文档就挂掉了
    • 如果装了 Pydantic v2.x,访问 /openapi.json 就会 500,Swagger UI 也打不开。
    • 所以务必锁定 v1.x,写法如下:
      1
      pydantic = "<2.0"
    • 以后如果装 langserve/langchain/fastapi 项目,一遇到 schema 生成或 swagger 挂掉,第一时间检查是不是 pydantic 2.x,降级!

1.1 Pydantic 简介

  • Pydantic 是 Python 中广泛使用的数据验证和解析第三方库。
    • 利用声明式方式定义数据模型和类型提示,强大功能用于数据验证和序列化,使代码更可靠、更易读、更简洁、易于调试。
    • 可以从模型生成 JSON 架构,自动生成文档,方便与其他工具集成。
    • 提供客户端(比如 JS 客户端),可用于远程调用部署在服务器上的 LangChain 对象。

1.2 特性

  • 自动推断 LangChain 对象的输入/输出模式,每次 API 调用执行时提供丰富错误信息
  • 带有 JSONSchemaSwagger 的 API 文档页面(插入示例链接)
  • 高效的 /invoke/batch/stream 端点,支持服务器多并发请求
  • /stream_log 端点:用于流式传输链/代理的全部(或部分)中间步骤
  • 新功能:0.0.40 版本起支持 /stream_events,使流式传输更方便,无需解析 /stream_log 输出
  • 使用经过严格测试的开源 Python 库:FastAPI、Pydantic、uvloop、asyncio
  • 使用客户端 SDK 调用 LangServe 服务端,像本地一样运行可运行对象(或直接 HTTP API 调用)

1.3 限制

  • 暂不支持由服务器发起的事件的客户端回调
  • 使用 Pydantic V2 时,不会生成 OpenAPI 文档(FastAPI 支持混用 pydantic v1/v2 命名空间,详见后文)

2. 安装 LangServe

  1. 客户端+服务器端同时装(conda):

    1
    pip install --upgrade "langserve[all]"
    • 仅装客户端:

      1
      pip install "langserve[client]"
    • 仅装服务器端:

      1
      pip install "langserve[server]"

3. 快速初始化与设置

  1. LangChain CLI 初始化新项目,先装 langchain-cli(conda):

    1
    pip install -U langchain-cli
    • 创建新应用 langserve_app(默认安装到当前项目目录):
    1
    langchain app new <langserve_app>
    • 可以在Terminal 测试:langchian
  2. add_routes 中定义可运行对象(转 server.py 并编辑)

    1
    add_routes(app, NotImplemented)

(示例:需替换为你的链或模型实例)

  1. 用 poetry 管理依赖/装第三方包

    • 推荐用 poetry 做依赖管理(配合 pipx 装 poetry,推荐官方文档)。
    • 例:装 langchain-openai 等插件
      1. 安装pipx,参考:https://pipx.pypa.io/stable/installation/
        1
        pip install pipx
        • Terminal验证安装:pipx
      2. 加入到环境变量,需要重启PyCharm
        • 加入到你的 shell 环境变量 PATH 里,通常是 ~/.local/bin
        1
        pipx ensurepath
      3. 安装poetry,参考:https://python-poetry.org/docs/
        • Terminal验证安装:poetry
        1
        2
        3
        pipx install poetry
        # 先初始化项目
        poetry init
        • Package name [langserve]: 回车就是默认的
        • 如果你的项目目录是 LangServe,那么它默认会填充 langserve(转换成小写,避免 Python 模块名大小写混乱)。
        1
        2
        3
        4
        5
        6
        7
        8
        Package name [langserve]: 
        Version [0.1.0]:
        Description []:
        Author [Artin <xxxxxxx@outlook.com>, n to skip]: n
        License []: MIT
        Compatible Python versions [>=3.13]:
        Would you like to define your main dependencies interactively? (yes/no) [yes]
        Would you like to define your development dependencies interactively? (yes/no) [yes]
      4. 安装 langchain-openai 库
        • 默认没有这两个:pyproject.toml
        1
        poetry add langchain langchain-openai
        • 把下面手动敲上去也可以
        • 如果默认有pydantic = "<2",可以删除让langchain自动安装,或者手动改一下版本,根据报错。
        1
        2
        langchain = "^0.3.27"  
        langchain-openai = "^0.3.28"
  2. 配置环境变量

    1
    export OPENAI_API_KEY="sk-..."
  3. 启动你的 LangServe 应用

    1
    poetry run langchain serve --port=8000
    • 默认端口 8000,可根据需要指定
    • 切换到 langserve_app 这个目录打开 Terminal 启动
    • Python版本建议选稳定版,不然冲突

参考资料


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

LangChain 4 服务部署与链路监控
http://neurowave.tech/2025/06/28/2-13-LLM-Langchain4/
作者
Artin Tan
发布于
2025年6月28日
更新于
2025年8月6日