6. Open AI で概念モデリングアシスタントを作ってみる
はじめに
前々から書いている通り、私の最終目的は、
”関連するドキュメント群や絵、データを食わせると、概念モデルを自動生成してくれる AI の構築”
ですが、そこに至る、” A long and winding road” を辿る前に、先ずは、初心者が概念モデリングを習得する時に、その用語や意味、コツなどに関して簡単に得ることができるチャットを作ってみることにします。今回は、Azure Open AI Service を使って、とりあえず作ってみた結果をまとめます。
今回の試みでは、Microsoft Learn にありがちな、全体としては非常に詳しく書かれているんだけれど、シンプルにやりたいことに対する作業手順が一貫して書かれていない、という、いつもの情景にぶつかり、結構な工数がかかったので、”IoT 定期購読マガジン”と同じように途中から有料にさせていただきました。概要が知りたいだけなら無料で十分読めますのでご安心ください。
概念モデリング支援における AI 活用とは
本題に入る前に、概念モデリングに関して AI がどのように活用できるかを考察してみます。
AI 活用で最も理想的なシナリオは、繰り返しになりますが、
”関連するドキュメント群や絵、データを食わせると、概念モデルを自動生成してくれる AI の構築”
だと思われます。これについては、前回の長い長~いコラムで、圏論的な見方をすると、ChatGPT や Open AI の学習済み LLM のニューラルネットのパラメータの値群を、何らかの方法で表現形式を変換してやれば、概念情報モデル的な図(ただし概念インスタンスとリンクの可能性もあり)が取り出せるんではないか、という事を書きました。果たして、これが、AI のユーザーレベルで可能なのか(API を介してのみアクセス可能なブラックボックス的なニューラルネットの場合)は現時点では不明です。もしかすると、ある特殊なクエリを入力して、RDF や JSON 形式の出力を適用すると、(概念情報モデルはできそうだが概念振舞モデルは無理かな…)、生成出来るのかもしれません。このトピックも興味深いので、調査を継続しようと思っていますが…
仮に、概念モデルの自動生成が出来たと仮定します。生成さえすれば、
に書いてある通り、Microsoft Azure を使って実際に動く IT ソリューションを自動生成できます。
それが可能なのは論理的に明白なんですが、概念モデリングの素養があって生成されたモデル群を読み下して理解できなければ、完成した IT ソリューションを正しく使い倒すことはできないでしょう。
つまり、概念モデルの自動生成が出来たとしても、少なくとも、生成された概念モデルを読みこなすことのできるスキルは、ユーザー側に最低限必要という事になります。
概念モデリングのスキル獲得支援
ここで役立ちそうなのは、
概念モデリングの理解を支援する
用語の意味を教えてくれる
モデリングのコツや、モデルのパターン等、概念モデルの作成に役立つ情報を教えてくれる
辺りが役に立つでしょう。
次に、概念モデルの自動生成はある程度まではできるが、”概念振舞モデル” で解説している状態モデルやアクション、”ドメインと IT システム構築”で解説しているドメインの定義等は完全にはできない状況を考えてみます。現実的には、どこぞの大手 IT ベンダーが本気で投資しなければ、完全な自動生成はまず無理でしょう。こんな状況は、ほぼ間違いなく、しばらく続くと予想されます。
概念モデル作成支援
この様な状況では、関連するドキュメントや図を AI に入力して学習させた後に、
概念クラスや Relationship の候補の提示
状態アクションやドメインオペレーションの、テキスト形式による、アクション自動生成
概念モデルチェック用の概念インスタンス・リンク群の自動生成
作業の流れのガイド
を行う AI は十分に役立ちます。
そもそもの開発対象の理解促進
ここでちょっと立ち止まって考えてみます。概念モデリングとは、
”概念モデルを作成しながら、開発対象の理解を深め、標準的な記法で第三者も含め、理解可能な表現形式で、開発対象に関する知識と構造を可視化する事”
なのですが、私が圏論の教科書や書籍群を読み始めた頃の様に、開発対象に関する知識がほとんどなく、コンテンツに出てくる用語も珍紛漢紛な状況から開発を始めるとすれば、概念モデルの読み方、概念モデルの作り方の前に、開発対象に関連する現実世界の理解を深めることの方が重要なはず。
このフェーズでは、チャット形式の AI に開発対象に関わるドキュメント群を使って、このコラムで紹介しているのと同じ方法で学習させると、結構使い勝手の良い AI チャットが作れると考えられます。
概念モデリング学習支援用 AI の構築
以上を踏まえて、今回の試みでは、Azure OpenAI Service を使って、概念モデリング学習支援用 AI 、もっと具体的に言えば、テキスト形式で初学者の概念モデリングに関する質問に答える AI チャットを構築してみることにします。
Azure OpenAI Service とは - Azure AI services | Microsoft Learn
これを読んでも、良く判らないので、実際に作って試して、Azure OpenAI Service に関する知見を獲得しようというのも、目的の一つです。
Microsoft Learn の Azure OpenAI Service に関する一連のドキュメントを読み込んで、今回は、私が作って公開している概念モデリングに関するコンテンツを追加して、カスタマイズされたチャットを作ればいいんだろうなという当たりをつけて、
Azure OpenAI Service で独自のデータを使用する - Azure OpenAI | Microsoft Learn
に従って、カスタマイズされたチャットを作ることにします。
学習用データの準備
今回は、https://note.com/kae_made から公開中の
Art of Conceptual Modeling ‐ 7つの記事
概念モデリングチュートリアル集 ‐ 4つの記事
の計 11 の記事を使う事にします。先ず、これらのコンテンツを、Web ページを PDF 化する|Knowledge & Experience (note.com) で書いた方法で、PDF 化します。この方法を使うのは、活きた URL リンクが埋め込まれた PDF が出来上がるからです。
Azure OpenAI Service 利用申請
2023年9月29日現在、Azure OpenAI Service は Azure Subscription を持っていても、Azure IoT Hub や Azure Digital Twins の様に自由に作成する事が出来ず、アクセス申請が必要です。
この記述で紹介されているフォームで、先ずは申請を行います。私の場合は、正に、”概念モデル自動生成”に関するシナリオを実現するためという内容で申請しました。パートナー登録が必要等、書いてあり、そこは省略してしまったので、NG かなと思っていたら、暫くして、”利用 OK ”の旨のメールが送られてきて、使えるようになりました。使いたい人は、とりあえず、申請してみるのが良いと思います。
Azure OpenAI Service 作成
図の様に、Azure Marketplace で、”azure openai” を検索して、作成します。
Azure OpenAI Studio を開く
Azure OpenAI Service のデプロイが完了したら、Azure OpenAI Studio を開きます。
このページで、”Chat playground”を開いて、作業を進めるという事なのですが、”デプロイされたモデルがない”と言われて”?あれ?なんのこっちゃ”って感じになります。
※ こういうとこだよ…
他のページを読みつつ類推するに、
基本になるモデルを選択してデプロイしなさいね
って事なんですね。なので、
Azure OpenAI Service モデル - Azure OpenAI | Microsoft Learn
の記述を参考に、適当と思われるモデルを選択してデプロイすることにします。
モデルのデプロイ
左の”管理”の”デプロイ”をクリックし、
”+新しいデプロイの作成”をクリックして、ベースモデルを選択して名前を決めて、”作成”します。ベースモデルは、良く判らないので、”gpt-35-turbo-instruct”を選択してみました。
※ この選択で嵌まることになるのですが、この時点では露知らず
※ でもさ…とりあえず、使えりゃいいや的な感覚でやっているので、Azure OpenAI Service モデル - Azure OpenAI | Microsoft Learn の説明じゃ良く判らんのよ、実際…
こんな感じでデプロイのリストに、作成したデプロイが表示されます。
データの追加
次は、自分のコンテンツで学習させるためのデータの設定です。これも、
この説明だと、予め Azure Blob Service にデータファイル格納しとけ的な説明がなく、戸惑うのですが、先ずは学習用(カスタマイズ用)のファイルを準備します。
先ず、新しく Azure Storage Account を作成します。
作成の際の設定はデフォルトのままで構いません。名前は、”kaesaopenai” としました。”出来上がった Azure Storage Account に、”contents” という名前でコンテナを一つ作ります。
作成した contents を選択して、”アップロード”をクリックし、開いたダイアログで、アップロードするファイル群を選択し、”contents” コンテナに、PDF 化したファイル群を、アップロードします。
ちょっと寄り道
Azure OpenAI Studio のページに戻ります。DALL-E という項目が気になるので開いてみます。試しにプロンプトに、”夏の終わりの高原の風景”と入力してみると、
おー!
じゃあ、”晩夏のアンニュイなビーチで…”などと入力していくと、
こんな感じでどんどん画像が生成されました。
…等と遊んでいたら、Bing の Image Creator が使えるようになり、そちらも試してみました。
参考までに。。。
Chat にデータを追加する
閑話休題。
左のタブで”チャット”を選択して、データの追加を行うために、”アシスタントのセットアップ” の ”Add your data(preview)”を選択します。
おや?エラーが発生しました。どうやらブラウザで開きっぱなしのページでやっていたせいで、裏側で何かのセッションが切れていたようです。
このエラーは、ブラウザで別のタブで portal.azure.com にサインインして再び表示したところ、解決しました。”Add a data source feature is not supprted”…なかなかに刺激的なメッセージですが、こんな表示がでたら、慌てず、再度サインインして試してみてください。
気を取り直して、エラーが解決した画面で、”+ Add a data source”をクリックし、PDF のコンテンツ群をアップロードした Azure Blob Storage を設定します。
PDF ファイルのアップロード先は、”kaesaopenai” の ”contents” なので、それを指定したわけです。
ちなみに、Bring your own Data to Azure OpenAI: Step-by-Step Guide (microsoft.com) の様に、”Upload files”を選択しても構いませんが、この場合は、PDF ファイル群をアップロードする為の Azure Blob Storage を一から作成する事も可能です。
Azure Cognitive Search サービスを追加する
データの追加では、単に、追加するコンテンツ群の格納場所を設定するだけでなく、Azure Cognitive Search サービスの設定も必要です。
”Create a new Azure Cognitive Search service” をクリックして、作成を開始します。名前は、”kaecs4openai” とし、作成するロケーションは、 動かせるリージョンは限られているっぽいので、そのまま、”West US 2”を使う事にします。”次:スケール” ボタンをクリックしてスケールを設定するのですが、
デフォルトでは、”S:Standard”が選択されています。
う…月あたり31,998円…なかなかに良いお値段ですね…
Azure の最新機能で IoT を改めてやってみる|Knowledge & Experience|note の読者約160人分の購読料かぁ…
無料の Free もあるのですが、結論から言うと、このレベルは、Azure OpenAI Service のチャットでは選択できません。
恐る恐る、”B:基本”を選択してやってみると、ちゃんと動いたので、資金に余裕が無い、あるいは、とりあえず試したいだけの方は、”B:基本”を選択するとよいです。
”B:基本” で Azure Cognitive Search サービスを作成したら、Azure OpenAI Studio の ”Select or add data source” ダイアログに戻ります。
そもそも、”Azure Cognitive Search”って何?という方、セマンティック検索 - Azure Cognitive Search | Microsoft Learn を読むとよいです。
更に、”index” の項目に、適当な名前を入力します。今回は、”aocm” としました。
勢いあまって、次の ”Vector search” もチェックを入れてしまいがちですが、
https://learn.microsoft.com/ja-jp/azure/ai-services/openai/use-your-data-quickstart?tabs=command-line&pivots=programming-language-studio#add-your-data-using-azure-openai-studio によれば、text-embedding-ada-002 デプロイが必要とのことなので、✓を入れずに設定を進めることにします。
Azure Cognitive Search サービスについては、Microsoft Learn の説明に、
と書いてあり、Azure Cognitive Search サービス の設定で、日本語のセマンティック検索を有効にすると、更に品質の良いチャットが出来上がるようです。。。と思いきや、これは日本語訳が微妙でした。その話は、”セマンティック検索” を有効にする方法を紹介してから書くことにします。
Azure OpenAI Service 用に作成した Azure Cognitive Search サービスを Azure Portal で開き、
と、”セマンティック検索”の設定を今回は無料の Free を選択しています。ちなみに、Azure Cognitive Search サービス自体のスケール設定を Free にすると、この”セマンティック検索”は有効にできません。
しかし、言語の設定が見当たらず、これは、”Standared”を選択しないと設定できないのか?と思いつつ、月あたり約6万4千円かぁ…ということで、今回は、そのまま Free の設定でトライを続けることにします。
これについても但し書きが書いてありました。
Microsoft Learn の記述を見る限り、Free でも良いようです。
先ほどの日本語翻訳の問題についてですが、原文の英語を確認すると、
と書いてあり、要するに日本語を含む、リスト化された言語は全て対応しているので、”semantic search(セマンティック検索)”を有効化するだけで、特に言語設定は必要ないという事でした。
日本語のドキュメントは判りやすいように思えますが、誤訳とは言えないまでもミスリードする様な翻訳になっている場合もあるので、可能な限り原文にも目を通すことをお勧めします。内容はほぼ一緒なはずなので、ロゼッタストーンでも見る心持でいるとよいでしょう。
”次へ”が有効にならない!
さて、一通り、”Select or add data source” の設定は終わったのですが、
おや?”次へ”のボタンが有効にならず、先に進めません。色々調べると解決策が判りました。
具体的な解決策は、後述の説明を参照してください。
対策を講じて、設定を続けていきます。
”保存して閉じる” をクリックすると、読込が始まります。
この工程は暫く時間がかかります。終わるまで静かに待ちましょう。
質問してみた
どうやら学習が終わったようなので、早速チャットを試してみることにします。
「概念モデリングとは何ですか?”と質問してみたところ、エラーが発生してしまいました。
解決策は、後述の説明を参考にしてください。
なんやかんやらやって、問題を解決し、質問を続けると、
”概念クラスを抽出する方法を教えてください?”の質問に対して、
う~む。。。学習の効果があるのか良く判らない。。。
続けて、”概念モデリングの”ドメイン”とは何ですか?”と質問すると、
う~む。。。なんとなく、一般的なドメインの意味の様な気が。。。
めげずに、”概念モデリングにおける概念振舞モデルで使うモデルは何ですか?”という質問を続けると、
おいおい、これ、一般的な UML のモデリングなら間違ってないけど、ちゃうやろ!
更に、めげずに、もうすこしスペシフィックな質問をしてみました。
”概念情報モデルとは何ですか?”
微妙にかすった答えが返ってきました。
じゃぁということで、もっとスペシフィックな質問をしてみることにしました。
”BridgePoint で書いた概念モデルから DTDL を生成する具体的な方法を教えてください”
この文面自体が生成できるという事はある程度は、読み込ませたドキュメントの内容が反映されているようですが、リンクの URL が適切ではないのが問題です。
BridgePoint で作成した概念モデルから DTDL 定義を自動生成する|Knowledge & Experience (note.com)
とかを回答してくれないとね。
ここから先は
¥ 1,200
この記事が気に入ったらチップで応援してみませんか?