0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

StreamlitでOpenAI APIキーを安全に設定する方法

Posted at

はじめに

Streamlitは、インタラクティブなウェブアプリケーションを簡単に作成できる便利なフレームワークです。APIを使ったプロジェクトでシークレットキー(APIキーなど)を使用することが多いですが、GitHubにコードを公開する際、シークレットキーを誤ってハードコーディングしてしまうと非常に危険です。
この記事では、OpenAIのAPIキーをStreamlitで設定し、GitHubのパブリックリポジトリでも安全にプロジェクトを管理する方法を解説します。

Step 1: OpenAIのAPIキーを取得

まず、OpenAIのサイトからAPIキーを取得します。OpenAIのAPIを利用するにはアカウントを作成し、APIキーを生成する必要があります。

  1. OpenAIにサインアップまたはログイン
  2. APIキーのページにアクセスし、新しいキーを生成
  3. 生成されたAPIキーをコピー

Step 2: .streamlit/secrets.toml ファイルでAPIキーを管理

Streamlitでは、.streamlit/secrets.toml というファイルを使用して、シークレットキーを管理することが推奨されています。このファイルはGitHubに公開せず、ローカル環境やデプロイ環境でのみ利用します。

.streamlit/secrets.toml ファイルの作成

プロジェクトのルートディレクトリに .streamlit フォルダを作成し、その中に secrets.toml ファイルを作成します。

mkdir .streamlit
touch .streamlit/secrets.toml

次に、このファイルにOpenAIのAPIキーを設定します。

.streamlit/secrets.toml
[openai]
api_key = "your-openai-api-key-here"

この secrets.tomlファイルには他のシークレット情報も管理できます。

Step 3: st.secrets を使ってAPIキーを取得

Streamlitでは、st.secrets オブジェクトを使って .toml ファイルからシークレットキーを読み込むことができます。
例えば、以下のようにOpenAI APIキーを安全に読み込むことが可能です。

import openai
import streamlit as st

# secrets.tomlファイルからAPIキーを取得
api_key = st.secrets["openai"]["api_key"]

# OpenAI APIに接続
openai.api_key = api_key

st.title("OpenAI APIを使ったStreamlitアプリ")
prompt = st.text_input("ChatGPTに質問を入力してください:")

if prompt:
    response = openai.Completion.create(
      engine="text-davinci-003",
      prompt=prompt,
      max_tokens=50
    )
    st.write(response.choices[0].text.strip())

このようにすることで、APIキーがコード中にハードコーディングされることなく、安全に利用できます。

Step 4: .gitignoresecrets.toml をGitHubに公開しないように設定

次に、.streamlit/secrets.toml ファイルが誤ってGitHubにアップロードされないように、.gitignore ファイルで除外します。

.gitignore ファイルに以下の行を追加します。

.gitignore
.streamlit/secrets.toml

この設定により、Gitに.streamlit/secrets.toml が追加されるのを防ぎます。

Step 5: Streamlit Cloudにデプロイする際のシークレットキー設定

Streamlit Cloud(または他のクラウドサービス)にアプリをデプロイする際、.streamlit/secrets.toml はアップロードされませんが、クラウド環境でシークレットを安全に設定する方法があります。

Streamlit Cloudでのシークレット設定方法

  1. Streamlit Cloudのダッシュボードにアクセス
  2. デプロイしたアプリの「Secrets」セクションに移動
  3. secrets.toml の内容と同様に、シークレットキーを設定します。

例えば、以下のようにOpenAIのAPIキーを登録します。

[openai]
api_key = "your-openai-api-key-here"

これで、デプロイ環境でもローカル環境と同様に st.secrets["openai"]["api_key"] を使ってAPIキーを取得できます。

まとめ

GitHubのパブリックリポジトリでプロジェクトを公開しつつ、シークレットキーを安全に管理するためには、secrets.toml ファイルや環境変数を活用することが重要です。

  1. .streamlit/secrets.tomlファイルでシークレットキーを管理
  2. .gitignore.streamlit/secrets.toml を追加し、公開しないように設定
  3. Streamlit Cloudなどにデプロイする際は、クラウドのシークレット管理機能を使用

これにより、シークレットキーを安全に管理しながら、StreamlitアプリでAPIを活用できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?