网站做轮播图的意义,网站开发笔记本,如何建设好高校网站,品牌网站建设报价单文章目录 前言聊天应用程序组件和技术LangChain Python框架开放人工智能模型前端 Streamlit UI使用 Docker 进行部署Docker 优化以实现轻量级和快速构建Docker-compose.yaml 文件基础设施Streamlit 公共云谷歌应用引擎使用 Google Cloud Run 部署应用1.启动服务2. 创建角色并将… 文章目录 前言聊天应用程序组件和技术LangChain Python框架开放人工智能模型前端 Streamlit UI使用 Docker 进行部署Docker 优化以实现轻量级和快速构建Docker-compose.yaml 文件基础设施Streamlit 公共云谷歌应用引擎使用 Google Cloud Run 部署应用1.启动服务2. 创建角色并将其添加到服务帐户3.生成并推送Docker镜像 结论小结 博客主页小智_x0___0x_ 欢迎关注点赞收藏✍️留言 系列专栏小智带你闲聊 代码仓库小智的代码仓库 前言
本文强调了 Docker 为 AI/ML 项目带来的价值 - 部署的速度和一致性、一次构建并随处运行的能力以及 Docker Desktop 中提供的可加速整体开发工作流程的省时工具。
在本文中我们将探索使用 LangChain、OpenAI API 和 Streamlit 框架创建聊天应用程序的过程。我们将演示如何使用 Docker 和Docker Compose在内部或云服务器上轻松部署应用程序。 我们在 Streamlit 公共云和 Google App Engine 上创建并部署了一个演示应用程序图 1以便进行快速预览。
图 1聊天应用程序截图LangChain 演示。 聊天应用程序组件和技术
我们将简要描述用于创建模板应用程序的应用程序组件和框架。
LangChain Python框架
LangChain框架使开发人员能够使用强大的大型语言模型LLMs创建应用程序。我们的演示聊天应用程序是基于Python框架构建的其中OpenAI模型是默认选项。但是用户可以灵活选择他们喜欢的任何LLM。
LongChain框架轻松管理输入提示并在LLMs API生成的响应之间建立连接。
开放人工智能模型
出于演示目的我们使用 OpenAI API 在提交提示时生成响应。
前端 Streamlit UI
Streamlit是一种轻量级且更快的构建和共享数据应用程序的方式。开发了一个带有 Streamlit 框架的简单 UI 来与聊天应用程序交互。
使用 Docker 进行部署
Docker可用于开发应用程序并将其部署到任何服务器而无需担心依赖项和环境。在演示应用程序开发完成并在本地运行良好后我们添加了 Docker 支持。
FROM python:3.10-slim-bullseyeENV HOST0.0.0.0ENV LISTEN_PORT 8080EXPOSE 8080RUN apt-get update apt-get install -y gitCOPY ./requirements.txt /app/requirements.txtRUN pip install --no-cache-dir --upgrade -r /app/requirements.txtWORKDIR app/COPY ./demo_app /app/demo_app
COPY ./.streamlit /app/.streamlitCMD [streamlit, run, demo_app/main.py, --server.port, 8080]前面的代码显示了用于生成演示应用程序的 Docker 映像的 Dockerfile 的内容。为了构建图像我们使用
docker build -t langchain-chat-app .Docker 优化以实现轻量级和快速构建
在为企业应用程序部署应用程序时我们必须注意所利用的资源以及执行/部署生命周期计算。
我们还解决了如何优化 Docker 构建过程以解决镜像大小问题并在每次源代码更改迭代时快速构建的问题。
# 用于构建虚拟环境的构建器镜像
FROM python:3.11-buster as builderRUN apt-get update apt-get install -y gitRUN pip install poetry1.4.2ENV POETRY_NO_INTERACTION1 \
POETRY_VIRTUALENVS_IN_PROJECT1 \
POETRY_VIRTUALENVS_CREATE1 \
POETRY_CACHE_DIR/tmp/poetry_cacheENV HOST0.0.0.0
ENV LISTEN_PORT 8080
EXPOSE 8080WORKDIR /app#COPY pyproject.toml ./app/pyproject.toml
#COPY poetry.lock ./app/poetry.lock
COPY pyproject.toml poetry.lock ./RUN poetry install --without dev --no-root rm -rf $POETRY_CACHE_DIR# 用于仅运行提供的代码及其虚拟环境的运行时镜像
FROM python:3.11-slim-buster as runtimeENV VIRTUAL_ENV/app/.venv \
PATH/app/.venv/bin:$PATHCOPY --frombuilder ${VIRTUAL_ENV} ${VIRTUAL_ENV}COPY ./demo_app ./demo_app
COPY ./.streamlit ./.streamlitCMD [streamlit, run, demo_app/main.py, --server.port, 8080]在此 Dockerfile 中我们有两个运行时映像标签。在第一个中我们创建一个 Poetry 环境来形成一个虚拟环境。尽管应用程序在第二运行时映像中运行但应用程序是在激活第一步中创建的虚拟环境后运行的。
接下来我们将使用 构建 Docker 映像DOCKER_BUILDKIT它提供了现代工具来快速安全地创建 Docker 映像。
DOCKER_BUILDKIT1 docker build --targetruntime . -t langchain-chat-app:latestDocker-compose.yaml 文件
为了运行该应用程序我们还包含docker-compose.yml以下内容
version: 3
services:
langchain-chat-app:
image: langchain-chat-app:latest
build: ./app
command: streamlit run demo_app/main.py --server.port 8080
volumes:
- ./demo_app/:/app/demo_app
ports:
- 8080:8080要在本地服务器上运行该应用程序请使用以下命令
docker-compose up基础设施
借助对 Docker 的支持可以按照基本指南将该应用程序部署到任何云基础设施。我们在以下基础设施上部署了该应用程序
Streamlit 公共云
使用 GitHub 帐户和存储库在其公共云上部署 Streamlit 应用程序
谷歌应用引擎
我们尝试使用 Docker 在 Google App Engine 上部署应用程序。该存储库包含一个app.yaml用于部署以下内容的配置文件
# 使用Dockerfile
runtime: custom
env: flex
# 运行此示例会产生 App Engine 弹性环境的费用。
# 下面的设置是为了在测试期间降低成本不适用于生产环境。manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10为了在 Google App Engine 上部署聊天应用程序我们在安装 gcloud Python SDK 后使用了以下命令
gcloud app create --project[YOUR_PROJECT_ID]
gcloud config set project [YOUR_PROJECT_ID]
gcloud app deploy app.yaml可以通过以下方式访问部署在 Google App Engine 上的示例应用程序:
使用 Google Cloud Run 部署应用
我们还可以使用GCP的Cloud Run服务将应用程序部署在Google Cloud上。使用 Cloud Run 部署应用程序比 Google App Engine 更快。
以下是采用该方法的相关特点
将应用程序打包在容器中。将容器推送到工件注册表。从推送的容器部署服务。
让我们逐步了解使用 Google Cloud Run 部署应用程序所遵循的步骤。我们假设已经在 Google Cloud 上创建了一个项目。
1.启动服务
可以使用以下方式启用服务gcloud sdk
gcloud services enable cloudbuild.googleapis.com
gcloud services enable run.googleapis.com2. 创建角色并将其添加到服务帐户
使用以下命令集我们创建一个服务帐户并设置适当的权限。修改服务SERVICE_ACCOUNT and PROJECT_ID
gcloud iam service-accounts create langchain-app-cr \
--display-namelangchain-app-crgcloud projects add-iam-policy-binding langchain-chat \
--memberserviceAccount:langchain-app-crlangchain-chat.iam.gserviceaccount.com \
--roleroles/run.invokergcloud projects add-iam-policy-binding langchain-chat \
--memberserviceAccount:langchain-app-crlangchain-chat.iam.gserviceaccount.com \
--roleroles/serviceusage.serviceUsageConsumergcloud projects add-iam-policy-binding langchain-chat \
--memberserviceAccount:langchain-app-crlangchain-chat.iam.gserviceaccount.com \
--roleroles/run.admin3.生成并推送Docker镜像
使用以下命令我们可以生成镜像并将其推送到ArtifactsRegistry。但是如果这是第一次我们需要创建具有 Docker 占位符权限的存储库
DOCKER_BUILDKIT1 docker build --targetruntime . -t australia-southeast1-docker.pkg.dev/langchain-chat/app/langchain-chat-app:latest
docker push australia-southeast1-docker.pkg.dev/langchain-chat/app/langchain-chat-app:latest以下是生成工件存储库和分配权限所需的命令
gcloud auth configure-docker australia-southeast1-docker.pkg.devgcloud artifacts repositories create app \
--repository-formatdocker \
--locationaustralia-southeast1 \
--descriptionA Langachain Streamlit App \
--async现在将部署该应用程序。
结论
本文深入探讨了开发和部署由 LangChain、OpenAI API 和 Streamlit 提供支持的聊天应用程序所需的各种工具和技术。在此过程中还利用了Docker框架。
该应用程序演示可在 Streamlit 公共云和 Google App Engine 上使用。由于 Docker 支持开发人员可以将其部署在他们喜欢的任何云平台上。
小结
今天我们认识了使用 Docker 和 Streamlit 构建和部署 LangChain 支持的聊天应用程序相信大家看完有一定的收获。 种一棵树的最好时间是十年前其次是现在 把握好当下合理利用时间努力奋斗相信大家一定会实现自己的目标加油创作不易辛苦各位小伙伴们动动小手三连一波~~~本文中也有不足之处欢迎各位随时私信点评指正 This post was originally published on Level Up Coding and is reprinted with permission.