IDチームの前田です。Microsoft謹製エンタープライズ向けPrivate ChatGPT (Azure ChatGPT)が公開され、自社内やローカル環境で動かせるようになったとのことなので試してみました。
chatbot-ui などローカル環境でAzure OpenAIを利用出来るチャットツールはありましたが、Microsoft社がエンタープライズ利用を想定して提供しているものがこちらになります。
2023/09/19 追記
Azure ChatGPTからAzure Chatと名称が変更になり、大幅なアップデートが有りました。本ブログの情報は古くなっているため、詳しくは下記を参照ください。
https://blog.cloudnative.co.jp/20412/
三行まとめ
- Microsoft謹製のエンタープライズ向けのPrivate ChatGPTをローカルマシン(M2 Macbook Pro)で動かしてみました
- 2023年8月4日現在、ドキュメントが少なく、ローカル環境でとりあえず動かすまでがなかなか大変。サクッとは動かせない
- まだリリースされたばかりで、日本語入力周りに不具合を抱えていますが、今後の改良に期待
Azure ChatGPTとは
- Microsoft謹製のAzure OpenAIを利用したエンタープライズ向けのPrivate ChatGPTです
- Azure上や今回のようにローカル環境で動かすことが可能
- 公式ページでの以下がメリットと謳われています
メリット:
- プライベート: お客様のデータのプライバシーを保証し、OpenAIが運営するデータとは完全に隔離されています。
- 管理された: ネットワークトラフィックはお客様のネットワークに完全に隔離され、その他のエンタープライズグレードのセキュリティコントロールが組み込まれています。
- 価値: 独自の内部データソース(プラグアンドプレイ)、またはプラグインを使用して内部サービス(ServiceNowなど)と統合し、付加的なビジネス価値を提供します。
(原文)
Benefits are:1. Private: Built-in guarantees around the privacy of your data and fully isolated from those operated by OpenAI.
2. Controlled: Network traffic can be fully isolated to your network and other enterprise grade security controls are built in.
3. Value: Deliver added business value with your own internal data sources (plug and play) or use plug-ins to integrate with your internal services (e.g., ServiceNow, etc).
https://github.com/microsoft/azurechatgpt
Azure OpenAIとは
- Microsoftが提供するクラウドベースの人工知能(AI)サービスの一つです
- OpenAI社の提供するChatGPTとの違いは東京エレクトロンデバイス社のページに詳しくまとまっています
ローカル環境で動かすための前提条件
- Azure OpenAIの利用申請を行い、利用が出来ている
- Azure Cosmos DBにリソースを作成できる権限を持っている
- 各種データを格納するため、Azure Cosmos DBが必要になります
- GitHubのアカウントを持っている
- GitHubのアカウントは認証に利用します。Azure ADも利用可能ですが、今回はGitHubアカウントを利用します。
- Node.jsのインストールと
npm install
が実行出来る状態- (2023年8月4日 11:02追記) Dockerfileが含まれているためDockerで起動することも可能です
ローカル環境で動かすための流れ
- Azure OpenAIでインスタンスの作成、モデルのデプロイをし、各種設定値の取得
- Azure Cosmos DBでインスタンスの作成し、AZURE_COSMOSEDB_URI と AZURE_COSMOSEDB_KEY の取得
- GitHub OAuth Apps のセットアップし、
AUTH_GITHUB_ID
とAUTH_GITHUB_SECRET
の取得 NEXTAUTH_SECRET
の作成- アプリをGit Cloneして
.env.local
にアプリ起動に必要な環境変数を設定 - npm packagesのインストールとアプリの起動
Azure OpenAIでインスタンスの作成、モデルのデプロイをデプロイし、各種設定値の取得
インスタンスの作成やモデルのデプロイは公式ドキュメントを参照ください https://learn.microsoft.com/ja-jp/azure/ai-services/openai/
モデルをデプロイしたあとは、必要な環境変数を取得していきます。
AZURE_OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxx
AZURE_OPENAI_API_INSTANCE_NAME=xxxxxxxxxxxxxxxxx
AZURE_OPENAI_API_DEPLOYMENT_NAME=xxxxxxxxxxxxxxxxxxx
AZURE_OPENAI_API_VERSION=2023-05-15
AZURE_OPENAI_API_VERSION
は https://learn.microsoft.com/ja-jp/azure/ai-services/openai/whats-new にて確認が可能です。2023年8月4日時点では 2023-05-15
が最新になります。
Azure Cosmos DBでインスタンスの作成し、AZURE_COSMOSEDB_URI と AZURE_COSMOSEDB_KEY の取得
Azure Cosmos DB の作成方法も公式ドキュメントを参照してください。
(2023/08/07追記 環境変数名が変更になったため記事を修正しました https://github.com/microsoft/azurechatgpt/pull/46 )
- https://learn.microsoft.com/ja-jp/azure/cosmos-db/nosql/quickstart-portal
- インスタンス作成時の設定
コア (SQL)
- 接続方法:
すべてのネットワーク
- 外部ネットワークから接続するために選択
- その他の設定は利用用途に合わせて変更してください
作成後に必要な環境変数を取得します。
AZURE_COSMOSDB_URI=https://xxxxxxxxxxxxxxxxxxxxxxxxx.documents.azure.com:443/
AZURE_COSMOSDB_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GitHub OAuth Apps のセットアップし、AUTH_GITHUB_ID
とAUTH_GITHUB_SECRET
の取得
- GitHub OAuth Apps のセットアップ https://github.com/settings/developers
New OAuth App
で新規アプリを作成 https://github.com/settings/applications/new- 必要項目を入れて、クレデンシャル情報を取得
Application name | Azure ChatGPT DEV Environment |
Homepage URL | http://localhost:3000/ |
Authorization callback URL | http://localhost:3000/api/auth/callback/github/ |
NEXTAUTH_SECRET
の作成
こちらはOpenSSL(1)で作成し、設定します。ターミナルなどで下記を実行して生成します。 NEXTAUTH_URL
は同梱されている .env.sample
をそのまま利用します
openssl rand -base64 32
アプリをGit Cloneして.env.local
にアプリ起動に必要な環境変数を設定
~/repos
を作成して作業をしていますが、適宜変更してください。 .env.local
にはこれまでの手順で取得した環境変数を設定していきます。
mkdir ~/repos/
cd ~/repos/
git clone git@github.com:microsoft/azurechatgpt.git
cd azurechatgpt/src/
cp .env.example .env.local
.env.local
の例
AZURE_OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AZURE_OPENAI_API_INSTANCE_NAME=xxxxxxxxxxxx
AZURE_OPENAI_API_DEPLOYMENT_NAME=xxxxxxxxxxxxxx
AZURE_OPENAI_API_VERSION=2023-05-15
AUTH_GITHUB_ID=xxxxxxxxxxxxxxx
AUTH_GITHUB_SECRET=xxxxxxxxxxxxxxxxxxxxx
NEXTAUTH_SECRET=xxxxxxxxxxxxxxxxxx
NEXTAUTH_URL=http://localhost:3000
AZURE_COSMOSDB_URI=https://xxxxxxxxxxxxxxxxx.documents.azure.com:443/
AZURE_COSMOSDB_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
npm packagesのインストールとアプリの起動
必要パッケージのインストール
npm install
アプリの起動。
npm run dev
Dockerを利用してアプリを起動 (2023年8月4日 11:03追記)
READMEには記載がありませんでしたが、repo内にDockerfileが含まれていたので、Dockerを利用してアプリを起動することも可能です。 .env.local
の用意までは手順は同じです。
docker build . -t azurechatgpt
docker run -p 3000:3000 --env-file ./.env.local azurechatgpt
アプリへアクセス
http://localhost:3000/ にアクセスすると認証画面が表示されます。今回はGitHubアカウントでログインをします
Azure ChatGPTの画面が表示されました!
Azure ChatGPTを使ってみる
ようやくアプリがローカル環境で動いたので、早速使ってみます。
- 2023年8月4日現在だと文字変換を確定させようとEnterを押すと勝手に送信されてしまいます ???
- チャット履歴、Streamingが利用出来たり、OpenAI ChatGPTと同じように利用が可能でした。
リポート機能があり、誰がどのように利用しているかが確認可能です。管理者目線だと利用状況の分析や、禁止されている用途で利用されていないかの監査に活用できます。
まとめ
- Microsoft謹製のAzure ChatGPTが公開されたので、ローカル環境で動かしてみました。
- 自社Azure環境で動かせるのでAzure網内で通信を完結させたい場合には良い選択肢になるかと思います。
- 2023年8月4日現在、日本語入力に不具合を抱えていますが今後の改良に期待。
- オープンソースとして公開されており、IssueやPull Requestも受け付けているとの事なので、私も頑張って貢献したいと思います!!
動かすまでの環境構築が面倒だったのでTerraform一発で構築はまた別の機会で。