【LangServe部署流程】5 分钟部署你的 AI 服务

article/2025/6/8 4:54:38

目录

一、LangServe简介

二、环境准备

1. 安装必要依赖

2. 编写一个 LangChain 可运行链(Runnable) 

3. 启动 LangServe 服务

4. 启动服务

 5. 使用 API 进行调用

三、可选:访问交互式 Swagger 文档

四、基于 LangServe 的 RAG 应用部署流程

🌟 项目目标

 第一步:安装依赖

第二步:准备知识文档

第三步:构建 RAG 链(rag_chain.py)

 第四步:部署为 LangServe 服务(main.py)

 第五步:启动服务

 第六步:测试 API 调用

第七步:可选增强功能

 项目结构参考

示例请求格式(JSON)

 五、实践建议

六、扩展玩法

七、项目结构参考

总结


本教程将带你用 LangServe 构建一个可在线访问的 LLM 服务,支持通过 HTTP API 调用大语言模型(如 OpenAI 的 GPT 或阿里百炼 Qwen)。


一、LangServe简介

LangServe 是 LangChain 官方提供的部署工具,用于将 LangChain 的 Runnable 组件(如链、Agent、RAG Pipelines)以 RESTful API 形式发布为 Web 服务。

你可以理解它是:

“一个让你把 LangChain 项目一键变成 API 的开发框架。”


二、环境准备

1. 安装必要依赖

pip install langserve langchain openai uvicorn

 若使用的是 Qwen 或阿里百炼平台,请安装相关 SDK,如:

pip install dashscope


2. 编写一个 LangChain 可运行链(Runnable) 

创建一个文件:my_chain.py

# my_chain.py
from langchain_core.runnables import RunnableLambda
from langchain_core.prompts import PromptTemplate
from langchain.chat_models import ChatOpenAIprompt = PromptTemplate.from_template("你是一位诗人。请根据提示写一首诗:{topic}")llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.7)# 定义一个 runnable 链
poetry_chain = prompt | llm# 或者包装成一个函数
poetry_func = RunnableLambda(lambda x: poetry_chain.invoke(x))

 

3. 启动 LangServe 服务

创建一个文件:main.py

# main.py
from langserve import add_routes
from fastapi import FastAPI
from my_chain import poetry_funcapp = FastAPI()# 启用 LangServe 路由:将 poetry_func 发布为 API
add_routes(app, poetry_func, path="/poetry")# 启动方式见下方 uvicorn 命令

4. 启动服务

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

启动后你会看到输出:

INFO:     Uvicorn running on http://127.0.0.1:8000


 5. 使用 API 进行调用

你可以使用 curl、Postman、或 Python 发请求:

curl http://localhost:8000/poetry/invoke \-X POST \-H "Content-Type: application/json" \-d '{"input": {"topic": "月亮与孤独"}}'

返回结果类似:

{"output": "在孤独的夜晚月色浓,\n独影轻摇寂寞中……"
}

三、可选:访问交互式 Swagger 文档

打开浏览器访问:

http://localhost:8000/docs

 你将看到自动生成的 API 文档,并可以在线测试。


四、基于 LangServe 的 RAG 应用部署流程

本教程将手把手教你如何构建一个检索增强生成(RAG)系统,并通过 LangServe 快速部署为可调用的 Web API。

🌟 项目目标

构建一个支持文档问答的 API 服务,具备以下功能:

  • 📄 文档向量化并存入数据库(FAISS)

  • 🔍 基于用户提问进行语义搜索

  • 🧠 使用 LLM(如 OpenAI / Qwen)进行上下文感知回答

  • 🌐 通过 LangServe 部署为 /qa API 接口


 第一步:安装依赖

pip install langchain langserve openai faiss-cpu tiktoken

 如果你使用阿里百炼:

pip install dashscope


第二步:准备知识文档

创建一个文本文件 data.txt(例如法律文书、公司手册、产品说明书等):

LangServe 是 LangChain 官方推出的服务部署工具。它可以将 LangChain 的链或 agent 包装成 API 形式,并可通过 FastAPI 进行调用。


第三步:构建 RAG 链(rag_chain.py

# rag_chain.py
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings  # 或 DashScopeEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.document_loaders import TextLoader
from langchain.chat_models import ChatOpenAI
from langchain.chains import RetrievalQA# 加载文档并切分
loader = TextLoader("data.txt")
docs = loader.load()splitter = CharacterTextSplitter(chunk_size=300, chunk_overlap=50)
chunks = splitter.split_documents(docs)# 创建向量数据库
vectorstore = FAISS.from_documents(chunks, OpenAIEmbeddings())# 创建问答链
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
llm = ChatOpenAI(model="gpt-3.5-turbo")
rag_chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)

 第四步:部署为 LangServe 服务(main.py

# main.py
from fastapi import FastAPI
from langserve import add_routes
from rag_chain import rag_chainapp = FastAPI()
add_routes(app, rag_chain, path="/qa")

 第五步:启动服务

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


 第六步:测试 API 调用

curl http://localhost:8000/qa/invoke \-X POST \-H "Content-Type: application/json" \-d '{"input": "LangServe 是什么?"}'

返回:

{"output": "LangServe 是 LangChain 官方的服务部署工具..."
}

你也可以通过浏览器访问:

 http://localhost:8000/docs

 在线测试 API。


第七步:可选增强功能

功能方法
✅ 替换为 DashScope 模型替换 ChatOpenAIDashScopeChatModel
✅ 替换为 Qdrant 向量库Qdrant.from_documents() 代替 FAISS
✅ 显示引用来源使用 RetrievalQAWithSourcesChain
✅ 支持多轮对话记忆RunnableWithMessageHistory 包装 QA 链
✅ 多文档支持加载多个文档并统一入库
✅ LangGraph 多状态问答流程可用 LangGraph 拓展复杂问答流程并暴露为服务

 项目结构参考

.
├── data.txt          # 你的知识库文档
├── rag_chain.py      # 构建 RAG 模块
├── main.py           # LangServe 部署接口
├── requirements.txt  # 依赖清单
└── .env              # API Key 环境变量


示例请求格式(JSON)

{"input": "LangServe 的用途是什么?"
}

 返回:

{"output": "LangServe 是 LangChain 的部署工具..."
}

 使用 LangServe 搭配 RAG 模型部署的方式,让你可以:

  • 快速上线问答系统

  • 对接自己的知识库

  • 以 API 方式调用,便于嵌入 Web/微信/APP


进一步拓展项:

  • 使用 DashScope 替换 OpenAI

  • 添加源文片段高亮与显示

  • 支持流式响应 / 多轮记忆

  • 接入向量检索 API 进行文档动态更新


 五、实践建议

  • ✅ 将复杂链(如 RetrievalQA、Tool Agent)封装成 runnable,也能直接部署。

  • ✅ 用 RunnableWithMessageHistory 维护对话历史,实现多轮记忆对话。

  • ✅ 配置 .env 文件管理 API Key 等环境变量。

  • ✅ 可部署到服务器上(例如用 Docker + Gunicorn)。


六、扩展玩法

应用场景示例
多链路切换注册多个 add_routes(app, ..., path="/x")
集成向量搜索与 Qdrant、FAISS 等结合
流式响应支持 streaming=True 开启流式输出
LangGraph 支持用于多状态对话流程图部署
用户权限验证与 FastAPI 中间件整合验证逻辑


七、项目结构参考

.
├── main.py          # 启动入口
├── my_chain.py      # 你的 LangChain runnable
├── requirements.txt # 依赖清单
└── .env             # API 密钥配置(可选)
 


 

总结

LangServe 是部署 LLM 应用的理想方案,简洁、快速、灵活。你只需编写好一个 LangChain 链,将它暴露为 API,整个流程就能上线一个可供前端、其他服务调用的 AI 模块。


http://www.hkcw.cn/article/WtraLjoffc.shtml

相关文章

苍穹外卖--HttpClient

1.介绍 HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议 依赖: 核心API: ①HTTPClient ②HTTPClients ③Closeabl…

最佳实践 | 璞华易研“PLM+AI智能研发平台”,助力汉旸科技实现高新材料“数据驱动研发”

合作动态 | PURVAR 日前,汉旸科技与璞华科技达成战略合作,正式引入璞华易研PLMAI智能研发平台。双方基于行业技术需求与数字化转型目标,快速完成研发全流程数字化管理框架的顶层设计与蓝图规划,为技术迭代与产品创新奠定坚实的数…

MongoDB数据库学习

学习链接:https://www.runoob.com/mongodb/mongodb-tutorial.html 图解MongoDB数据库学习路线指南 MongoDB初级 1. 基本概念学习 一定要记住的概念: 文档是一组键值(key-value)对(即 BSON)。 集合就是 MongoDB 文档组,类似于 RDBMS &…

软考 系统架构设计师系列知识点之杂项集萃(79)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(78) 第141题 软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括()等方法;后者采用人工和计算机…

分布式拜占庭容错算法——PBFT算法深度解析

Java 实现PBFT算法深度解析 一、PBFT核心流程 #mermaid-svg-3DQWQzd1C7QGWkMv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3DQWQzd1C7QGWkMv .error-icon{fill:#552222;}#mermaid-svg-3DQWQzd1C7QGWkMv .error-…

【LUT技术专题】图像自适应3DLUT代码讲解

本文是对图像自适应3DLUT技术的代码解读,原文解读请看图像自适应3DLUT文章讲解 1、原文概要 结合3D LUT和CNN,使用成对和非成对的数据集进行训练,训练后能够完成自动的图像增强,同时还可以做到极低的资源消耗。下图为整个模型的…

Docker 在 AI 开发中的实践:GPU 支持与深度学习环境的容器化

人工智能(AI)和机器学习(ML),特别是深度学习,正以前所未有的速度发展。然而,AI 模型的开发和部署并非易事。开发者常常面临复杂的依赖管理(如 Python 版本、TensorFlow/PyTorch 版本、CUDA、cuDNN)、异构硬件(CPU 和 GPU)支持以及环境复现困难等痛点。这些挑战严重阻…

COMSOL多边形骨料堆积混凝土水化热传热模拟

混凝土水化热温降研究对保障结构安全与耐久性至关重要,温升后温差易引发温度应力,导致裂缝。本案例介绍在COMSOL内建立多边形骨料堆积混凝土细观模型,并对水化热产生后的传热及温度变化进行仿真模拟。 骨料堆积混凝土细观模型采用CAD多边形…

vue入门环境搭建及demo运行

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 vue简介:第一步:安装node.jsnode简介第二步:安装vue.js第三步:安装vue-cli工具第四步 :安装webpack第五步…

OpenCV CUDA模块图像处理------图像融合函数blendLinear()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数执行 线性融合(加权平均) 两个图像 img1 和 img2,使用对应的权重图 weights1 和 weights2。 融合公式…

“packageManager“: “pnpm@9.6.0“ 配置如何正确启动项目?

今天在学习开源项目的时候,在安装依赖时遇到了一个报错 yarn add pnpm9.6.0 error This projects package.json defines "packageManager": "yarnpnpm9.6.0". However the current global version of Yarn is 1.22.22.Presence of the "…

物联网数据归档之数据存储方案选择分析

在上一篇文章中《物联网数据归档方案选择分析》中凯哥分析了归档设计的两种方案,并对两种方案进行了对比。这篇文章咱们就来分析分析,归档后数据应该存储在哪里?及存储方案对比。 这里就选择常用的mysql及taos数据库来存储归档后的数据吧。 你在处理设备归档表存储方案时对…

八.MySQL复合查询

一.基本查询回顾 分组统计 group by 函数作用示例语句说明count(*)统计记录条数select deptno, count(*) from emp group by deptno;每个部门有多少人?sum(sal)某字段求和select deptno, sum(sal) from emp group by deptno;每个部门总工资avg(sal)求平均值select…

智能补丁管理:终结安全漏洞,开启自动化运维新时代

漏洞风暴:数字化时代的隐形战场 全球安全态势的范式转移 近年来,终端层漏洞已成为企业安全防线的最大突破口。根据美国国家标准与技术研究院(NIST)的监测数据,2023年新披露的高危漏洞数量同比增长62%,其中…

大模型 提示模板 设计

大模型 提示模板 设计 论文介绍:LangGPT - 从编程语言视角重构大语言模型结构化可复用提示设计框架 核心问题: 现有提示工程缺乏结构化设计模板,依赖经验优化,学习成本高且复用性低,难以支持提示的迭代更新。 创新思路: 受编程语言的结构化和可复用性启发,提出LangGP…

不连网也能跑大模型?

一、这是个什么 App? 你有没有想过,不用连网,你的手机也能像 ChatGPT 那样生成文字、识别图片、甚至回答复杂问题?Google 最近悄悄发布了一个实验性 Android 应用——AI Edge Gallery,就是为此而生的。 这个应用不在…

基于开源AI大模型与AI智能名片的S2B2C商城小程序源码优化:企业成本管理与获客留存的新范式

摘要:本文以企业成本管理的两大核心——外部成本与内部成本为切入点,结合开源AI大模型、AI智能名片及S2B2C商城小程序源码技术,构建了企业数字化转型的“技术-成本-运营”三维模型。研究结果表明,通过AI智能名片实现获客留存效率提…

【AFW+GRU(CNN+RNN)】Deepfakes Detection with Automatic Face Weighting

文章目录 Deepfakes Detection with Automatic Face Weighting背景pointsDeepfake检测挑战数据集方法人脸检测面部特征提取自动人脸加权门控循环单元训练流程提升网络测试时间增强实验结果Deepfakes Detection with Automatic Face Weighting 会议/期刊:CVPRW 2020 作者: …

【Zephyr 系列 6】使用 Zephyr + BLE 打造蓝牙广播与连接系统(STEVAL-IDB011V1 实战)

🧠关键词:Zephyr、BLE、广播、连接、GATT、低功耗蓝牙、STEVAL-IDB011V1 📌适合人群:希望基于 Zephyr 实现 BLE 通信的嵌入式工程师、蓝牙产品开发人员 🧭 前言:为什么选择 Zephyr 开发 BLE? 在传统 BLE 开发中,我们大多依赖于厂商 SDK(如 Nordic SDK、BlueNRG SD…