AIチャットアプリをデプロイしよう | SkillhubAI(スキルハブエーアイ)

AIチャットアプリをデプロイしよう

このチャプターの目次

今までローカル環境で開発していたアプリケーションをWEBにデプロイしてみましょう。

この章で学ぶこと

  • Streamlit Community Cloud とは何かを知る
  • Streamlit Community Cloud でのアプリケーションのデプロイ方法を知る
  • 最新のOpenAI API (v1.99+) とLangChain (v0.3+) の使用方法を知る
  • Streamlit の設定ファイルを用いたカスタマイズ方法を知る

概要

この章ではStreamlit Community Cloud (以下、Streamlit Cloudと表記) というStreamlit公式のクラウドサービスを利用します。Streamlit Cloudは非常にシンプルなサービス設計となっており、インフラの知識が全くなくてもアプリケーションをWEBに簡単にデプロイすることができます。

個人が管理している全てのPrivateレポジトリのGithub閲覧権限を要求されるため、少し気持ち悪さはあります。過大なアクセス負荷を捌くのも無理だと思うので、業務で本格的に利用する必要があるならStreamlit in SnowflakeやGoogle CloudのCloudRunなどへのデプロイを検討すべきかと思います。

本レッスンはあくまで「初学者がつまづかないようにデプロイすることを優先してStreamlit Cloudを利用している」ということにご留意いただければ幸いです。

それでは作業を進めていきましょう💪

Streamlit Cloud とは?

Streamlit Cloudは、Streamlitアプリケーションを簡単にWEB上で公開し、共有できるサービスです。Streamlit Cloudに登録し、コードをGitHubレポジトリにプッシュするだけで、アプリケーションをデプロイすることができます。 https://streamlit.io/cloud

さらに、GitHub上のコードが更新されるたびに自動的に更新することも可能なため何度もデプロイ作業を行う必要がありません。また、簡易的ではあるものの、公開範囲の制限が可能であるため、セキュリティにも配慮してアプリケーションをデプロイすることも可能です。以下のように自分のアプリの権限を変更することでアクセスを制限できます。OpenAIのAPIなどを使用するとチャットをするたびに料金がかかるので必ずアクセスを制限しておくことをお勧めまします。

file

しかし、Streamlit Cloudは制約もあります。例えば、無料プランではリソース(CPU、メモリ、ディスクスペース)の使用量に制限があります。また、データプライバシーやセキュリティの要件が厳しいアプリケーションの場合、公開クラウドサービスへのデプロイが許可されていない場合があります。

これらの制約に縛られないためには、他のクラウドサービス(例:AWS、Google Cloud、Azure、Snowflakeなど)を使用して、自分でStreamlitアプリケーションをホストすることが必要かもしれません。

全体のプロセスについて

アプリケーションをStreamlit Cloudにデプロイする全体の流れをまず列挙しておきます。

  • Streamlit Cloud への登録
  • アプリケーションのコードと依存関係をGitHubレポジトリにPushする
  • 必要に応じて設定ファイルを修正してアプリの設定をカスタマイズする
  • Streamlit Cloudを使用して、直接GitHubレポジトリからアプリをデプロイします。
  • アプリの起動をしばし待つ
  • アプリの起動が確認できれば、共有用URLを利用してアプリを共有しましょう🤗
  • 必要に応じてこのURLはカスタマイズすることも可能です

まずは Streamlit Cloud へ登録しよう

Streamlitは非常にドキュメントが充実しており、Streamlit Cloudの登録方法のページも非常にわかりやすいです。基本的にはこのヘルプページをご覧いただきながら進めると良いかと思いますが、以下に内容を簡単に紹介しておきます。

1. Streamlit Cloudにサインアップする

まずはStreamlit Cloudのホームページで無料でサインアップします。

file

2. share.streamlit.ioにログインする

サインアップが完了したら、share.streamlit.ioにログインします。ログイン方法はGoogle、GitHub、またはメールのいずれかを使用できます。開発者の場合、最初にGitHubでログインすることをおすすめします。

3. GitHubアカウントを接続する

次に、StreamlitがあなたのGitHubアカウントに接続できるようにします。これにより、Streamlit Cloudのワークスペースが直接あなたのレポジトリのアプリファイルからアプリを起動できるようになります。

また、アプリファイルの更新をチェックして、アプリが自動的に更新されるようにもなります。このアクセスを与えるためには、2つの異なる認証画面で「Authorize」をクリックします。

ここで要求される権限が強い(個人に属する全てのPrivateレポジトリへの閲覧権限を要求されます)ので、抵抗がある方は新しいGithubアカウントで試すのが良いかもしれません。

file

4. Streamlit Cloudのワークスペースを探索する

ログインが完了したら、あなたのワークスペースが表示されます。他の人のワークスペースにも参加している場合、ワークスペースにはすでにアプリが表示されているかもしれません。

Optional. チームの他の開発者を招待する

他の開発者を招待するには、まずGitHubレポジトリに招待し、一緒にアプリをコーディングできるようにします。その後、彼らにshare.streamlit.ioにログインするように依頼しましょう。Streamlit CloudはGitHubから開発者の権限を引き継ぐので、チームメイトがログインすると、自動的に共有ワークスペースが表示されます。

デプロイを進めよう

さて、Streamlit Cloudに登録ができれば、次はStreamlit Cloudでアプリを実際にデプロイしていきましょう。ここでは Deploy an app という公式ドキュメントを参照しながら進めていきます。

了解!短めに「デプロイ前のちょっとした変更」としてまとめるとこんな感じです👇


0.デプロイ前のちょい修正

Streamlit Cloud にデプロイする前に、OpenAI の APIキーを環境変数から読むように変更します。 修正するのはたった 2 か所だけです。


1. 冒頭で os をインポート

import os  # ← 追加
import streamlit as st
from openai import OpenAI


2. OpenAI クライアント初期化を変更

変更前

def get_openai_client():
    return OpenAI()

変更後

def get_openai_client():
    return OpenAI(api_key=os.environ["OPENAI_API_KEY"])


👉 修正は 2行だけ。これでどの環境でも安全に動作します。

1. GitHubにアプリを追加する

Streamlit CloudはあなたのGitHubレポジトリから直接アプリをデプロイします。そのため、アプリをデプロイする前に、アプリのコードに加えて、依存関係をGitHubレポジトリに定義しておく必要があります。

今まで作ったStreamlitアプリケーションのコードをご自身のレポジトリにプッシュしておきましょう。レポジトリは公開でもプライベートでもどちらでも構いません。

requirements.txtで依存関係設定

以下のようなrequirements.txtを作成して保存してください。それをGithubにPushします。

# requirements.txt

streamlit>=1.28.0
openai>=1.0.0
tiktoken>=0.5.0

GithubにPush

git add .
git commit -m "Create requirements.txt"
pit push origin main

Streamlit Cloudでは他に Pipfile(pipenv), environment.yml(conda), pyproject.toml(poetry)などでの依存関係の指定も可能です。また、外部の依存関係(つまり、Python環境外のLinux依存関係)を管理するために、packages.txtファイルを追加することもできます。

2. 設定ファイルを追加する(オプション)

レポジトリのルートディレクトリに.streamlitフォルダを作成し、その中にconfig.tomlファイルを追加することで、様々な設定を行うことが可能です。

2025年の新しい設定オプション:

[theme]
base="dark"

3. アプリをデプロイする

アプリをデプロイするには、ワークスペースで「New app」をクリックし、レポジトリ、ブランチ、ファイルパスを入力し、「Deploy」をクリックします。

file

本書ではOpenAI APIのAPI_KEYを環境変数としてアプリに渡す設計にしています。Streamlitはデプロイ時に Advanced setting という項目から環境変数を設定可能です。

file

file

環境変数の設定例: - OPENAI_API_KEY: あなたのOpenAI APIキー

5. デプロイ完了を確認する

無事にデプロイできればこれで完了です!おめでとうございます!

file

エラーが出てしまった際は、アプリ右下の3つの点をクリックしてデバッグ機能を表示してみてください。いろいろなヒントがでているます。 file

6. アプリを共有する

デプロイが完了すると、アプリはユニークなサブドメインURLを持つようになります:

https://[user name]-[repo name]-[branch name]-[app path]-[short hash].streamlit.app

おわり

以上が2025年最新仕様でのStreamlit Cloudでアプリをデプロイする方法です。

次の章以降で作るアプリに対してはデプロイの説明を行いませんが、ぜひ、作成したアプリをチームメンバーや知り合いの方と共有して使ってみてください🤗