亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

使用LangServe輕松將LangChain應用部署為REST API

在整个 LangChain 系列中,我们探讨了 LangChain 的强大且灵活,从在 Google Kubernetes Engine (GKE) 上部署带有 Gemini 的 LangChain 到 运行开放模型如 Gemma。现在,让我们介绍一个有趣的补充,帮助我们将由 LangChain 支持的应用程序部署为 REST API:LangServe

什么是LangServe?

LangServe 是一个帮助简化 LangChain 应用程序作为 REST API 部署的工具。你无需手动处理 LLM 部署中的 REST 逻辑(如暴露端点或提供 API 文档),LangServe 可以自动处理这些工作。它由 LangChain 的同一团队构建,确保无缝集成并提供友好的开发者体验。

你为什么用LangServe?

在本系列的前几部分中,我们学习了如何部署一个由LangChain驱动的应用程序以及如何与它进行互动。还不够吗?那么,LangServe则提供了一些关键优势:

  • 快速部署: LangServe 大幅减少了将你的 LangChain 应用程序暴露为 API 所需的模板代码量。
  • 自动创建 API 文档: LangServe 自动为你的部署链创建交互式 API 文档,使他人(或者你未来的自己,如果你跟我一样)更容易理解和使用你的服务。
  • 内置玩乐区: LangServe 提供了一个简单的网络玩乐区,可以直接从你的浏览器与部署的 LangChain 应用程序进行交互。这对于测试和调试非常方便。
  • 标准化接口: LangServe 帮助你为 LangChain 应用程序创建一致且结构化的 API,使其更易于与其他服务和前端应用程序集成。
  • 简化客户端交互: LangServe 随带一个相应的客户端库,简化了从其他 Python 或 JavaScript 应用程序调用你的部署链的步骤。
LangServe是怎么运作的?

LangServe 利用了 FastAPI 和 pydantic 的强大功能,为您的 LangChain 应用程序构建一个健壮且高效的服务层。它实质上将您的 LangChain 链或代理封装起来,使其变成 FastAPI 的端点。(音译为:郎格赛夫)

我们来看一个例子,看看这一切是如何结合在一起的。

创建一个LangServe应用(注:LangServe是一个特定的应用程序)

比如说,你有一个使用Gemini的LangChain应用。

    从 langchain_google_genai 导入 ChatGoogleGenerativeAI 作为 ChatGoogleGenerativeAI
    从 langchain_core.prompts 导入 ChatPromptTemplate 作为 ChatPromptTemplate

    llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash")

    prompt = ChatPromptTemplate.from_messages(
        [
            (
                "system",
                "你是一个乐于助人的助手,会回答有关给定主题的问题。",
            ),
            ("human", "{input}"),
        ]
    )

    chain = prompt | llm

点击这里全屏开启 / 点击这里退出全屏

这里是如何将它改编为适用于LangServe的例子,你可以把它保存为app.py

    从 langchain_google_genai 导入 ChatGoogleGenerativeAI 作为 ChatGoogleGenerativeAI
    从 langchain_core.prompts 导入 ChatPromptTemplate
    从 langchain_core.output_parsers 导入 StrOutputParser
    从 langserve 导入 add_routes
    导入 uvicorn
    从 fastapi 导入 FastAPI

    app = FastAPI(
      标题="LangChain Server",
      版本="1.0",
      description="一个简单的 API 服务器,使用 LangChain 的 Runnable 接口",
    )

    llm = ChatGoogleGenerativeAI(模型="gemini-2.0-flash")

    prompt = ChatPromptTemplate.from_messages(
        [
            (
                "system",
                "你是一个乐于助人的助手,会回答关于给定主题的相关问题。",
            ),
            ("human", "{input}"),
        ]
    )

    chain = prompt | llm | StrOutputParser()

    add_routes(
        app,
        chain,
        path="/my-chain",
    )

    如果 __name__ == '__main__':
        uvicorn.run(app, host="localhost", port=8000)

进入全屏,退出全屏

然后,创建一个列出我们依赖项的 requirements.txt 文件。

langserve
langchain-google-genai
uvicorn
fastapi
sse_starlette

# 注意:这些是技术库和代码名称,不需要翻译。

进入全屏,退出全屏

就这样!通过这些简单的更改,你的链现在就可以开始提供服务了。你可以使用如下命令安装依赖并运行这个应用。记得把 your_google_api_key 替换成你的 Gemini API 密钥

    export GOOGLE_API_KEY="your_google_api_key" # 导出谷歌API密钥
    pip install -r requirements.txt # 使用pip安装所需的依赖项
    python app.py # 运行主程序

先导出谷歌API密钥,然后使用pip安装所需的依赖项,最后运行主程序。

全屏模式下进入,退出全屏模式

这会启动一个服务器,默认情况下使用端口8000。

玩转您的 LangServe 应用程序

一旦你的服务器运行起来,你可以用几种方式与它交互:

  • 通过自动生成的API文档页面: 在浏览器中打开 http://localhost:8000/docs 查看交互式API文档界面。
  • 使用内置的试玩区: 在浏览器中打开 http://localhost:8000/my-chain/playground/ 在简单的网页界面中直接测试你的链。
  • 使用LangServe客户端库: 您可以使用其他Python或JavaScript应用程序编程地与您的API进行交互。下面是一个简单的Python示例:
from langserve import RemoteRunnable

remote_chain = RemoteRunnable("http://localhost:8000/my-chain")
# 从远程服务调用链并获取响应
response = remote_chain.invoke({"input": "告诉我关于Google Cloud Platform的详情"})
print(response)

全屏切换

将我们的应用容器化

你可以轻松地将你的LangServe应用打包成容器,像我们之前那样部署到GKE这样的平台上。

首先,创建一个 Dockerfile 来定义如何制作我们的镜像文件。

    # 使用官方的 Python 运行环境作为基础镜像
    FROM python:3-slim

    # 设置工作目录为 /app
    WORKDIR /app

    # 将当前目录的所有内容复制到 /app
    COPY . /app

    # 安装 requirements.txt 文件中列出的所有依赖包
    RUN pip install -r requirements.txt

    # 公开容器中的 80 端口
    EXPOSE 80

    # 启动时运行 app.py
    CMD [ "python", "app.py" ]

进入全屏幕模式,退出全屏幕模式

最后,构建容器镜像文件并将其推送至 Artifact Registry。记得替换 PROJECT_ID 为你的 Google Cloud 项目 ID。

# 使用 Google Cloud 进行登录
gcloud auth login

# 创建仓库(repositories)
gcloud artifacts repositories create images \
  --repository-format=docker \
  --location=us

# 配置对所需 Docker 仓库的身份验证
gcloud auth configure-docker us-docker.pkg.dev/PROJECT_ID/images

# 构建 Docker 镜像
docker build -t us-docker.pkg.dev/PROJECT_ID/images/my-langchain-app:v1 .

# 推送 Docker 镜像
docker push us-docker.pkg.dev/PROJECT_ID/images/my-langchain-app:v1

进入全屏,退出全屏

几秒钟后,你的容器镜像不应该存在于你的Artifact Registry(制品仓库)里。

现在我们来把容器映像部署到我们的 GKE 集群。你可以通过 Google Cloud Console 或使用 gcloud 命令行工具创建 GKE 集群,记得替换 PROJECT_ID,

使用gcloud命令在us-central1区域自动创建一个名为langchain-cluster的容器集群,命令为:

    gcloud container 集群自动创建 langchain-cluster \
      --project=PROJECT_ID \
      --region=us-central1

切换到全屏
退出全屏

一旦你的集群启动并运行,创建一个包含你的 Kubernetes 部署和服务的 YAML 文件。我们将其命名为 deployment.yaml,并将 PROJECT_IDYOUR_GOOGLE_API_KEY 替换成你的 Gemini API 密钥

apiVersion: apps/v1
kind: Deployment
metadata:
  name: langchain-deployment
spec:
  replicas: 3 # 根据需要调整
  selector: # 添加选择器
    matchLabels:
      app: langchain-app
  template:
    metadata:
      labels:
        app: langchain-app
    spec:
      containers:
      - name: langchain-container
        image: us-docker.pkg.dev/PROJECT_ID/images/my-langchain-app:v1
        ports:
        - containerPort: 80
        env:
        - name: GOOGLE_API_KEY
          value: YOUR_GOOGLE_API_KEY
---
apiVersion: v1
kind: Service
metadata:
  name: langchain-service
spec:
  selector:
    app: langchain-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer # 外部暴露

切换到全屏模式 退出全屏

将这个 manifest 应用于你的集群:

# 获取集群环境
gcloud container clusters get-credentials langchain-cluster --region us-central1

# 部署配置文件
kubectl apply -f deployment.yaml

全屏模式,进或出

这会创建一个部署,其中包括你 LangChain 应用程序的三个实例,并通过负载均衡器对外提供服务。你可以根据需要的负载来调整副本的数量。

结尾

LangServe 桥接了开发与生产的鸿沟,让分享您的 AI 应用程序变得比以往更简单。通过简化且标准化的方式将您的链作为 API 提供,LangServe 让您的 LangChain 项目变得前所未有的可访问和易用。不论是打造内部工具还是面向公众的应用,LangServe 都能简化流程,让您更专注于使用 LangChain 创造有影响力的应用。

下一步是:

  • 深入阅读 LangServe 文档,了解更多关于其功能和能力的内容。
  • 试试使用我们提到的容器化技术将 LangServe 应用部署到 GKE。
  • 探索 LangServe 客户端库,看看如何轻松地将部署的应用链与其他应用集成。

通过这篇帖子,我们结束了在LangChain世界的探索之旅,从其核心概念和思想到使用GKE和开源模型的高级部署方案,再到现在利用LangServe提供的高效服务。希望这个系列能帮助你构建和部署你自己的出色AI应用程序!

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消