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

glidenote

glidenote

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日現在、ドキュメントが少なく、ローカル環境でとりあえず動かすまでがなかなか大変。サクッとは動かせない
  • まだリリースされたばかりで、日本語入力周りに不具合を抱えていますが、今後の改良に期待

https://cloudnative.co.jp/AzureOpenAI

Azure 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とは

https://cloudnative.co.jp/AzureOpenAI

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

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 Cosmos DBでインスタンスの作成し、AZURE_COSMOSEDB_URI と AZURE_COSMOSEDB_KEY の取得

Azure Cosmos DB の作成方法も公式ドキュメントを参照してください。

(2023/08/07追記 環境変数名が変更になったため記事を修正しましたhttps://github.com/microsoft/azurechatgpt/pull/46)

その他の設定は利用用途に合わせて変更してください

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

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 devDockerを利用してアプリを起動 (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一発で構築はまた別の機会で。

この記事をシェア