LangChain 4 服务部署与链路监控
- LangServe 服务部署
- LangSmith Tracing(跟踪)
- Verbose(详细日志打印)
- 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.x 和 2.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 调用执行时提供丰富错误信息
- 带有 JSONSchema 和 Swagger 的 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
-
客户端+服务器端同时装(conda):
1
pip install --upgrade "langserve[all]"-
仅装客户端:
1
pip install "langserve[client]" -
仅装服务器端:
1
pip install "langserve[server]"
-
3. 快速初始化与设置
-
LangChain CLI 初始化新项目,先装 langchain-cli(conda):
1
pip install -U langchain-cli- 创建新应用
langserve_app(默认安装到当前项目目录):
1
langchain app new <langserve_app>- 可以在Terminal 测试:
langchian
- 创建新应用
-
在
add_routes中定义可运行对象(转 server.py 并编辑)1
add_routes(app, NotImplemented)
(示例:需替换为你的链或模型实例)
-
用 poetry 管理依赖/装第三方包
- 推荐用 poetry 做依赖管理(配合 pipx 装 poetry,推荐官方文档)。
- 例:装 langchain-openai 等插件
- 安装pipx,参考:https://pipx.pypa.io/stable/installation/
1
pip install pipx- Terminal验证安装:pipx
- 加入到环境变量,需要重启PyCharm
- 加入到你的 shell 环境变量 PATH 里,通常是 ~/.local/bin
1
pipx ensurepath - 安装poetry,参考:https://python-poetry.org/docs/
- Terminal验证安装:
poetry
1
2
3pipx install poetry
# 先初始化项目
poetry init- Package name [langserve]: 回车就是默认的
- 如果你的项目目录是
LangServe,那么它默认会填充langserve(转换成小写,避免 Python 模块名大小写混乱)。
1
2
3
4
5
6
7
8Package 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] - Terminal验证安装:
- 安装 langchain-openai 库
- 默认没有这两个:pyproject.toml
1
poetry add langchain langchain-openai- 把下面手动敲上去也可以
- 如果默认有
pydantic = "<2",可以删除让langchain自动安装,或者手动改一下版本,根据报错。
1
2langchain = "^0.3.27"
langchain-openai = "^0.3.28"
- 安装pipx,参考:https://pipx.pypa.io/stable/installation/
-
配置环境变量
1
export OPENAI_API_KEY="sk-..." -
启动你的 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/