用LangCorn+FastAPI一键把LangChain链和Pipeline部署为REST API服务
LangChain负责定义LLM链逻辑,FastAPI/Uvicorn提供高性能异步HTTP服务,LangCorn桥接两者自动生成端点
方案简介
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 链与管道逻辑,如
LLMMathChain、SimpleSequentialChain、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/
会话记忆
对话链支持在请求体中传入 history 与 memory 数组(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 原文。
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。