Azure ChatGPT(企業向けChatGPT)を試してみた

この記事の内容

  • MicrosoftがオープンソースとしてGitHubで公開している「Azure ChatGPT」の概要と利点を解説します
  • AzureへのワンクリックデプロイとGitHub Actionsを使ったアプリケーション展開の手順を紹介します
  • Azure AD(Entra ID)を使った認証設定の方法を解説します
  • 実際に試してみて判明したトラブルと対処法についても正直にお伝えします
  • 現時点での完成度と、日本マイクロソフト公開のリファレンスアーキテクチャとの比較に触れます

Azure ChatGPTとは

ChatGPTは個人が自由に使えるAIツールとして広く知られていますが、企業での利用にはさまざまな懸念があります。社内の知的財産を含む情報をChatGPTに入力した場合、そのメッセージがOpenAI側に送られてしまうのではないか、あるいは学習データとして使われてしまうのではないか、という不安から、利用を禁止している組織も少なくありません。

そこで注目したいのが、MicrosoftがGitHubで公式に公開している「Azure ChatGPT」です。これは企業が社内で安全にChatGPTと同等の機能を使えるようにするためのオープンソースソリューションです。

GitHubリポジトリは本家MicrosoftのAzureオーガニゼーション配下に置かれており、スターやフォーク数も多く、オープンソースとして活発に開発が進んでいる様子が伺えます。


Azure ChatGPTの主な利点

プライベートなデータ環境

Azure ChatGPTの最大のメリットは、データがOpenAI側に渡らない点です。Microsoft自身も含め、外部にデータが送信されないよう設計されており、ネットワークトラフィックも完全に分離できます。エンタープライズグレードのセキュリティコントロールが最初から組み込まれているのが特徴です。

社内データの活用(プラグイン機能)

組織内部のデータソースをプラグ&プレイで扱える仕組みが用意されています。社内で利用しているサービスとの統合もプラグイン経由で実現できる可能性があります。

ソリューションアクセラレーター

「ソリューションアクセラレーター」として設計されており、短期間でデプロイできるよう工夫されています。


システムアーキテクチャの概要

Azure ChatGPTの構成はシンプルで、以下の主要コンポーネントから成り立っています。

  • AIオーケストレーション層: LangChain
  • データ永続化: Azure Cosmos DB
  • ホスティング: Azure App Service

前提条件

デプロイを始める前に、以下が必要です。

  • Azure OpenAI サービスへのアクセス権(未申請の場合は申請が必要)
  • GitHubアカウント、またはAzure AD(Entra ID)による認証
  • 十分なAzure OpenAIのクォータ(容量)

デプロイ手順

Step 1:Azure OpenAI リソースの準備

Azure ChatGPTのデプロイテンプレート自体はAzure OpenAIリソースを自動作成しません。あらかじめAzure OpenAI サービスを作成し、GPT-3.5 Turboなどのモデルをデプロイしておく必要があります。

Azure OpenAI Studioでデプロイを作成する際は、キャパシティ(TPM)を確認しておきましょう。他のソリューションでクォータを使い切っている場合は、既存デプロイのキャパシティを下げて余裕を作る必要があります。

Step 2:Azure環境へのワンクリックデプロイ

GitHubリポジトリのREADMEに用意されている「Deploy to Azure」ボタンをクリックすると、Azureのカスタムデプロイ画面が開きます。

設定項目として以下を入力します。

  • サブスクリプション・リソースグループ: デプロイ先を選択
  • リージョン: 任意のリージョン(例:Japan East、East US)
  • 名前プレフィックス: 全リソースに付与される短いユニークな識別子
  • Azure OpenAI APIキー: キーとエンドポイント画面から取得
  • インスタンス名: Azure OpenAI リソース名
  • デプロイメント名: モデルのデプロイ名
  • APIバージョン: GitHubドキュメントに記載されているバージョン文字列(例:2023-03-15-preview

これにより、Cosmos DBとApp Serviceが作成されます。

注意: ワンクリックデプロイはインフラストラクチャのみを作成します。アプリケーションコードの展開には別途GitHub Actionsの設定が必要です。

Step 3:リポジトリのフォークとGitHub Actionsの設定

インフラデプロイ完了後、以下の手順でアプリケーションをデプロイします。

3-1. リポジトリをフォークする

GitHubでAzure ChatGPTのリポジトリをご自身のアカウントにフォークします。

3-2. サービスプリンシパルを作成する

Azure Cloud Shellで以下のコマンドを実行します(改行を入れずに1行で実行してください)。

az ad sp create-for-rbac --name "AzureChatGPT-SP" --role contributor --scopes /subscriptions/{サブスクリプションID}/resourceGroups/{リソースグループ名} --output json

ポイント: コマンドに改行が入ってしまうと途中でコマンドが分割されて正常に実行されない場合があります。必ず1行にまとめて実行してください。

出力されたJSONをメモしておきます(appIdpasswordtenantなどが含まれます)。

3-3. GitHubシークレットを登録する

フォークしたリポジトリの Settings → Secrets and variables → Actions から、以下のシークレットを登録します。

シークレット名
AZURE_CREDENTIALS上記コマンドで出力されたJSON全体
AZURE_WEBAPP_NAMEApp ServiceのリソースI名(.azurewebsites.netより前の部分のみ)

3-4. GitHub Actionsを実行する

リポジトリの Actions タブから「Build & Deploy Next.JS to Azure Web App」ワークフローを手動実行します。ビルドとデプロイが完了するとアプリケーションが起動します。


Azure AD(Entra ID)認証の設定

デプロイが完了したら、Azure ADアプリ登録を行い認証を有効化します。

アプリ登録の手順

Entra ID(旧Azure AD)の「アプリの登録」から新規登録します。

  • 名前: 任意(例:AzureChatGPT-Production
  • サポートされるアカウントの種類: シングルテナント(組織内のみ)
  • リダイレクトURI: プラットフォーム「Web」で、App Serviceのホスト名 + /api/auth/callback/azure-ad を設定

登録後、クライアントIDテナントID、そして「証明書とシークレット」から作成したクライアントシークレットを取得します。

App Serviceの環境変数設定

App Serviceの「構成」から以下のアプリケーション設定を追加します。

設定名
AZURE_AD_CLIENT_IDアプリ登録のクライアントID
AZURE_AD_CLIENT_SECRET作成したクライアントシークレット
AZURE_AD_TENANT_IDテナントID

設定を保存後、App Serviceを再起動します。


実際に試してみた結果と注意点

遭遇したトラブル

デプロイ過程では次のようなトラブルが発生しました。

  1. ワンクリックデプロイだけではアプリが動かない: インフラのみが作成され、GitHub Actionsによるコードデプロイが別途必要です。ドキュメントが分かりにくいため注意が必要です。

  2. GitHub ActionsのAzureログイン失敗: az ad sp create-for-rbac コマンドに改行が混入していたため、クレデンシャル情報が不完全な状態でシークレットに登録されていました。コマンドは必ず1行で実行してください。

  3. 一部ユーザーでエラーが発生: 初めてサインインするユーザーで TypeError が発生するケースがありました。一定時間後には解消しており、初回ユーザー処理のコードに問題がある可能性があります。

現時点での完成度について

実際に触ってみた感想として、まだ開発途上であることが分かります。内部データとの連携機能もまだ実装されていない部分があり、コードに粗削りな部分も見受けられます。

比較として、日本マイクロソフトが公開しているリファレンスアーキテクチャのアプリケーションの方が、現時点では完成度が高い印象です。会話履歴の管理などはAzure ChatGPTの方が実装されている点もありますが、全体的な安定性では差があります。

一方で、オープンソースとして公開されており、フォークして自由にカスタマイズできます。このリポジトリをベースに独自開発を進める用途には向いているといえるでしょう。


セキュリティに関する注意

デプロイ直後のApp Serviceはインターネットから直接アクセス可能な状態になっています。社内利用を想定する場合は、プライベートエンドポイントやVNet統合を使って内部からのみアクセスできるよう制限することを強くお勧めします。この設定方法については、日本マイクロソフトが公開しているリファレンスアーキテクチャの動画(概要欄のリンク)が参考になります。


まとめ

Azure ChatGPTは、MicrosoftがGitHubでオープンソース公開している企業向けChatGPTソリューションです。データがOpenAIに送られないプライベートな環境でChatGPTと同等の機能を利用できる点が最大のメリットです。

ただし、現時点ではまだ開発途上であり、安定性や機能面では改善の余地があります。デプロイもワンクリックで全て完了するわけではなく、GitHub Actionsによるコードデプロイやエラーへの対処が必要になる場合があります。

これからAzure上に社内向けChatGPT環境を構築したいという方は、本リポジトリをベースにしつつ、日本マイクロソフトのリファレンスアーキテクチャも合わせて参照しながら進めるのがよいでしょう。