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

【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.xdnf.cn/news/11436.html

相关文章:

  • bcos简介及自序
  • Java语言常用的算法
  • 有哪些防爬虫的方法
  • Nexus下载与安装详解
  • c4d导入大模型以及给建筑上贴图笔记
  • CH9101芯片应用—硬件设计指南
  • 六个免费网站统计平台工具对比推荐 你的网站统计用哪个
  • 二代测序的原理和简介
  • 小程序测试:内容与方法剖析!
  • 『一篇就够了系列』Android App优化知识点全收
  • ssm基于安卓的健身appcgua5【独家源码】计算机毕业设计问题的解决方案与方法
  • location.hash详解
  • 【迅搜02】究竟什么是搜索引擎?正式介绍XunSearch
  • 什么是网络延时
  • 金仓数据库KingbaseES安全指南--6.5. LDAP身份验证
  • 权限控制方案
  • [面试]-- 65个最常见的面试问题与技巧性答复(面试技巧和注意事项)
  • 电脑系统提示找不到msimg32.dll如何处理?
  • 三极管的工作原理详解,图文+案例,立马教你搞懂
  • 【论文笔记】HeCo
  • Blash数集
  • 用代码打开网页
  • Beyond Compare 4 注册码,尝试可用
  • afxmessagebox和messagebox
  • 皮亚诺曲线
  • Android Studio入门教程(新手必看)
  • 学习OpenCV2——MeanShift之目标跟踪
  • 常用CSS样式大全(超全面)
  • php探针代码怎么写
  • 女性英文名對照及涵意大全