W
AI-Wiki
CONCEPT

LangServe

核心定义

LangServe是LangChain生态专属的API部署工具,专为解决LangChain链从本地开发到线上服务的落地需求设计,可快速将任意LangChain标准链封装为可对外调用的HTTP接口,底层无缝对接FastAPI现代高性能Web框架,复用FastAPI的类型提示、自动文档、异步高性能等特性,无需额外开发接口逻辑即可完成大模型应用的API部署。

核心功能

LangServe的核心能力围绕add_routes方法展开,这是其唯一的核心对外API:

  1. 一键路由绑定:仅需一次方法调用即可将LangChain链对象关联到FastAPI实例的指定URL路径,无需手动编写接口处理逻辑
  2. 自动兼容请求类型:生成的接口自动支持两种请求方式:POST调用(接收链的输入参数并返回执行结果)、GET预览(查看接口基础信息)
  3. 自动生成接口文档:复用FastAPI的原生能力,自动生成符合OpenAPI规范的接口文档,自带Swagger UI可视化调试页面
  4. 逻辑无差异适配:接口触发时的执行逻辑等价于本地直接调用chain.invoke(...),和开发阶段的链运行逻辑完全一致,无需额外适配改造。

标准使用流程

前置依赖

使用前需要提前安装三个核心依赖包:fastapilangserveuvicornASGI服务器,用于运行FastAPI服务)。

步骤1:初始化FastAPI实例

from fastapi import FastAPI

# 初始化 FastAPI 应用
app = FastAPI(
    title="第一个LangChain应用", # 接口文档标题 
    version="0.0.1", # 版本号 
    description="LangChain应用接口", # 描述信息 
)

其中titleversiondescription三个参数会自动同步到生成的接口文档中,无需额外配置。

步骤2:注册LangChain链为API接口

from langserve import add_routes

# 给 app 添加路由,将已开发完成的chain对象关联到 /first_app 路径
add_routes(app, chain, path="/first_app")

add_routes方法的三个必填核心参数:

  • 第一个参数:已初始化的FastAPI实例
  • 第二个参数:已开发完成的LangChain链对象(支持RAG链、Agent链、工具调用链等所有LangChain标准链实现)
  • 第三个参数:接口的自定义URL路径

注册完成后,用户访问对应路径即可触发链的执行。

步骤3:启动API服务

if __name__ == "__main__":
    import uvicorn
    # 用uvicorn启动服务,监听本地8000端口
    uvicorn.run(app, host="127.0.0.1", port=8000)

启动完成后可通过以下地址访问服务:

  • 服务根地址:http://127.0.0.1:8000
  • 本次注册的链接口地址:http://127.0.0.1:8000/first_app
  • 自动生成的可视化接口文档地址:http://127.0.0.1:8000/docs

细节与边界

  1. LangServe本身不提供服务运行能力,必须配合ASGI服务器(如uvicorn、hypercorn等)才能正式对外提供服务
  2. 默认生成的接口仅支持LangChain标准链的输入输出格式,若有自定义参数校验、权限认证需求,需额外在FastAPI层添加依赖实现
  3. 生产环境部署时,建议在服务前端增加Nginx作为反向代理,实现负载均衡、HTTPS配置、流量管控、访问日志统计等能力
  4. add_routes方法支持更多可选参数,可配置限流、回调钩子、自定义响应格式等扩展能力,基础场景仅需传入三个核心参数即可满足需求。

相关条目