【最新】Difyのワークフローで使えるコードブロックまとめ(2024-09-11)
ワークフローがだいぶ使えるようになってきましたので、コードブロックをまとめてみました。
手持ちのカード(ブロック)でなにが作れるかで、遊んでいるような気になり、楽しくなります。
説明内容ですが、もしかしたら、間違っているところがあるかもしれません。ご容赦ください。
とくに入力型と出力型は、使っている時の記憶で書いているので、他の型もOKな場合があるかもしれませんので、参考程度にしてください。
変数の型を書いたのは、型がブロック間で合ってないとエラーになるので、かなり気をつけないといけないからです。
1. LLM
機能: 大規模言語モデル(AI)に対して処理を依頼し、結果を得る
入力: string/コンテキスト
出力: string
注意点: コンテキストはナレッジのこと
APIKEYを設定すると、選べるAIが豊富になります。
2. 知識取得
機能: 事前に登録されたナレッジ(知識ベース)から情報を取得し利用する
入力: string(データに対してのクエリのことです)
出力: オブジェクト
注意点: 事前にナレッジデータの登録や設定が必要
エンベッティング、セマンティックサーチの設定などもありますが、それがまたとても簡単です。
3. 終了
機能: ワークフローの終了を表示するか、最終的なデータを取得する
入力: any
出力: any
注意点: 表示する場合はstringであることが必要
ワークフローをAPIとして利用する場合、出力の型をカスタマイズできます。
4. 質問分類器
機能: AIを使用して入力を分析し、適切な処理分岐を判断する
入力: string
出力: クラス名(string)
注意点: AIの判断によるということ
シンプルな機能です。設定も簡単です。「IF/ELSE」が使えないケースで使うのがよいでしょう。
5. IF/ELSE
機能: 条件に基づいて処理を分岐させる
これは通常のプログラム処理です。AIと違って切れ味抜群。
6. イテレーション
機能: 配列の要素に対して繰り返し処理を行う
入力: array
出力: array
注意点: 配列が最初に必要。繰り返しなにをするのかをブロックで選ぶ必要があります。他よりブロックが大きくなります。
7. コード
機能: PythonまたはJavaScriptのコードを実行し、結果を得る
入力: any
出力: any
注意点: 利用ライブラリに制限あり
コードでなんでもかけます。コードに頼りすぎると、このノーコードツールの意味がないので、仕方ない時に使います。でも、出番は結構あるかと。
8. テンプレート
機能: 事前に定義された文字列やコードのテンプレートを使用して、動的にコンテンツを生成する
入力: any
出力: string
いろいろな書き方があるので、一度マニュアル見てもいいかと。
シンプルな書き方だと、マニュアルなしでも書けます。
9. 変数集約器
機能: 複数の変数をまとめて一つの変数として扱う
入力: any
出力: any
シンプルです。分岐した後に変数をまとめるのに使うのがよいでしょう。
10. 変数代入
機能: チャット内での一時的な情報を変数として保存する
注意点: ワークフローではまだ使えない
調べましたが、チャットフローなどで使えるみたいです。「会話記憶」などで。ワークフローでは使えないようです。
11. パラメーター抽出
機能: AIを使用してテキストから特定の情報やパラメーターを抽出する
入力: string
出力: string/array
注意点: プログラム的ではなくAIに依頼していること
最初はプログラム的にJSONデータから、キー名などでデータを抽出するのかと思ったら、AI頼みのツールでした。楽でいいです。
12. HTTPリクエスト
機能: 外部APIにリクエストを送信し、レスポンスを取得する
入力: any
出力: any
無茶使いでありますよね。他のノーコードツールにも繋げられますし、GASにも繋げられますね。
自分なりの制作時のコツ
変数名は自分にわかりやすくつける
ブロック名もそのままではなく、カスタマイズしておいた方が判別しやすいかもです。終了は、outputなどの変数が必要
なにも入れないと、なにも取得したり、表示してくれないです。ノード間のつながりは、変数の型が一致する必要があり
stringとarrayがよく使うので、これを区別してください。
-- arrayをstringにするには、「テンプレート」を使うと簡単(汎用的に使える)
-- stringをarrayにするには、「パラメーター抽出」を使うと便利(個別に指定が必要)困った時はLLMで処理する
「質問分類器」「パラメーター抽出」はLLMでやっています。
少し時間がかかるけど、AI(LLM)でうまくやるように依頼するのもありです。要所要所では、出入力値を見て、「コード」で整形する必要があるかもしれません。ブロック間のつながりで、型変換したい時などの細かい修正処理にコードを使うことがありそうです。
子供がブロックを組み合わせて、車や飛行機やいろんなものを自由に作って遊ぶのと、変わらないような楽しさがありますね。Difyって。