AI SaaS

Microsoft製Private AI Chatが大幅にアップデートして「Azure Chat」となって復活したのでローカルで動かしてみた

IDチームの前田です。以前紹介したAzure ChatGPTがGitHub上で公開直後に非公開になっていましたが、大幅にアップデートされて、「Azure Chat」と名称を変更しGitHubで公開されたので、再びローカル環境で動かしてみました

注意

本ブログは、2023/09/19までの情報をもとに記載しています。
実際の設定の際に不明点が発生した場合は、公式ドキュメントをご参照ください。

三行まとめ

  • Microsoft製のエンタープライズ向けのPrivate ChatGPTがAzure Chatと名称を変更し、機能のアップデートされて再度公開されたので、ローカルマシン(M2 Macbook Pro)で動かしてみました
  • Azure ChatGPT検証時に問題となっていた日本語入力の不具合は解消済
  • 日本語入力の不具合が解消されたので、ようやく業務用途で検証が可能になりました

Azure Chat とは

  • Microsoft製のAzure OpenAIを利用したエンタープライズ向けのAIチャットです
  • 2023年08月にGitHub上で公開されたあとに非公開になっていたAzure ChatGPTが、名称を変えてAzure Chatとして再度公開されました
  • 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/azurechat

Azure OpenAIとは

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

  • 利用しているAzureテナント(アカウント)Azure OpenAIが利用出来る状態である
  • Azureの下記リソースを作成できる権限を持っている
    • Azure OpenAI
    • Azure Cosmos DB
    • Cognitive search
    • Document intelligence
  • GitHubのアカウントを持っている
    • GitHubのアカウントは認証に利用します。Azure ADも利用可能ですが、今回はGitHubアカウントを利用します
  • Node.jsのインストールとnpm install が実行出来る状態
    • Dockerで起動することも可能です

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

関連するコンポーネントが多いため、ローカル環境で動かすのも大変です。

  1. Azure OpenAIでインスタンスの作成、モデルのデプロイ、各種設定値の取得
  2. Azure Cosmos DBの作成し、AZURE_COSMOSDB_DB_NAMEAZURE_COSMOSDB_CONTAINER_NAME の取得
  3. Azure Cognitive Searchの作成し、AZURE_SEARCH_API_KEY AZURE_SEARCH_NAME AZURE_SEARCH_INDEX_NAME AZURE_SEARCH_API_VERSION の取得
  4. Document Intelligenceの作成し、AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT AZURE_DOCUMENT_INTELLIGENCE_KEY の取得
  5. GitHub OAuth Apps のセットアップし、AUTH_GITHUB_IDAUTH_GITHUB_SECRET の取得
  6. アプリをGit Cloneして .env.local にアプリ起動に必要な環境変数を設定
  7. npm packagesのインストールとアプリの起動 (Dockerで起動することも可能)

Azure ChatGPTとは異なりAzure ChatではCognitive SearchとDocument Intelligenceの設定が追加になっていました。

Azure OpenAIでインスタンスの作成、モデルのデプロイをデプロイし、各種設定値の取得

インスタンスの作成やモデルのデプロイは公式ドキュメントを参照ください

モデルをデプロイしたあとは、必要な環境変数を取得していきます。

Azure ChatGPTからAZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME が追加されているので注意してください。

AZURE_OPENAI_API_KEY=
AZURE_OPENAI_API_INSTANCE_NAME=
AZURE_OPENAI_API_DEPLOYMENT_NAME=
AZURE_OPENAI_API_VERSION=2023-03-15-preview
AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME=

AZURE_OPENAI_API_VERSION は https://learn.microsoft.com/ja-jp/azure/ai-services/openai/whats-new にて確認が可能です。2023年09月19日時点では 2023-05-15 が最新になります。

Azure Cosmos DBでインスタンスの作成し、 AZURE_COSMOSDB_URIAZURE_COSMOSDB_KEY の取得

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

(Azure ChatGPT時代と環境変数名が変更になっているため注意 AZURE_COSMOSEDB_URI => AZURE_COSMOSDB_URI)

AZURE_COSMOSDB_URI=https://<cosmoresourcename>.documents.azure.com:443/
AZURE_COSMOSDB_KEY=

Azure Cognitive Searchの作成し、 AZURE_SEARCH_API_KEY, AZURE_SEARCH_NAME, AZURE_SEARCH_INDEX_NAME, AZURE_SEARCH_API_VERSION の取得

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

AZURE_SEARCH_API_KEY=
AZURE_SEARCH_NAME=
AZURE_SEARCH_INDEX_NAME=
AZURE_SEARCH_API_VERSION="2023-07-01-Preview"

Document Intelligenceの作成し、 AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT, AZURE_DOCUMENT_INTELLIGENCE_KEY の取得

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

AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT="https://REGION.api.cognitive.microsoft.com/"
AZURE_DOCUMENT_INTELLIGENCE_KEY=

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 Chat Environment
Homepage URLhttp://localhost:3000/
Authorization callback URLhttp://localhost:3000/api/auth/callback/github/

アプリをGit Cloneして.env.local にアプリ起動に必要な環境変数を設定

~/repos を作成して作業をしていますが、適宜変更してください。 “.env.local` にはこれまでの手順で取得した環境変数を設定していきます。

mkdir ~/repos/
cd ~/repos/
git clone git@github.com:microsoft/azurechat.git
cd azurechat/src/
cp .env.example .env.local

.env.local の例

AZURE_OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AZURE_OPENAI_API_INSTANCE_NAME=xxxxxxxxxxxxxxxxx
AZURE_OPENAI_API_DEPLOYMENT_NAME=xxxxxxxxxxxxxxxx
AZURE_OPENAI_API_VERSION=2023-05-15
AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME=xxxxxxxxxxxxxxxxxxxx

# Update your admin email addresses - comma separated
ADMIN_EMAIL_ADDRESS="you@email.com,you2@email.com"

# You must have atleast one of the following auth providers configured
AUTH_GITHUB_ID=xxxxxxxxxxxxxxxxxxxx
AUTH_GITHUB_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# Update your production URL in NEXTAUTH_URL
NEXTAUTH_SECRET=AZURE-OPENIAI-NEXTAUTH-OWNKEY@1
NEXTAUTH_URL=http://localhost:3000

# Update your Cosmos Environment details here
AZURE_COSMOSDB_URI=https://xxxxxxxxxxxxxxxxxxxxxx.documents.azure.com:443/
AZURE_COSMOSDB_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

# Update your Cosmos DB_NAME and CONTAINER_NAME if you want to overwrite the default values
AZURE_COSMOSDB_DB_NAME=chat
AZURE_COSMOSDB_CONTAINER_NAME=history

# Azure cognitive search is used for chat over your data
AZURE_SEARCH_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
AZURE_SEARCH_NAME=xxxxxxxx
AZURE_SEARCH_INDEX_NAME=xxxxxxxxxxxxxxxxxxxx
AZURE_SEARCH_API_VERSION="2023-07-01-Preview"

# Azure AI Document Intelligence to extract content from your data
AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT="https://xxxxxxxxxxxxxxxxxxx.cognitiveservices.azure.com/"
AZURE_DOCUMENT_INTELLIGENCE_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

npm packagesのインストールとアプリの起動

必要パッケージのインストール

npm install

アプリの起動

npm run dev

Dockerを利用してアプリを起動

READMEには記載はありませんが、repo内にDockerfileが含まれるため、Dockerを利用してアプリを起動することも可能でした。 .env.local の用意までは手順は同じです。 (Dockerで起動するとAzure Chatのファイルアップロード機能は正常に動かなかったため、あくまでも開発検証などでの用途で利用しましょう)

docker build . -t azurechat
docker run -p 3000:3000 --env-file ./.env.local azurechat

アプリへアクセス

http://localhost:3000/ にアクセスすると認証画面が表示されます。今回はGitHubアカウントでログインをします

Azure Chatの画面が表示されました!

Azure Chatを使ってみる

2023年9月19日現在最新のmacOS Chrome 117.0.5938.88ではAzure ChagGPTのときの日本語入力に不具合は解消されていました。
ChatGPTとは異なり、現時点手はStreamingには対応しておらず、ある程度まとまった回答が一気に返ってきます

機能追加がされてファイルをアップロードして、質問や要約作成も可能に。

ちなみにAzure ChatGPTのときに存在したリポート機能は削除されていました。

以下はAzure ChatGPTのリポート機能の画面で、Azure Chatからは無くなっていました。

まとめ

  • Microsoft製のAzure ChatGPTがAzure Chatとなって再公開されたので、再びローカル環境で動かしてみました。
  • 日本語入力の不具合は解消されていたので、当社も試験導入が可能になりました。

Azure Developer CLIを用いてAzure上にデプロイも出来るとのことなので、別で検証をしたいと思います。

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。ばね指治療中