用LangCorn+FastAPI一键把LangChain链和Pipeline部署为REST API服务

LangChain负责定义LLM链逻辑,FastAPI/Uvicorn提供高性能异步HTTP服务,LangCorn桥接两者自动生成端点

✓ 一行命令即可部署链服务✓ 自动生成RESTful API文档 ✕ 鉴权仅支持静态api token

方案简介

LangCorn 是一个 API 服务器方案,用于将 LangChain 模型与管道(pipelines)便捷地对外提供服务。它基于 FastAPI 高性能异步框架构建,把开发者用 LangChain 写好的 Chain(如 LLMMathChain、SimpleSequentialChain、Conversation、Agent 等)自动暴露为 RESTful API 端点,无需手写任何 Web 层代码。

这套方案解决的问题是:LangChain 本身只是链式编排库,缺少生产级服务化能力。借助 LangCorn,开发者只需 pip install langcorn,再写一个定义 chain 的 Python 模块,就能用 langcorn server examples.ex1:chain 一条命令启动服务,并通过 /docs 获得自动生成的接口文档。

适合人群:已经用 LangChain 构建了 LLM 应用原型、希望快速以 API 形式部署给前端或其他系统调用的开发者;需要同时挂载多条链、支持会话记忆与自定义 LLM 参数的语言处理应用团队。

亮点与能力

  • Easy deployment of LangChain models and pipelines
  • Ready to use auth functionality
  • High-performance FastAPI framework for serving requests
  • Scalable and robust solution for language processing applications
  • Supports custom pipelines and processing
  • Well-documented RESTful API endpoints
  • Asynchronous processing for faster response times

组成与分工

  • LangCorn:核心胶水层,提供 create_service 工厂与 langcorn server 命令,把 LangChain 链对象包装成 API 端点,并内置静态 token 鉴权。
  • LangChain:负责定义 LLM 链与管道逻辑,如 LLMMathChainSimpleSequentialChain、conversation、agent、自定义 run 函数。
  • FastAPI:高性能 Web 框架,承载请求路由、异步处理,并自动生成 /docs 接口文档。
  • Uvicorn:ASGI 服务器,实际运行 FastAPI 应用(如 uvicorn main:app --host 0.0.0.0 --port 8000)。
  • OpenAI:示例中的底层 LLM 提供方,通过 os.environ["OPENAI_API_KEY"] 配置密钥,OpenAI(temperature=0) 实例化模型。

前置要求

  • Python 环境
  • 安装 langcorn 包:

shell
pip install langcorn

  • 使用 OpenAI 模型时需要设置 API Key:

python
os.environ["OPENAI_API_KEY"] = os.environ.get("OPENAI_API_KEY", "sk-**")

实施步骤

1. 定义 LLM 链

编写如 examples/ex1.py 的模块,创建 chain 对象:

python
import os
from langchain import LLMMathChain, OpenAI
os.environ["OPENAI_API_KEY"] = os.environ.get("OPENAI_API_KEY", "sk-**")
llm = OpenAI(temperature=0)
chain = LLMMathChain(llm=llm, verbose=True)

2. 启动 LangCorn 服务

单条链:

shell
langcorn server examples.ex1:chain

或等价方式:

shell
python -m langcorn server examples.ex1:chain

3. 挂载多条链

shell
python -m langcorn server examples.ex1:chain examples.ex2:chain

4. 或以 FastAPI 应用方式集成

python
from fastapi import FastAPI
from langcorn import create_service
app:FastAPI = create_service("examples.ex1:chain")

然后用 uvicorn 启动:

shell
uvicorn main:app --host 0.0.0.0 --port 8000

启动成功后终端会输出 Endpoint: /docs 与各链对应的 /examples.ex1/run 端点信息,服务默认运行在 http://127.0.0.1:8718

使用与配置要点

鉴权

通过 auth_token 添加静态 API token 鉴权:

shell
python langcorn server examples.ex1:chain examples.ex2:chain --auth_token=api-secret-value

或在代码中:

python
app:FastAPI = create_service("examples.ex1:chain", auth_token="api-secret-value")

自定义 LLM API Key

请求时通过请求头传入:

shell
POST http://0.0.0.0:3000/examples.ex6/run
X-LLM-API-KEY: sk-
Content-Type: application/

按请求覆盖 LLM 参数

shell
POST http://0.0.0.0:3000/examples.ex1/run
X-LLM-API-KEY: sk-
X-LLM-TEMPERATURE: 0.7
X-MAX-TOKENS: 256
X-MODEL-NAME: gpt5
Content-Type: application/

会话记忆

对话链支持在请求体中传入 historymemory 数组(human/ai 消息),响应中会返回更新后的 memory,实现多轮对话状态管理。

验证成功

访问 /docs 查看自动生成的 FastAPI 文档,或直接 POST 对应链的 /run 端点并检查 JSON 响应中的 output 字段。

注意事项与常见问题

  • 鉴权仅提供静态 API token 一种方式(auth_token),如需更复杂的认证体系需自行扩展。
  • 自定义运行逻辑时,可以不直接暴露 chain,而是暴露自定义函数,例如 ex12.py 中的 def run(query: str) -> Joke,然后 create_service("examples.ex12:run")
  • 也可将服务部署到 Vercel 等平台,README 提供了托管在 vercel 上的 /docs 在线示例。
  • 更多高级特性与自定义选项请参考官方文档。

优缺点

  • ✓ 一行命令即可部署链服务
  • ✓ 自动生成RESTful API文档
  • ✕ 鉴权仅支持静态api token

出处

本方案挖掘自开源项目 msoedov/langcorn,方案内容与实施命令均来自其 README 原文。

方案出处
msoedov/langcorn:⛓️ Serving LangChain LLM apps and agents automagically with FastApi. LLMops
938 star ⛓️ Serving LangChain LLM apps and agents automagically with FastApi. LLMops

本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。