AI

Microsoft謹製エンタープライズ向けPrivate ChatGPT(Azure ChatGPT)が公開されたのでローカル環境で動かしてみた

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上や今回のようにローカル環境で動かすことが可能
  • 公式ページでの以下がメリットと謳われています

メリット:

  1. プライベート: お客様のデータのプライバシーを保証し、OpenAIが運営するデータとは完全に隔離されています。
  2. 管理された: ネットワークトラフィックはお客様のネットワークに完全に隔離され、その他のエンタープライズグレードのセキュリティコントロールが組み込まれています。
  3. 価値: 独自の内部データソース(プラグアンドプレイ)、またはプラグインを使用して内部サービス(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とは

ローカル環境で動かすための前提条件

  • Azure OpenAIの利用申請を行い、利用が出来ている
  • Azure Cosmos DBにリソースを作成できる権限を持っている
    • 各種データを格納するため、Azure Cosmos DBが必要になります
  • GitHubのアカウントを持っている
    • GitHubのアカウントは認証に利用します。Azure ADも利用可能ですが、今回はGitHubアカウントを利用します。
  • Node.jsのインストールとnpm install が実行出来る状態
    • (2023年8月4日 11:02追記) Dockerfileが含まれているためDockerで起動することも可能です

ローカル環境で動かすための流れ

  1. Azure OpenAIでインスタンスの作成、モデルのデプロイをし、各種設定値の取得
  2. Azure Cosmos DBでインスタンスの作成し、AZURE_COSMOSEDB_URI と AZURE_COSMOSEDB_KEY の取得
  3. GitHub OAuth Apps のセットアップし、AUTH_GITHUB_IDAUTH_GITHUB_SECRET の取得
  4. NEXTAUTH_SECRET の作成
  5. アプリをGit Cloneして.env.local にアプリ起動に必要な環境変数を設定
  6. 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_VERSIONhttps://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 )

作成後に必要な環境変数を取得します。

AZURE_COSMOSDB_URI=https://xxxxxxxxxxxxxxxxxxxxxxxxx.documents.azure.com:443/
AZURE_COSMOSDB_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

GitHub OAuth Apps のセットアップし、AUTH_GITHUB_IDAUTH_GITHUB_SECRET の取得

  1. GitHub OAuth Apps のセットアップ https://github.com/settings/developers
  2. New OAuth App で新規アプリを作成 https://github.com/settings/applications/new
  3. 必要項目を入れて、クレデンシャル情報を取得
Application nameAzure ChatGPT DEV Environment
Homepage URLhttp://localhost:3000/
Authorization callback URLhttp://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一発で構築はまた別の機会で。

glidenote

memolist.vim作者. GMOペパボ、Kaizen PlatformといったWEB系スタートアップでシニアエンジニア、SRE Group Manager、Engineering Group Managerを歴任。AWS Certified Security – Specialty.
Speed Cube初心者 1/5/12=19.21/29.70/30.27。ばね指治療中