做一个有温度和有干货的技术分享作者 —— Qborfy
从 LangChain系列文章开始到现在,我们学习 LangChain的基础知识和实战撸代码,现在我们假设已经开发好一个 LangChain链式任务,那么如何部署以及如何与 web服务进行互相调用呢?
那么接下来我们应该就学习LangServer与LangSmith,如何让 LangChain进行企业级开发。
LangServer: 帮开发者将 LangChain 部署一个 Restful 服务。
LangSmith: 监控 LangChain调用链路服务和提供更加友好的可视化界面。
认识 LangServer
LangServer是集成了FastApi + Pydantic的Restful框架。它提供了一些特性:
- 每次 API调用都会返回丰富的错误信息
- 自带 JSON Schema和 Swagger API文档
- 高效的
/invoke
、batch
和/stream
接口服务,支持单个服务器多个并发请求 - 支持调用
/stream_log
接口,实现链式任务中间态步骤返回 /stream_events
更加清晰任务事件状态信息- 提供LangServer SDK,调用 Restful 和 直接调用大模型一样简单
实战教程
环境准备
安装langchain-cli
全局命令,方便快速启动 Lang Server项目
1 | pip install -U langchain-cli |
安装poetry
管理项目的依赖,更好管理服务依赖 pip包。
poetry
Python packaging and dependency management made easy, 翻译过来就是更加轻松管理 python项目和依赖
1 | 安装 pipx |
初始化和运行项目
- 项目初始化
利用langchain-cli 脚手架, 初始化一个 langserver项目
1 | 初始化一个langserver的项目 |
- 项目结构说明
生成的目录结构与说明如下:
1 | mylangserver # 项目名 |
- 运行项目
在根目录下运行如下命令:
1 | langchain server |
就可以直接访问 http://localhost:8080
,效果具体如下图:
接口开发
server.py
文件
在接口开发之前我们先看看server.py
文件,具体如下:
1 | from fastapi import FastAPI |
- 添加一个调用
DeepSeek-R1
模型的接口
通过 add_routes
新增一个模型对象,会自动封装成对应的 Restful接口,具体如下:
1 | from fastapi import FastAPI |
接下来我们访问 http://localhost:8000/
,就会出现和/deepseek
相关的文档,具体如下图:
接口测试
接口测试我们可以通过ApiFox (一个和 Postman类似 API 测试工具)进行测试,具体如下.
/invoke
发起一个对话请求, 具体如下图:
/stream
流式调用,具体如下图:
SDK调用
在LangChain中是可以通过 LangServe提供的 RemoteRunable
进行远程调用,和原来的调用大模型的使用方式其实是一样的, 具体代码如下:
1 | # 实现langchain调用远端调用 LangServer |
这样子我们不仅可以在本地调用大模型,还能调用其他人提供 LangChain服务,从而实现更加复杂的功能。
生产部署
LangServer生产部署,按照 LangChain官方推荐是通过Dockerfile
打包进行部署,其中也比较简单,具体执行如下命令:
1 | 打包镜像 |
或者是通过 docker-compose启动 docker服务,具体如下:
1 | version: '3' |
最终执行docker-compose up -d
启动服务后,就可以通过http://localhost:8080/docs
访问到服务了。
监控与日志
LangSmith监控
LangSmith是 LangChain官方提供的监控工具,可以监控模型运行情况,一个 SASS服务需要我们将服务相关信息注册到 LangSmith网站上,因此可以按个人或公司需要判断是否允许使用。
LangSmith是一个用于构建生产级应用的平台。它允许您密切监控和评估您的应用,以便您可以快速而自信地发布应用。
传统软件应用程序是通过编写代码来构建的,而 AI 应用程序则需要编写提示来指导应用程序执行哪些操作。
LangSmith 提供了一套旨在实现和促进提示工程的工具,以帮助您找到适合您的应用程序的完美提示。
PS:LangSmith这里提示未来编程开发者的思维转变,我们实现功能的思路不再是针对一些实现逻辑,而是面向不同的 AI 模型,优化提示语实现我们想要的功能。
在 LangServer 中使用 LangSmith,需要先注册一个账号,然后获取 api key 添加到 LangServer中,具体使用代码如下:
1 | import os |
具体使用教程可以参考LangSmith官方文档
LangSmith主要作用是监控 链路任务节点调用和扭转情况,可以更加清晰的分析链的运行情况和日志,具体效果如下图所示:
Verbose关键日志
如果我们不想把自己的服务相关的日志信息暴露给 LangSmith, 我们还可以通过设置set_verbose
设置详细日志开关, 从而实现我们调用 LangChain链路的完整日志,具体如下:
1 | from langchain.globals import set_verbose |
打开开关后,我们再调用helloworld.py
大模型,可以看到关键的日志信息,但是verbose只会输出关键日志,下面我们还可以 debug
查看更加详细的日志信息。
Debug日志
我们可以通过debug
设置日志级别,从而查看更加详细的日志信息,具体如下:
1 | from langchain.globals import set_debug |
打开开关后,我们再调用helloworld.py
大模型,可以看到更加详细的日志信息,具体如下图:
总结
本文我们主要学习了LangServer的去部署一个 LangChain链,通过 LangServe对于第三方就能加友好的访问我们的提供 LangChain服务,从而实现更加复杂的功能。回顾一下,我们主要学习了以下内容:
- LangServer 安装与运行:通过 LangChain-Cli脚手架创建项目和
langchain serve
运行项目 - LangServer 接口开发:
add_routes
添加接口,可以直接把一个 LangChain添加到 LangServer中且自动生成 Swagger文档 - LangServer监控与日志:LangSmith是LangChain官方提供的监控工具,但是会上报我们服务相关的日志信息,因此我们可以设置
set_verbose
或者set_debug
设置详细日志开关, 从而实现我们调用 LangChain链路的完整日志
参考资料
- LangChain官方文档
- LangChain中文教程
- LangChain(0.0.340)官方文档十一:Agents之Agent Types
- (哔哩哔哩视频)2025吃透LangChain大模型全套教程(LLM+RAG+OpenAI+Agent)通俗易懂,学完即就业!
声明:本文部分材料是基于DeepSeek-R1模型生成。
- 本文作者: Qborfy
- 本文链接: https://www.qborfy.com/ailearn/ai-learn07.html
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!