Difyにおける変数代入とは?
コンピューターってすごく本当に頭がいいと思いませんか?
でもコンピューターは一つのことをやった後に次のことをやりはじめると前にやったことを忘れてしまいます。
これはDifyも同じです。
忘れてほしくない情報はDifyの場合、会話変数の中にキチンと保存する必要があります。
保存する方法をDifyでは変数代入というブロックを使います。


変数代入を使うことによりキチンと大切なことを覚えておいてくれます
変数代入ノードを使うことにより新たに情報を上書きしたり、追加したり、削除したり自由に情報をアップデートできます。
情報の保存方法は3種類あります。
- Overwrite (上書き): ソース変数の内容を会話変数に上書きします。
- Append (追加): 配列型の会話変数に新しい情報を追加します。
- Clear (クリア): 会話変数の内容をクリアします
変数代入の具体的な方法:ノードの設定と操作モード
変数代入は、ワークフロー編集画面で**「+」アイコン > 変数の代入」を選択して変数代入ノード**を追加することで利用できます。


変数代入ノードでは、主に以下の設定を行います。
- 変数: 値を代入する会話変数を選択(または新規作成)
- ソース変数を設定: 代入する値の取得元となる変数を選択
- 操作モード: データの操作方法を選択(データ型によって選択肢が変化)
データ型と操作モードの用途別設定
変数代入ノードでは、変数のデータ型に応じて、様々な操作モードを選択できます。
データ型 | 操作モード | 説明 |
---|---|---|
文字列型 (String) | 上書き (Overwrite) | ソース変数の値で対象変数の値を置き換えます。 |
クリア (Clear) | 対象変数の値を削除します。 | |
設定 (Set) | 手動で入力した値を対象変数に割り当てます。 | |
数値型 (Number) | 上書き (Overwrite) | ソース変数の値で対象変数の値を置き換えます。 |
クリア (Clear) | 対象変数の値を削除します。 | |
設定 (Set) | 手動で入力した値を対象変数に割り当てます。 | |
算術 (Arithmetic) | 対象変数に対して、足し算、引き算、乗算、割り算を行います。 | |
オブジェクト型 (Object) | 上書き (Overwrite) | ソース変数の値で対象変数の値を置き換えます。 |
クリア (Clear) | 対象変数の値を削除します。 | |
設定 (Set) | 手動で入力した値を対象変数に割り当てます。 | |
配列型 (Array) | 上書き (Overwrite) | ソース変数の値で対象変数の値を置き換えます。 |
クリア (Clear) | 対象変数の値を削除します。 | |
追加 (Append) | 対象変数の配列に新しい要素を追加します。 | |
拡張 (Extend) | 新しい配列を対象変数に追加し、一度に複数の要素を追加できます。 |









操作モードはデータ型によって変わるので注意!用途に合わせて選びましょう。
操作モード例:具体例で理解を深める
- 例1:ユーザー名の保存
文字列型の変数 user_name に、ユーザーが入力した名前を保存する場合、操作モードは「上書き」 を選択します。 - 例2:カウントアップ
数値型の変数 count の値を1ずつ増やしたい場合、操作モードは「算術」 を選択し、演算子を**「+」、値を「1」** に設定します。 - 例3:商品リストに追加
配列型の変数 items に新しい商品を追加する場合、操作モードは「追加」 を選択します。
エスケープ機能:LLM出力を配列にする
LLMノードの出力を配列型の変数に代入する際、エスケープ機能を使うことで、出力形式をarray形式に変換できます。
例えば、LLMノードの出力が {“name”: “apple”, “price”: 100} という形式の場合、以下のように記述することで配列に変換できます。
{{#each outputs.llm_output.result as |item|}}
{
“name”: “{{item.name}}”,
“price”: {{item.price}}
}
{{/each}}



LLMノードと組み合わせる時は、エスケープ機能が便利!です
変数代入のメリット:チャットボットを賢くする理由
変数代入を活用することで、チャットボットには3つのメリットがあります。
- パーソナライズされた応答: ユーザーの属性や過去の会話履歴に基づいた、一人ひとりに最適化された応答を生成できます。
- 例: 過去の購入履歴からおすすめ商品を提案します。
- 動的な会話フロー: 会話変数の値に応じて会話の流れを柔軟に変化させ、状況に応じた対話を実現できます。
- 例: ユーザーの年齢層によって異なる会話スクリプトに分岐します。
- 効率的な情報管理: ユーザー情報や会話履歴を変数で一元管理することで、必要な情報に素早くアクセスし、スムーズな対応が可能です。
- 例: 過去の問い合わせ内容を参照して、迅速なサポートを提供します。



変数代入は、ユーザー体験を向上させるための必須テクニックです!
変数代入の注意点:3つのポイント
変数代入は強力な機能ですが、利用にあたっては以下の3つの注意点があります。
- データ型: 変数に格納する値のデータ型を正確に設定しましょう。
- 変数のスコープ: 会話変数はワークフロー全体で共有されます。変数の値を変更する際は、他のノードへの影響を考慮する必要があります。
- 容量制限: 会話変数には容量制限があります。大量のデータを保存する場合は、外部データベースとの連携や、LLMによる要約を検討しましょう。
変数代入の活用事例
変数代入は、様々なユースケースで活用できます。
- ユーザーの好みを記憶: 好きな色や食べ物を記憶して、おすすめを提案できます。
- 会話履歴の管理: 過去の会話内容を記録し、一貫性のある会話を実現できます。
- 多段階の質問: 複数の質問を順番に行い、回答を変数に保存して複雑な処理を実行できます。
- 条件分岐: 変数の値でシナリオを分岐させ、ユーザー一人一人に最適なパーソナルな体験を提供できます。
これらの活用例はほんの一例です。
変数代入をマスターすることで、アイデア次第で様々なチャットボットを開発できます。