1
5

More than 1 year has passed since last update.

100万人に伝えたい!失敗を乗り超えた話を共有しよう

Microsoft - AzureChatGPTをCloneしてオリジナルChatgptを作っちゃおう - ①とにかく使ってみる編(失敗します) - 8/5

Last updated at Posted at 2023-08-05

はじめに

★★更新:【https://qiita.com/kazuya-ho2/items/0d03d2fed8fa389faeb7
 このシリーズの②で正常に動作がローカルでできているので、そちらを参照くださいませ!

皆さんこんにちは。
Kazuyaです。
Microsoftから、github にて、chatgptの内部構成までを公開するような形で公開されました。
https://github.com/microsoft/azurechatgpt


この投稿は、以下の連載です。

①でDevOpsを用いて楽に環境をと思ったところ、Pipelineにミスがあるようで(多分Envilonment系)、デプロイ後に動確すると、AppServiceのURLをたたいてもエラー。
②では、ローカルで実行するとうまくいきました👌

【連載】


私が以前から作りたかった「エンタープライズでも使えるChatgpt」というのが、まさしくこれ。
どうしても企業内で使うために越えなければいけないのが、「セキュリティポリシーの壁」。
これを超えるためには、「閉塞空間」やそれに応じたポリシー、担保が必要なのです。

公式で言う利点

  1. プライベート:データのプライバシーに関する保証が組み込まれており、OpenAI によって運用される保証から完全に分離されています。
  2. 制御:ネットワーク トラフィックをネットワークから完全に分離でき、その他のエンタープライズ グレードのセキュリティ制御が組み込まれています。
  3. 価値:独自の内部データ ソース (プラグ アンド プレイ) で追加のビジネス価値を提供するか、プラグインを使用して内部サービス (ServiceNow など) と統合します。

僕のやりたいことをかなえてくれる一歩目になる部分がこの公開になってくると期待。
実装をしながら書いていきますので、右往左往した部分も書いていきます。

この連載のゴール

1.「とにかく使ってみる」 ←今回はここ
2.「ローカルで実行」
3.セキュアな環境とベクトルDBの利用+どこまでセキュアなのかの考察

前提

・Azureのサブスクリプションを持っていること
・AzureのOpenAIの利用申請を行い、GPT3.5 または GPT-4.0が使えるようになっていること。
※githubのREADMEにも以下の記載がありますね。

Azure OpenAI : Azure で ChatGPT をデプロイして実行するには、Azure OpenAI サービスにアクセスできる >Azure サブスクリプションが必要です。こちらからアクセスをリクエストしてください。アクセスできたら、このリンクの手順に従ってgpt-35-turbo または gpt-4 モデルを展開します。
認証用に GitHub または Azure AD をセットアップする:以下のID プロバイダーの追加セクションでは、認証プロバイダーを構成する方法を示します。

1.とりあえず楽にデプロイできる、「デプロイ」の機能が用意されているので、やってみる。

Githubにある「Deploy to Azure」をクリックしちゃえば、DevOpsから必要なリソースが出来上がりそうです。

やってみちゃいましょう。

image.png

押してみた。

以下のような画面が出ます。
リソースグループは新規作成を押して「azurechatgpt」としました。
リージョンは、japaneastのまま。
名前も、「azurechatgpt」。
image.png

ここで登場。「Openai Api Key」
ここが、前提にも記載している通り、Azure OpenAIをデプロイ済みにしている必要があるのです。
なので、作成済みのAzureOpenAIリソースを開きます。

開いて、リソース管理の「キーとエンドポイント」をクリックすると以下のように表示されるのでこの値を使っていきます。
image.png

続いて、デプロイ名も後で必要になるので、AzureOpenAIのモデルとデプロイをクリック。
image.png

「展開の管理」をクリックすると、専用のモデル管理用画面が開く。
まだ作成していなければ「新しいデプロイの作成」からモデルを作成する。
ここで選べるのは、前提にある通り、申請が通っているモデルのみが使える。
以下の例では、gpt3.5を使う。デプロイ名は自分で決めた「gpt35」となる。

image.png

カスタムデプロイのページに戻って、以下のように入れていきます。
・Open Api Key:上のAzureOpenAIの、キーとエンドポイントのキー1の値をコピーして貼り付け
・Openai Instance Name:上のAzureOpenAIのリソース名
・OpenAI Deployment Name:上記で確認したデプロイ名(この例では「gpt35」)
・Openai Api Version:2023-03-15-preview(Githubを参考に08/05時点の最新を入れてみる)

これでOK。最終的な形はこんな感じ。
image.png

デプロイしてみる。

上記状態で「次へ」を押すと、作成確認の画面が出る。
問題なければ、「作成」をクリック。
image.png

しばらく待ってみる。
image.png

(リアルタイムに書いているので、待ち時間も書いておく)
18:32開始。
2分経過。まだ実行中。
4分経過。終わった!結構早い。

リソースに移動していざ使えるのか確認してみる。

以下のようにリソースグループが出てくるので、リソースグループに移動をクリック。
image.png

移動したら3つのリソースが、作成したリソースグループに作られていることがわかる。
image.png

このうち、実際のWebアプリは「App Service」。
CosmosDBもあるので、これはおそらく内部的なPromptの履歴などなどの管理でしょう。
WebサイトのURLを確認したいので「App Service」を開く。
ここにある「既定のドメイン」がこのアプリに割り当てられたURL。

image.png

開いてい見る。
おっと残念。認証エラーが出ましたね。
image.png

Githubを見ると、「環境変数」と「認証用IDプロバイダ」が必要との記載がありました。
ここをやっていきましょう。

認証用IDプロバイダ構築(Github)

【重要】認証用IDプロバイダ構築(Github)は失敗に終わります!原因はわかっていないので、成功編だけ見たい方は、認証用IDプロバイダ構築(AzureAD)のほうを見てください。

まず、今回は、AzureADはちょっと手間がかかってしまうので、Githubの認証を使っていきます。
以下を参考に実施していきます。
image.png

①【<https://github.com/settings/applications/new】に移動
②上記の画像にある通り、アプリ名など必要な情報を入れていく
ポイント:
・Homepage URL:AppServiceの規定のドメインを設定
・Authorization callback URL: + /api/auth/callback/github
※Enable Device Flowはチェックしないで、「Register application」をクリック

image.png

Client IDと Client secretsをメモしておく

上で作成した後遷移した画面にて「Client ID」が表示されているのでメモをしておく
次いで、「Generate a new client secret」をクリックして、シークレットを生成してメモしておく。

image.png

これでOK。

App Service側の環境変数に Githubの情報を設定していく

Azure App Serviceの画面に戻って、「構成」を開く。
各種環境変数が並んでいるので、ここに、GITHUBの情報を入れていく。

対象は、以下の変数。
image.png

今はこんな感じになっている。
image.png

ここに、上記の2つを追加していく。
①「New application setting」をクリックして、②・③それぞれの変数を追加する。(Deployment slotにはチェックしない)
② NAME=AUTH_GITHUB_ID、Value=上記のGithub側で取得したClient ID
③ NAME=AUTH_GITHUB_SECRET、Value=上記のGithub側で取得したClient Secret
④ 最後に必ず画面上部の「Save」をクリックして保存する。→Updateが走ってCompleteしたら完了。

image.png

できた。ここまででガイド通りのことはできたはず。連携できているのかは謎。
さて、再度URLをたたいてみる。
image.png

うん。当然まだ駄目。理由はわかりきっていて、IDプロバイダ自体を追加していない。
なので、AppServiceの画面に戻って、IDプロバイダを追加していく。

IDプロバイダの追加

App Serviceのメニューにて、【認証】をクリック。
ID プロバイダーを追加のボタンが出たらクリック。
image.png

Githubを選ぶと以下のようになるので、クライアントID・シークレットはGithub側で作ったものを入れる。
その他はデフォルトのままでOKで、追加をクリック。
image.png

いよいよ完了か!?

再度画面を表示してみる。
image.png

ここで失念。。。ログをトレースする根気がないので、潔くAzureADに切り替え。

認証用IDプロバイダ構築(AzureAD)

Githubの記載をもとに、AzureADでの構築手順を確認。
同じように、AzureADにアプリを作って、クライアントIDとシークレットを手に入れればよさそう。

image.png

手順は以下。
① 【https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/CreateApplicationBlade/quickStartType~/null/isMSAApp~/false】に移動
② 上記画像を参考に、アプリの情報を入力
 ・サポートアカウントの種類:この組織ディレクトリの身に含まれるアカウント

ざっくりこんな感じ
image.png

して、登録をクリック。
登録すると画面がポータルに戻ってしまうので、検索キーワード欄に、先ほどのアプリ名を入れて検索。
Azure ADに二つのアプリが存在しているので、アプリケーション側を選んで表示。
image.png

開いたページの各ページで、以下の情報をメモする。
・クライアントID:概要ページの、アプリケーション(クライアント)
・テナントID  :概要ページの、テナントID
・シークレット  :証明書とシークレットのページで、「新しいクライアントシークレット」をクリックして作成したシークレットの「値」(説明等は任意)

これでOK。
この後、App Serviceのページに移動して、構成ページを開き、「Application Settings」のページにて、環境変数に、Azure ADの上記情報を入れていく。

入れ終わった後はこんな感じ。
image.png

これで、画面上部の「Save」を押す。

再度画面を表示してみる。

だめ。

で、ログを確認したんだけど、内部エラーが出ちゃってる。
調べる手立てが少ないので、これは一度諦めて、ローカルからやり直します。

この後ローカルからの手順を実施しますのでアプデお待ちを!

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5