makeを使ってNotionのdatabase itemsからLLMをチューニングするためのデータセット(JSONファイル)を作ってみたい
内部の情報をもとにしたAIチャットぼっとを試作する際に利用するためのデータセットのサンプルとして、Notionのデータベースのアイテムを利用してみます。
想定するシナリオですが、
- 人間がよくある質問集 といったものをNotionのデータベースを使って登録している
- makeでNotionのデータベースをウォッチ
- 抽出したアイテムの情報を使ってデータセットを作成する
になります。
前提
- makeにサインアップ済み
- NotionのIntegrationを作成している
- NotionのInternal Integration Secretを発行している
Notionのデータベースをmakeに表示できるようにする
Notionのインターナる接続の場合、デフォルトではデータベースIDフィールド>検索オプションにデータベースは表示されません。Notionアカウントから手動でMakeアプリに追加する必要があります。
Makeに追加したいNotionのデータベースに入り、右上の...
をクリックし、接続の追加をクリックし、
以前作成したIntegrationを検索してクリックし、確認をクリックします。
Limitには、1回の実行で
makeのシナリオ作成
シナリオを新規作成し、Notionのアプリケーションを追加します。
トリガ−となるモジュールを追加
ここでは、Notionのデータベースに登録されるアイテムを監視するモジュールを追加します。
Watch Database Items
を選択します。
Notionへの接続設定を追加します。
ADD
をクリックすると、詳細画面が立ち上がるので、
Connection type を Notion internal
にし、接続名と、前提条件であるNotionのInternal Integration Secret
をコピーしたものを貼り付けます。
データベースのウォッチ条件を選択します。アイテムが作られた時間か、更新された時間か のどちらかになります。
ウォッチするDatabase ID
がわかっているのであれば入力します。
検索することもできるますので、出てきたデータベースを選択しましょう
Limitには、1回の実行で処理する最大数を入力します。
Array Aggregator モジュールを追加
Array AggregatorモジュールをNotionモジュールの後に接続します。
モジュールのセットアップで、Source Moduleで追加しているNotionモジュールを選択する。他のフィールドはそのままにしておきます。
Json作成のモジュールを追加
Array Aggregatorモジュールの後にJSON > Create JSONモジュールを接続します。
モジュールのセットアップには、JSON形式を記述するデータ構造が必要です。
Create a data structure
ボタンをクリックして、データ構造のセットアップを開きます。
このデータ構造を作成する最も簡単な方法は、JSONサンプルから自動生成することです。
Generator
ボタンをクリックし、JSON サンプルを Sample data フィールドに貼り付けます。
複数のデータを扱うため、配列にしたJSONを使用.
サンプル)
{ "faq":[ { "id": "ID", "product": "Product", "input": "Input", "instruction": "Instruction", "output": "Output" } ] }
保存をクリックする。データ構造セットアップの仕様フィールドに、生成された構造が含まれるはずです。
Data structure name
を適切なものに変更しておきましょう。
保存後、JSONモジュールのセットアップで、ルート配列属性に対応するフィールドがマッピング可能に表示されるようになりました。
フィールドの横にあるMap
ボタンをクリックして、
Array Aggregatorモジュールから出力されたアイテム(Array[]
)を、このモジュールに渡します。
その後、OKを押してJSONモジュールのセットアップは完了です。
Array Aggregatorモジュールの更新
Array Aggregatorモジュールのセットアップを開きます。
Target structure type
をカスタムから、先ほど作成したJSONモジュールのフィールドに変更します。
notionモジュールから出力された項目を適切なフィールドにマッピングします
OKをクリックして Array Aggregator モジュールのセットアップを終了します。
シナリオを実行してみる
Run Once
を押して、作成したシナリオを実行し、JSONとして出力されているか確認します。
設定通りにOUTPUTされるようになるはずです。
JSONモジュールで作成したJSONは、 HTTPリクエストのボディとして使用したり、Webhookのレスポンスとして返したりすることができます。
ファイルとして保存することも可能ですので、今後の使い方によってどのように扱うかを決めていきましょう。
※ 今回のようにJSONに変換するモジュールはシナリオの最後のモジュールではあってはならないと警告が出ます。
※ 今回はGoogle ドライブに保存するようにしてみました
~~~~~~
LLMのトレーニング用データセットとして使うため(質問応答のようなタスクに使うには、モデルの性能向上のためInstruction-tuningという方法を使うといいらしい)、 Notionのデータベースにまとめていった情報を自動的にjsonファイルにしてみました。
今回は新規の作成しか試せていませんが、データ元となるNotionの方で更新があったり、削除された時の出力も考えないといけませんね。