当前位置: 首页 > article >正文

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

目录

一、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.lryc.cn/news/2399094.html

相关文章:

  • 攻防世界-unseping
  • 微软推出 Bing Video Creator,免费助力用户轻松创作 AI 视频
  • (13)java+ selenium->元素定位大法之By_partial_link_text
  • Xget 正式发布:您的高性能、安全下载加速工具!
  • [yolov11改进系列]基于yolov11使用FasterNet替换backbone用于轻量化网络的python源码+训练源码
  • 一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化
  • 企业级安全实践:SSL/TLS 加密与权限管理(一)
  • 2025——》VSCode Windows 最新安装指南/VSCode安装完成后如何验证是否成功?2025最新VSCode安装配置全攻略
  • RabbitMQ如何保证消息可靠性
  • 【MATLAB代码】制导——三点法,二维平面下的例程|运动目标制导,附完整源代码
  • Spring Security用户管理机制详解
  • 如何爬取google应用商店的应用分类呢?
  • SQL Relational Algebra(数据库关系代数)
  • 如何安装huaweicloud-sdk-core-3.1.142.jar到本地仓库?
  • Electron桌面应用下,在拍照、展示pdf等模块时,容易导致应用白屏
  • 智能工业时代:工业场景下的 AI 大模型体系架构与应用探索
  • 【git stash切换】
  • React 18 生命周期详解与并发模式下的变化
  • 易语言使用OCR
  • C++和C#界面开发方式的全面对比
  • 监控 100 台服务器磁盘内存CPU利用率
  • Linux远程连接主机——ssh命令详解
  • 算法-集合的使用
  • 性能优化 - 理论篇:CPU、内存、I/O诊断手段
  • 算法:二分查找
  • Spring Boot3.4.1 集成 mybatis plus
  • Ubuntu 22.04 上安装 PostgreSQL(使用官方 APT 源)
  • Linux随记(十八)
  • Windows MongoDB C++驱动安装
  • MS1023/MS1224——10MHz 到 80MHz、10:1 LVDS 并串转换器(串化器)/串并转换器(解串器)