Technology部の町田です。
弊社LIGでは生成AIコンサルティング事業の立ち上げに伴い、日々生成AI関連の情報収集・発信をおこなっています。そんななかで時折、「社内のリソースをもとにしたチャットボット」の話を聞くことがあります。
たとえば会社の就労規則を学習させて人事への質問を減らしたり、カスタマーサポートの資料を読み込ませてサポートチャットボットを作ったりなど……なんとも夢がある話ですね。
このように、すでにあるリソースを読み込ませたAIを作る基礎技術として、LangChain(ラングチェイン)というフレームワークがあり、Pythonなどで簡単にリソースを読み込ませたAIを実装できるようです。しかし私は非エンジニアなのでコーディングがわからず、LangChainを実装することができません。
だったら、「ノーコードで実装することができないか……?」と思い、本記事では「社内リソースを使ったチャットボットのノーコード開発」にチャレンジしてみます。
目次
開発に使用するサービス候補
調べていく中で、今回の実験にはMicrosoftの提供するAzure OpenAI Studioか、Prompt Flowが適していそうなことがわかりました。
Azure OpenAI Studio
Azure OpenAI StudioはAzureの中でChatGPTなどを使ってみることのできるサービスです。大きく、以下の2つの機能があります。
- ChatGPTやDALLEを試す
- Azureのほかのリソースで使えるようにChatGPTを設定する
私は最初2つ目の機能にしか気づいていなかったのですが、1つ目の機能で簡単にChatGPTをチューニングできることがわかりました。なお、1で作ったAIはアプリケーションとしてデプロイすることができます。
参考記事:https://oai.azure.com/portal
Azure Prompt Flow
ややこしいのですが、こちらは「Azure AI | Machine Learning Studio」というサービスに追加された、Prompt Flowとなります。
Prompt Flowは2023年7月下旬に提供開始された、サービスAIアプリケーションの開発サイクル全体を効率化するために設計された開発ツールです。要は、AIを使ったシステムをノーコードで作るためのツールですね。
たとえば外部から情報を取り込んだり、途中でデータを加工したり、プロンプトを指示したりなど複雑な作業ができます。これらをAPI化もできるのでいろいろ拡張性はありそうです。
参考記事:
【日本最速?】Azure AI StudioでPrompt Flowを触ってみた感想 – Qiita
Azure Machine Learning「Prompt flow」の実行方法を解説 – Qiita
参考:LangChainを使ったチャットボット開発
冒頭で少し触れたLangChainですが、ざっくりいうとPDFやWordなどをはじめとした文字情報のデータを、ChatGPTなどで扱いやすい形に変換する仕組みです。
これを使うことで、社内情報を含んだPDFをもとに自社向けチャットボットを作成できます。他にもAIが長期的に会話内容やそのコンテクストを記憶できるようになりました。
弊社でもすでにLangChainを活用したチャットボットを作成した記事があるので、ぜひご覧ください。
LangChain×Streamlitを使ったチャットボットアプリを開発してみた
結論:Azure OpenAI Studioが簡単
結論を述べてしまうと、Azure OpenAI Studioでファイルをもとにチューニングし、Chat用AIをデプロイするのが簡単です。
Prompt Flowはノーコードツールですが、非エンジニアが扱うには難易度が高いと感じました。最終的なチャットボットの回答の質にも差が見られなかったので、「社内リソースを使ったチャットボットをノーコードで作りたい」という目的に合致しているのはAzure OpenAI Studioでしょう。
したがって今回はAzure OpenAI Studioに絞って、具体的な実装方法を解説します。
Azure OpenAI Studioでチャットボットを実装する方法
概要
まず今回は、大きく4つのタイプのサービスを組み合わせることになります。
大まかなイメージはこんな感じです。
- Azure Storage:Azure向けに提供されてるGoogle Driveみたいなものです。ここにインプットしたいファイルを格納します。
- Cognitive Search:AIでPDFやWordを扱うためには、IndexというAIが取り回ししやすい形に変換する必要があります。Cognitive Searchはそれをおこなってくれるサービスです。
- Azure Open AI Studio:Azure OpenAI Studioはチャットボットを作る仕組みです。どちらもAIを使ってCognitive Searchで作ったIndexを参照することで、会話に社内リソースなどを反映できます。
- Azure Open AI:これらを支えるAIのことで、要するにChatGPTです。Indexを作るとき、ユーザーとの会話するとき、そしてIndexを参照するときに必要です。
手順
今回は大きくわけて5つのステップを経て作成しました。
1.Azure Storageにファイルを格納する
2.Coginitive Searchを作成する
3.Azure OpenAIの作成
4.Deploymentの作成
5.Azure AI PraygroundでのChatbot作成
作成にあたって、いくつかの前提条件が必要ですので紹介します(ただし、私もすべて把握しきれているわけではないので、これ以外にもあるかもしれません)。
・契約プラン
Azureの有料プランを契約する必要があります。
・Azureの権限
正確にどこまでのレベルの権限が必要かすべて書きだすのは難しいのですが、かなりいろいろなタイミングで権限が必要だったので、共同作成者にしてもらいました。
要するに強い権限を付与する必要があり、料金も発生しうるので、権限系に関しては逐一責任者に実施してもらう形を取るか、権限を付与するかは検討の余地がありそうです。
※だいぶ確認が多くなりそうなので、個人的には権限付与がおすすめです。
Azure Cognitive Servicesとは?概要やメリット、サービス内容を解説
・アクセス/編集権限
利用するワークスペースのAzure Storageリソースのアクセス/編集権限が必要です。
1.Azure Storageにファイルを格納する
ここから具体的な手順を説明していきます。まず、Azure Storageを開きます。アカウントがない場合は作成してください。
アカウント>Containersと進み、自分のContainerを作ります。
作成したContainerに入り、今回インプットとしたいファイルを入れます。ファイルを入れたらstorageでの作業は終わりです。
2.Coginitive Searchを作成する
次にIndexを作るCognitice Searchへアクセスします。アカウントがなければ作成してください。
リソースはサブスクリプションに紐づけています。PricingはFreeだと作れなかったので、Basicで作りました。
自分のCognitive Searchが作成されたら一旦作業は完了です。
3.Azure OpenAIの作成
Azure AI Service |Azure OpenAIへアクセスしてください。
リソースがなければ作成します。ここで作成するのは、使う権利みたいなもので、実態はまた後で設定する必要があります。
リソースへアクセスするとこのような画面になります。続いてModel deploymentsへアクセスし、そのままMange Deploymentへ移動してください。
そうするとAzure OpenAI Studioに遷移します。
4.Deploymentの作成
Deploymentというのは、要するにAzureのほかのサービスで使えるようAIの利用権を設定する、ようなものです。これをしないとほかのサービスでAIを使えないので要注意です。
まずは左のツールバーからDeploymentへアクセスします。
Deploymentを作成する際、モデルを選べるのですが、この際に必ず以下2つのモデルを作ってください。それぞれ用途が異なります。
①gpt-35-turbo,gpt-35-turbo-16k,gpt-4,gpt4-32kのいずれかを作成
②text-embedding-ada-002を作成
5.Azure AI PraygroundでのChatbot作成
ここまでくれば、Azure AIを使ったChatbotの作成はかなり簡単です。
Azure OpenAI Studioを開きます。
左のツールバーからChatを選択してください。この画面ではすでにChatGPTと対話することが可能です。
ChatからAdd your data (preview)を選択します。
Add a data sourceを選択してください。すると、データソースとの連携画面が出ます。
画像のように指示に従って作成し、Nextをクリックしてください。
Data manegementは上画像のように「Hybrid + semantic」で設定しました。問題なければ、Nextをクリックし、保存します。
この状態になれば、質問するとWordやPDFをインプットとしたIndexを参照して、回答に反映してもらえます。あとはデプロイして利用できる状態にすればOKです。
回答の質に関して
なお、今回社内リソースを使ったチャットボットを作るうえで、あまり精度が高くないという問題に直面しました。ざっくりいうと「資料のことをさっと目を通した人の雑な回答」ぐらいです。
これらの精度を上げるのは非エンジニアではかなり難しいと感じました。ただ、インプットする資料の質に引きずられるパターンがあるようで、それを知れたことがとても勉強になりました。
もしかすると、資料の作り方や資料のファイル形式、書き方、チューニング方法などのすべてが影響している可能性もあるかもしれません。将来的にはチャットボット化しやすいかどうかという区別が可能になりそうですね。
実装にかかる費用
Azureは従量課金制で複雑な料金体系なのですが、以下のようなタイミングでお金がかかっているようです。
Azure OpenAI関連
- APIを叩いたとき
- アプリをBasic以上のプランでデプロイした場合
APIの利用に対してお金が発生します。当然、Cognitive Searchでインデックスを作る場合、Porpmpt Flowなどから叩いた場合も含まれます。
私の場合、Standardプランで作成したのですが、アプリを立ててるあいだ裏でCPUが回っているので、それに伴う料金が発生します。
こちらはApp Serviceというメニューから確認・停止することができ、Virtual Machineという名前で費用に表示されます。
Cognitive Reasrch関連
- Semantic検索をおこなう
- Indexを作った状態で残しておく
Semantic検索とはクエリに対して自然言語処理を行って検索するやり方のようなのですが、こちらは都度請求です。通常検索自体はStandardプラン以上でしか使えません。
よく見れば公式ページにも課金対象と書かれていますね。
どうやらCognitive Reasrchは立ててるだけでお金がかかりそうです。ちなみに月の最低金額は$360でした。いちど価格レベルがfreeからStandardに上がってしまうとプランを下げる方法が見つからず、仕方なく作成したCognitive Reasrchのリソース自体を削除しました。
後からわかったのですが、どうやらこれはCognitive Searchのリソースを作るタイミングに使うCPUを選ぶことができるみたいで、その際にプランの変更が可能です。
さいごに
今回は自分でチャットボットを作ることを考えていましたが、インプットしたいファイルを渡すだけでチャットボットを作ってくれる基盤を提供している企業もいくつもあります。社内で実装するか、Saasを使うかは会社のフェイズや実態に合わせればよいかと思います。また、AI活用はそのリスクやセキュリティも考慮する必要がありますので、専門家とともに推進するのがおすすめです。
弊社LIGでは生成AIコンサルティングサービスをおこなっています。AI活用の潜在的なリスクから、実際にどのようにサービスに活用するか、システムへの実装、社内への導入や社内教育、セミナーの実施などなど、総合的にサポートさせていただくことができますので、ぜひお気軽にご相談ください。