見出し画像

#11 【Dify入門(ノード編)】 パラメーター抽出ノード

今回はDifyのパラメーター抽出ノードについて解説いたします。
パラメーター抽出ノードを使いこなすことで、自然言語の中から必要な値を抽出することができるようになります。
パラメーター抽出ノードをうまく使えていないという方がいれば、参考になれば嬉しいです。

パラメーター抽出ノードって何?

ユーザーが入力したテキスト(自然言語)から条件に一致したデータを抽出し、パラメーターに設定することができるノードです。
Difyのノードは基本的に型の決まった入力を要求し、操作も一定のルールが決まっています。しかし、このノードはLLMが推論しユーザーが入力したキーワードからパラメーターを抽出するため汎用性が高い利用が可能となります。

パラメーター抽出ノードの設定方法

①使用するLLMのモデルを設定
パラメーター抽出を実行するモデルを選択します。
性能の低いモデルを選択すると、複雑な抽出はうまくいかない場合があるので処理内容に適したモデルを選択する必要がある。
僕は4o-miniや4oを使うことが多いです。

②入力変数の選択
入力変数は、抽出するパラメーターの元となるテキストです。
ユーザーが入力した情報やLLMがアウトプットした情報などを設定します。

③パラメーターを抽出
ここでメインとなる抽出するパラメーターを設定します。
テキストの中から名前を抽出する場合は、
名前:name
タイプ:String
説明:ユーザーの名前
のように設定します。

タイプは
String:文字列
Number:数字
Array[String]:配列(文字列)
Array[Number]:配列(数字)
Array[Object]:配列(オブジェクト)
の5種類から選択できます。

④指示(プロンプト)
抽出する内容を理解するための指示を記載します。
できるだけわかりやすく、どういう項目を抽出するのかを記載することで、パラメーター抽出の精度が向上します。

⑤高度な設定
高度な設定にはメモリと推論モードの2種類を設定が可能です。
僕個人は普段特に設定していません。
もし、こういう時役に立つよという事例があれば教えてください。

メモリ:直前のやり取りを記憶する
推論モード:2種類の推論方法
①関数/ツール呼び出し
効率的ですが、状況によっては正確さや柔軟性が低い場合があります。
②プロンプト方式
自然言語の理解を活かし、複雑な処理でも良い結果を出せることがあります。

パラメーター抽出ノードの利用例

これは英語で入力された内容を日本語に変換し、メール送信に必要なパラメーターを抽出。そしてメール送付するまでのワークフローです。
英語、日本語など言語に関係なくパラメーター抽出可能なので、使い道は無限大と思っています。
※このワークフローのサンプル欲しい場合は連絡ください。

パラメーター抽出ノードを使う際のポイント

①指示にプロンプトを記述することで抽出の安定性が向上

指示(プロンプト)を書かなくてもパラメーター抽出ノードの利用自体は可能です。
ただ、指示(プロンプト)を書いてあげることで格段に抽出クオリティが上がるので書くことをオススメします。

②必須判定は入力の有無ではない

各抽出パラメーターの必須項目は、モデル(AIやシステム)が推論や判断を行う際の参考情報として使われるだけであり、実際にパラメーターの出力を検証して「必須項目があるかどうか」を厳密に確認する目的ではありません。
そのため、必須にチェックを入れていても空で次のステップに進むこともあります

③入力有無の判定は条件分岐ノードを使用

②で述べたように、各抽出パラメーターの必須にチェックを入れても中身が空のままの場合があります。
後のステップで確実にパラメーターを受け取る必要がある場合は、必ず条件分岐ノードを使用して中身が空でないことを判定する必要があります。
条件分岐ノードについてはこちらで詳しく解説しています。

まとめ

この記事ではパラメーター抽出ノードについて説明しました。
これまで自然言語からの抽出は複雑な要件が必要でした。
しかし生成AIの発達により、簡単に実現可能となっています。

関連記事

1. 【Dify入門(ノード編)】開始ノード
5. 【Dify入門(ノード編)】ナレッジ検索(知識検索)ノード
7. 【Dify入門(ノード編)】条件分岐ノード
11. 【Dify入門(ノード編)】パラメーター抽出ノード

補足

XではDifyに関するアップデート、最新情報を発信しています。
もしnote内でわかりづらい所や、もっと知りたい箇所があればDMでも構いませんので連絡いただければと思います。

いいなと思ったら応援しよう!