最近、エンジニア職じゃないのに生成AIのデモアプリをChatGPTに聞きながら、Streamlitで作る、というのにハマっています。本当に楽しい、いい時代になりました!
ただ、StreamlitってCommunity Cloudで共有するのはとても簡単なんですが、プライベートなレポジトリからは1つしかアプリを作れなくて、2つやりたいんですよ、と思っても有料プランがない。デモアプリをそれぞれ違うお客さん向けに作っておきたいなー、というとき、いきなり不便です。
そしたら、Azure App Serviceで動かせますよ、という記事がQiitaにあって、初めてAzure App Serviceを使いましたが、その手順通りにしたら、かなり手軽にできました。
Streamlit を Azure App Serviceで動かす!
記事を書いてくださったマイクロソフトの方、ありがとうございます!
簡単なんではありますが、生成AIのAPIを使ったデモアプリを作るにあたり、私が個人的にどうやるのかわからず、はまったことがあるので、書いておきます。
APIキーはどこに置くの?
APIキーはどこに置くのでしょうか?色々な方法があるとは思いますが、上記の手順書で、"アプケーション設定にSCM_DO_BUILD_DURING_DEPLOYMENTというKEYを作り、値にtrueまたは1をセットします。最後に保存ボタンをクリックすることをお忘れなく。"という作業があります。この作業と同じように、アプリケーション設定でAPIキーの変数名と、API Keyの値を格納しておくことができます。
アプリケーション設定へのAPIキーの書き込み方
で、この時、APIキーの値は、クォーテーションマークなどでは囲みません。そのまま書き込みます。ローカルに置いた.envファイルからコピっていた私は最初、ここでつまづきました。つまり、こんな感じです。
- ダメな例: "apikeyの文字列です"
- 良い例: apikeyの文字列です
APIキーの呼び出し方
アプリ側でのAPIキーの呼び出し方は、こんな感じです。ローカルに置いた.envファイルからの呼び出しとは書き方が少し違うと思います。
your_api_key = os.environ['YOUR_API_KEY']
簡単なパスワード認証のかけ方
ちなみに、元の記事には、Azure Active Directoryでの認証の付け方が書かれていました。しかし、もっと簡単にpwを一個だけ設定しておくようにしたいのだよな、というときもあると思います。その際も、上と同じやり方で、Azure App Serviceのアプリケーション設定にパスワードを入れておき、同じやり方で取り出して使うことができます。
あとは、Streamlit公式のやり方に沿って作ります。公式の内容は、Streamlit Communiy Cloudを使う前提になっているので、st.secrets["password"]としていますが、これを上と同じようにos.envison["password"]とするだけで、Azure App Serviceのアプリケーション設定に格納したパスワードに変えることができます。
おしまいです。それでは!
参考文献