使用PyCharm、Docker和Azure Container Apps进行聊天机器人的开发和构建

概述

我使用PyCharm和Docker进行开发,并将其部署到Azure上。

在PyCharm中,我们不仅使用Docker,还使用了docker-compose。但是奇怪的是,直接在Docker外部指定的端口无法正常工作,所以我们通过docker-compose来处理。当从Docker Desktop启动或部署应用程序时,一切都正常,所以我认为问题出在PyCharm的配置上。

源代码

请注意,本文未对源代码进行解释。请适时参考下面给出的源代码。

    https://github.com/hydrangeas/langchain-chainlit-test

建筑设计

image.png

目录结构

.
|-- .chainlit
|   `-- config.toml ..Chainlitの設定ファイル
|-- Dockerfile
|-- chainlit.md ..Chainlit上で表示するReadme
|-- docker-compose.yml
|-- main.py ..チャットボットフロントエンド用Pythonファイル(Chainlit)
|-- make_data.py ..ドキュメントデータベース作成用Pythonふぃある
|-- public
|   |-- favicon.ico ..Chainlitで変更するfavicon
|   |-- logo_dark.png ..ダークテーマ用ロゴ
|   `-- logo_light.png ..通常テーマ用ロゴ
|-- requirements.txt
`-- samples
    `-- 001018385.pdf ..チャットボット用のデータサンプル

在PyCharm中配置Docker。

请参考Dockerfile来配置Docker。基本上只要有创建.env文件,就可以直接复制本地文件并构建。此外,由于仅使用Docker无法启动,因此还需要构建docker-compose。

请事先创建.env文件。环境变量(API密钥)不是从Docker外部传递,而是作为文件传递给内部。

添加执行配置

image.png
image.png
image.png
image.png

Azure容器注册表

创建ACR资源

image.png
image.png

向ACR的推送

在将其推送到 ACR 之前,最好先将已构建的 Docker 镜像的标签与要推送的目的地相匹配,这样更简单。
示例命令:docker tag langchain-chainlit-test-web acrchainlit.azurecr.io/langchain-chainlit-test-web
az login
az acr login --name acrchainlit
docker push acrchainlit.azurecr.io/langchain-chainlit-test-web

Azure容器应用

ACA资源创建

image.png
image.png
image.png

成果

image.png

感想

有几个关键点是困扰的。

    1. 在Web Apps中,Python3.11附带的SQLite版本不足,无法启动Chainlit(无法解决)。

 

    1. 在Vercel中,甚至无法启动(原因不明)。

 

    1. 在其他免费环境中,由于Python库太大,经常无法部署。

 

    1. 在PyCharm中设置解释器时,无法完成设置(配置完成后立即结束)。

 

    如果在ACA设置时不设置目标端口,则无法访问(由于不熟悉,找起来花了很多时间)。

大约花了一个星期的时间,终于建立起了我所期望的环境。

广告
将在 10 秒后关闭
bannerAds