本シリーズの構成は以下のようになっています。
- 【第1回】インフラリソースの準備編
- 【第2回】アプリ構築編(※ 本記事)
- 【第3回】Azure Logic Apps の連携編
アプリ構築編
本連載では社内文書データを利用したChatGPTシステムの構成や設定手順について説明します。
第2回:アプリ構築をする
目次
4. Azure Container Registryにデプロイ
c. Azure Container Registryにログイン
d. 既存のローカルのDockerイメージに新しいタグを付ける
※サンプルコード提供について、弊社サポートまで問い合わせお願いいたします。
1. コード説明
1) 本記事ではFastAPIでAPI開発をしており、構成は以下となります。
app
|- be
|- services
|- document_embedding.py
|- vectore_search.py
Dockerfile
main.py
a. document_embedding.py
OpenAIEmbeddingsクラスのインスタンスを作成して返す関数です。
AzureSearchクラスのインスタンスを作成して返す関数です。
embeddingsオブジェクトを作成して、埋め込みモデルを使います。
b. vectore_search.py
Azure SearchとGPTモデルを私用してハイブリッド検索を行い、検索されたドキュメントとチャット履歴に基づいてレスポンスを返します。
c. document_embedding.py
テキストをチャンクに分割して、Azure Searchに追加しています。
2. .envファイルの設定
.envファイルは環境変数を保存するためのファイルです。このファイルにはセキュリティ上公開したくない情報を記述します。
まずはExample.envファイルを元に.env ファイルを作成します。
その後「インフラリソースの準備編」で作成したインフラリソースからAPIキーや秘密鍵の設定を行います。以下はAZURE_SEARCH_ADMIN_KEYの設定例です。
a. AZURE_SEARCH_ADMIN_KEY
作成したCognitive Searchのリソースを選択して、左側の「キー」を押下します。
プライマリ管理者キーをコピーして、.envファイルのAZURE_SEARCH_ADMIN_KEY=コピーした値のように貼り付ければ完了です。
このようにしてキーやエンドポイントの設定をします。
3. AppServiceのアプリケーション設定
AppServiceの「アプリケーション設定」はアプリケーションが動作する環境に依存する設定値や秘密情報を管理するための機能です。
「アプリケーション設定」に設定した値は、アプリケーションが動作する環境変数として利用できます。
以下はAZURE_SEARCH_ADMIN_KEYの設定例です。
まずは作成したAppServiceリソースを選択して左側の「構成」を押下します。
その後新しい「アプリケーション設定」で設定値を追加していきます。
名前は.envと同じAZURE_SEARCH_ADMIN_KEYで、値は.envファイルに記載したものを追加します。
同じように.envファイルに記載されている設定値を「アプリケーション設定」に追加していきます。
4. Azure Container Registryにデプロイ
Dockerとは、アプリケーションを開発、配布、実行するためのオープンソースプラットフォームです。
まずDockerfileをローカルで動作確認します。
{name}の部分はご自身の要件に応じて変更してください。
※Dockerのインストールは各自で行ってください。
a. Dockerイメージのビルド
docker build –t {name}:latest .
b. Azureテナントへの認証
az login –tenant {ディレクトリID}
※ディレクトリIDの確認方法
右上のアイコンを押下します。
「ディレクトリの切り替え」を押下してディレクトリIDを確認します。
c. Azure Container Registryにログイン
az acr login –n {acr_name}
※{acr_name}の確認方法
作成したAzure Container Registryリソースの画面を開いて、ログインサーバーに記載されている名前から.azurecr.ioを除いたものになります。
d. 既存のローカルのDockerイメージに新しいタグを付ける
docker tag {name} {acr_name}.azurecr.io/{name}: latest .
e. ローカルのイメージをリモートのDockerレジストリにプッシュ
docker push {acr_name}.azurecr.io/{name}: latest .
f. プッシュしたレジストリを反映させる
作成したAppServiceリソースの左側の欄から「デプロイセンター」を開き、以下を設定の上「保存」ボタンを押下します。
レジストリ:{acr_name}
イメージ:{name}
タグ:latest
これらを設定した後「保存」ボタンを押下します。
g. AppServiceを再起動してアクセスする
「再起動」ボタンを押下しアプリケーションが再起動させます。 ※3分程度かかります。
再起動終了後、規定ドメインのURLにアクセスしURLの末尾に/docsを入力します。
アクセスできている場合、以下の画面が表示されます。
5. Swagger UIで動作確認
Swagger UIとはAPIの仕様書を自動生成し、ブラウザ上で表示できるツールです。
エンドポイントに対して実際のHTTPリクエストを送ってレスポンスを確認することができます。
a. 赤枠部分を押下してHTTPリクエストを送ることができる状態にします。
b. Try it Out ボタンを押下して「prompt」を入力可能状態にします。
c. 「prompt」にメッセージを入力して「Execute」ボタンを押下すると質問の内容が応答として返ってくるようになります。
Code 200が正常動作です。
6. 社内文書検索をする
a. ファイルをアップロードする。
/uoload_fileに社内検索用のファイルをアップロードします。
Code 200が正常動作です。
b. 社内文書を検索する。
アップロードしたファイル関連の質問をしてみます。
(アップロード前)
(アップロード後)
アップロードしたファイル関連の質問の結果が返ってくることが確認できました。
次回
次回は Azure Logic Appsの連携編です。Teamsとの連携をできるようにします。
「Azure OpenAI サービス」 応用シリーズ