見出し画像

Notion AI と形式仕様記述

Notion AI と呼ばれる最新鋭の技術が正式リリースされました。そこで今回は、それを使って「形式仕様記述言語 VDM-SL(Vienna Development Method Specification Language)」の記述を自然言語で説明させてみたいと思います。VDM-SLは、非技術者には読みづらいので、それを自然言語で説明する試みをしてみたのです。また、ChatGPT、BingGPT といったものの出力とも簡単に比較してみました。

(すみません、今回はあまりローテクな話ではありません)

以下のコードは形式仕様記述言語 VDM-SL による記述の一部です。ここでは商品券にまつわるデータ型を types セクションで定義しています。

types
	券種型 = <共通券>|<専用券>;
	商品券型 ::
		商品券媒体 : 商品券媒体型
		商品券額面 : 金額型;

	商品券媒体型 = <電子>|<紙>;
	商品券セット型 ::
		商品券媒体 : 商品券媒体型
		商品券構成 : set of 商品券型
  inv ts == ts.商品券媒体 = <電子> ==> forall t in set ts.商品券構成 & t.商品券媒体 = <電子>;

これを Notion AI に書き込んで、「商品券セット型」の不変条件(inv ts … の部分)を説明して欲しいと依頼すると ... 以下の説明が返って来ました。

この制約条件は、商品券セットが電子である場合、商品券セット内のすべての商品券も電子である必要があるという条件を表しています。つまり、商品券セットが電子である場合、紙媒体の商品券は含まれることができず、すべての商品券が電子媒体である必要があります。

Notion AI の出力

Notion AI が VDM-SL をどれくらい知っているかはわかりませんが(おそらく公式には知らない筈です、コードスニペットには表示されないので)、とりあえずこの説明は正しいですね。しかもVDM-SL という言語にひきずられず、内容を普通に文章で説明しています。 立派なものです。

ところでNotion AIの 中身は OpenAI の GPT の筈ですが、ChatGPT に聞くと、以下のようにややコードに近い回答を返して来ます。

不変条件(invariant)は、データ型のオブジェクトが常に保持すべき性質を定義するものです。このコードでは、商品券セット型の不変条件が定義されています。

具体的には、商品券セット型のオブジェクトの商品券媒体が電子である場合、そのセット内のすべての商品券型の商品券媒体も電子でなければならないという条件が定義されています。これは、商品券媒体が一致しない商品券を同じセットに入れることができないようにするための条件です。

このように、不変条件は、データ型のオブジェクトが予想どおりの状態を保持していることを保証するために役立ちます。

ChatGPTの出力

大部分のお客さんは VDM-SL を読みたくない筈ですので、お客さん向けの説明資料の叩き台には(少なくともこの例に関しては) Notion AI のものを使った方が良さそうかもしれませんね。

いろいろと試行中ですが、いずれにせよ、記述を厳密にしておいてそれを「説明」させるという用途はなかなか便利かもしれません。両者の違いは、GPT のバージョン違いや Notion によるチューニングの違いが効いているのかもしれません。

ついでなので BingGPT (Edge + Bing + OpenAI チャット)にも聞いてみましょう。

VDM-SLのコードにおける不変条件とは、型や状態が常に満たすべき論理式のことです。不変条件を記述することで、仕様の正当性や一貫性を検証することができます。
あなたが示したコードでは、商品券セット型というレコード型を定義しています。この型は、商品券媒体と商品券構成という二つのフィールドを持ちます。不変条件は、tsというパターンでこの型の値を受け取り、以下の条件式を返します。
ts.商品券媒体 = <電子> ==> forall t in set ts.商品券構成 & t.商品券媒体 = <電子>
この条件式は、「もしtsの商品券媒体が<電子>ならば、tsの商品券構成に含まれるすべてのtについて、tの商品券媒体も<電子>である」という意味です。つまり、電子的な商品券セットには紙製の商品券が混ざっていないことを保証する不変条件です。

BingGPTの出力

間違ってはいませんが、やはりコード寄りの説明になっていますね。

このことから想像されるのは、VDM-SL のコードを解説させた場合

  • ChatGPT, BIngGPT ... 開発者(設計者)向けの説明

  • Notion AI ... 要求を出した側向けの説明

を生成する傾向があるのかもしれません。とはいえプロンプトの出し方で色々と出力も変わってくる筈ですし、たった一つの例だけでは何も言えないので、引き続き色々試してみる予定です。

なおユーザーの入力を学習に使わないと明言しているのは Notion AI だけなので、機密性の高い仕事目的には Notion AI を使うことになるのかもしれません。

追伸:最初の段落は note AIアシスタント(β) を使って生成し編集しました
冒頭の画像:UnsplashTeam Nocoloco


この記事が気に入ったらサポートをしてみませんか?