「モデルによるシステムの可視化とLLM」に参加してきました
2024/5/26(日)に開催された「モデルによるシステムの可視化とLLM」に参加してきたので、その内容と学んだことを共有したいと思います。
おことわり
この内容は非公式なものであり、自分なりに整理したものです。
本記事には誤りが含まれる可能性があります。
間違っている部分などがあれば、コメントいただけると助かります。<(_ _)>
まとめ
RDRAGraphのLLM機能はEmbedding(埋め込み)とSimilarity Searchを活用している
Enterprise Architectには作成したモデルをプロンプト形式で出力するアドインがある
これを活用すると影響範囲の分析や追加機能のたたき台作成など開発効率を上げることができる
本イベントについて
RDRA MeetUp主催のオフラインイベントで、今回はRDRAGraphに搭載されているLLM機能の仕組みやモデルからプロンプトに変換した情報をどう活用するかをGoogleスプレッドシートで体感する会でした。
connpassイベント文
RDRAGraphについて
RDRAGraphはRDRAモデル(※1)を可視化するツールで、無償で提供されています。
(※1)
ソフトウェア要件の全体像をシステム価値、システム外部環境、システム境界、システムという4つの視点(レイヤー)から表現したダイアグラムを組み合わせたものです。
「RDRAとはなんぞや」という方は公式サイトがあるので、そちらを見ていただければと思います。
自分なりに整理したものもあります(※2)が、RDRA公式サイトの方が詳細に書かれています。
(※2)学びや気づきがあり次第、更新しています。
RDRAGraphのLLM機能について
このRDRAGraphにはChatBot機能があり、問い合わせすると読み込ませているRDRAモデルおよびRDRAの知識をベースに回答してくれる機能です。
これによりRDRAモデルがわからない人でも、RDRAモデルの内容を容易に理解できます。
特徴はRDRAや読み込ませたRDRAモデルと関係のない質問をすると「わかりません」と回答する点です。
(どこから「わかりません」という回答にするのかという境目が難しいとのことです。)
RDRAモデルの要素を「」でくくり、スペースを空けるようにするとうまく答えてくれるとのことでした。
(問い合わせ例)
「蔵書管理」 に関連する要素をあげてください。
RDRAGraphのLLM機能のしくみを体感する
この問い合わせ機能のしくみについて、スプレッドシートを用いながら説明していただきました。
① RDRAモデルをグラフ構造化する
RDRAGraphにRDRAモデルを読み込ませたときに、グラフ構造化します。
これで問い合わせしたときに検索しやすくします。
② RDRAGraphChatBotの問い合わせ内容からRDRAモデルを検索する
問い合わせ内容をもとにRDRAモデルを検索します。
【要素がヒットした場合】
③に進みます。
【要素がヒットしなかった場合】
Embedding(埋め込み)とSimilarity Searchで問い合わせ内容に近いRDRAモデル要素を抽出します。
RDRAモデルを文書化する
文書化したRDRAモデルをベクトル化しやすくするために区切る
OpenAIを使って、ベクトル化を行う
問い合わせ内容もベクトル化を行う
3と4からSimilaritySearchを行い、類似性が高い要素を抽出する
③ 抽出した or ヒットした要素を前提知識として、OpenAIに問い合わせる
問い合わせた内容と②で抽出した要素を前提知識として、OpenAIに問い合わせます。
④ 検索結果と返答内容をRDRAGraphに表示する
抽出した要素につながるモデルと返答内容をRDRAGraphに表示させます。
EAのプロンプト出力機能の紹介
UMLやSysML等のモデル作成をサポートしているEnterprise Architectのアドインとして、作成したモデルをプロンプトに変換するものがあります。
出力例
【対象クラス図】
【出力結果】
System:
あなたは優秀なUMLのモデラ―です
UMLのローカル定義のルールに従って「UMLの定義」を解釈してください
# UMLのローカル定義のルール
「XXはYYである」、「YYは属性abcをもつ」、このとき「XXは属性abcをもつ」
「XXはYYである」、「YYにはZZと関係がある」、このとき「XXもZZと関係がある」
「XXはYYに依存する」は「YYはXXに依存される」、このとき「YYが変更された時はXXは影響を受ける」が「XXが変更されてもYYは影響を受けない」
「XXとYYは全体と部分の関係である」は「YYはXXの構成要素でる」、このとき「XXとYYは構造を表す」
「ZZから見てWWは「OO」の役割をもつ」は「ZZのOOの実態はWWでる」
「ZZはWWに関係するがWWはZZに関係しない」は「ZZからWWへの一方向の関係である」
User:
# 「三段論法」は、「B」「D」「XYZ」で構成されている
## 概念:A
### Aのステレオタイプは「Metaclass」である
### Aは属性として以下のものを持つ
#### id
#### abc
#### idのステレオタイプは「key」である
### AとCは全体と部分の関係である
### AとDは全体と部分の関係である
## 概念:B
### BはAである
## 概念:C
## 概念:D
### DはCに依存する
### DはBを利用する
### Dから見てBは「b」の役割をもつ
## XYZは「C」「A」で構成されている
# 「UMLのローカル定義のルール」の知識だけ使って「三段論法」に対する問合せに答えてください
答えはシンプルにしてください
それでは問合せにを待ってください
これを活用するとクラス図の記法を理解していなくても、どんなことが書いてあるかわかりやすくなります。
スプレッドシートで体験
設定した情報からプロンプトが生成するスプレッドシートを使って、EAのアドイン機能を体験しました。
【設定した情報】
モジュール(振る舞い)
状態
構造(データ関係の定義)
データ定義
ChatGPTにいろいろ問い合わせると設定した情報をもとに回答してくれました。
【問い合わせたもの】
○○状態になる条件は?
○○状態にするモジュールと機能は?
○○処理ではどのデータを更新するのか?
○○状態の時のデータの関係は?
○○の処理内容は?
LLMをどう活かすのか
最後に神崎さんからLLMを開発にどう活用するかの仮説を共有していただきました。
このセッションでは人はどこに携わるのか、妥当性確認や検証はどこで行うと良さそうなのかといろいろな議論が飛んでいました。
所感
LLMに関してはChatGPTを少し触っていただけでしたが、今回でRDRAGraphのLLMがどのように動いているか理解できました。
LLMの知識も必要ですが、言語化する力も必要になるなと感じる勉強会でした。
また勉強会では触れなかったですが、RDRAモデルをプロンプトに生成してくれるスプレッドシートがあり、これなら社内で使えるなと思ったので早速使いたいと思います。(使えました!!)
懇親会もRDRAのお話やテストカタマリのお話を聞けてとても有意義でした。
(蟹もおいしかったですし、男心くすぐるものが多かったですw)
参考ページ
RDRAについて
RDRA MeetUpについて
Enterprise Architect
おまけ
RDRAGraphツールでAPIキーを設定して、ChatBotを試しました。
試した結果、RDRAモデルの検索と表示までは進んだのですが、応答が返ってきませんでした。
Error: 404 The model `gpt-4-turbo` does not exist or you do not have access to it.
APIキーの作り方が良くなかったのかもしれないので、いろいろ調べます。。