LangServe 使用指南与实例详解

LangServe 使用指南与实例详解

LangServe 是 LangChain 团队开发的官方部署工具,用于将 LangChain 链(Chains)和代理(Agents)快速部署为 REST API 服务。以下是完整的使用规则和实战示例:


一、核心使用规则

1. 环境准备

# 安装核心依赖
pip install "langserve[all]"  # 完整安装(包含Playground)
pip install "langserve[client]"  # 仅客户端
pip install "langserve[server]"  # 仅服务器

2. 项目结构规范

my_langserve_project/
├── app.py                  # 主应用文件
├── chain.py                # LangChain组件定义
├── requirements.txt
└── Dockerfile              # 容器化部署

3. 部署规则

部署方式 启动命令 适用场景
本地开发 uvicorn app:app --reload 开发调试
生产部署 gunicorn -w 4 -k uvicorn.workers.UvicornWorker app:app 正式环境
Docker容器 docker build -t langserve-app . && docker run -p 8030:8030 langserve-app 云原生部署
Serverless 适配AWS Lambda/Vercel 按需扩展

二、完整使用示例

1. 基础链部署(RAG问答系统)

# chain.py
from langchain.chains import RetrievalQA
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.llms import OpenAI

def create_retrieval_chain():
    # 1. 加载向量数据库
    embeddings = OpenAIEmbeddings()
    vectorstore = FAISS.load_local("docs_faiss_index", embeddings)
    
    # 2. 创建检索链
    return RetrievalQA.from_chain_type(
        llm=OpenAI(temperature=0),
        chain_type="stuff",
        retriever=vectorstore.as_retriever(),
        return_source_documents=True
    )

# app.py
from fastapi import FastAPI
from langserve import add_routes
from chain import create_retrieval_chain

app = FastAPI(
    title="文档问答API",
    version="1.0",
    description="基于LangServe的RAG服务"
)

# 添加链路由
add_routes(
    app,
    create_retrieval_chain(),
    path="/ask-doc"
)

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8030)

2. 多链集成(翻译+摘要)

# chain.py
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain.chains import SimpleSequentialChain
from langchain.llms import OpenAI

def create_translation_chain():
    # 翻译链
    translate_template = """将以下文本从{source_lang}翻译为{target_lang}:\n{text}"""
    translate_prompt = PromptTemplate.from_template(translate_template)
    translate_chain = LLMChain(
        llm=OpenAI(),
        prompt=translate_prompt,
        output_key="translated_text"
    )
    
    # 摘要链
    summarize_template = """为以下文本生成摘要:\n{translated_text}"""
    summarize_prompt = PromptTemplate.from_template(summarize_template)
    summarize_chain = LLMChain(
        llm=OpenAI(),
        prompt=summarize_prompt,
        output_key="summary"
    )
    
    # 组合链
    return SimpleSequentialChain(
        chains=[translate_chain, summarize_chain],
        input_variables=["text", "source_lang", "target_lang"],
        output_variables=["summary"]
    )

# app.py
from fastapi import FastAPI
from langserve import add_routes
from chain import create_translation_chain

app = FastAPI()
chain = create_translation_chain()

# 添加多个路由点
add_routes(app, chain, path="/translate-summarize")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赖同学啊

感谢上帝的投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值