変数とコンテキスト管理
DifyのChatflow(チャットボット向けワークフロー)では、ノード間で値を受け渡したり、会話全体の状態(コンテキスト)を保持するために「変数」を使用します。
変数の種類
Difyのワークフローでは主に以下の3種類の変数を扱います。
1) システム変数 (System Variables)
システムが自動で提供する実行時情報です。ユーザー入力やセッションIDなどが含まれます。
sys.query
ユーザー入力メッセージ
sys.files
アップロードファイル
sys.conversation_id
会話ID(セッション識別用)
sys.user_id
ユーザーID
2) ノード出力変数 (Node Output Variables)
各ノードの処理結果です。後続のノードから参照することで、フロー内でデータをバケツリレーのように渡せます。
{{#ノード名.出力変数名#}}
例:
{{#knowledge_retrieval.result#}}
{{#llm.text#}}参照の仕組み:
前段にあるノードの出力(
textやresultなど)を、後続ノードの入力欄で選択して使用します。例: 「LLMノード」の生成テキストを、「HTTPリクエストノード」の入力として使う。
3) 会話変数 (Conversation Variables)
会話(セッション)全体で値を保持・更新できる変数です。ノード出力変数はその場限りですが、会話変数は会話のキャッチボールが続いても値が維持されます。
用途:
状態管理: ユーザー情報(名前、会員ランクなど)や選択、文脈の記憶(「現在どの話題について話しているか」など)、進行状況を保持
累積情報: 複数ターンにわたる情報収集
カウンター: 質問回数などのカウント
変数の参照方法
プロンプトや入力フィールドでの参照
LLMノードのプロンプトや、各ノードの設定フィールド内で変数を埋め込みます。 DifyのUI上では、入力欄にある 「{x}」ボタン を押すか、{ を入力することで変数選択リストを呼び出せます。
条件分岐での参照
「IF/ELSE(条件分岐)」ノードで変数の値を評価し、処理を分岐させます。
例:
sys.query(ユーザー入力) に「予約」という単語が含まれているか
会話変数(Conversation Variables)の操作
1. 定義(作成)
ワークフローエディタのメニュー(通常は「開始(Start)」ノード付近や画面下部の「Conversation Variables」タブ)から変数を定義します。
設定手順
フローエディタ上部の「変数」をクリック
「+ 変数を追加」をクリック
変数名とタイプを設定
設定項目:
変数名(例:
user_name)タイプ(String, Number, Array 等)
タイプ用途文字列
テキストデータ
数値
カウンターなど
配列
リストデータ
説明(任意)
2. 更新(書き込み)
重要: 会話変数に値を保存するには、「変数割り当て (Variable Assigner)」ノードを使用します。
フロー内に「変数割り当て」ノードを追加。
「ターゲット変数」に、定義した会話変数(例:
user_name)を選択。「値」に、書き込みたい内容(例: 前段のLLMノードで抽出した名前)を設定。
3. 利用(読み出し)
他の変数と同様に、プロンプト内などで {{#conversation.user_name#}} のように選択して参照します。
実践例:ユーザー情報の記憶
ユーザーが名前を名乗った場合、それを記憶して以後の会話で利用するフロー例です。
抽出 (LLMノード)
ユーザー入力
sys.queryから名前を抽出するよう指示。出力:
extracted_name
保存 (変数割り当てノード)
会話変数
user_nameに、extracted_nameの値を代入。モード: 「上書き (Overwrite)」など。
応答 (LLMノード)
デジタルヒューマンでの活用例
ユーザー情報の保持
コンテキストの引き継ぎ
ベストプラクティス
明確な命名規則
ノード名や変数名は、後で見た時に理解しやすい英語名推奨(例:
extract_intent,user_category)。
会話変数は必要最小限に
すべてを会話変数に入れると管理が複雑になります。セッションをまたいで保持する必要がある情報(ユーザー属性、現在のステータス等)に絞りましょう。
初期値の考慮
変数が空(null/empty)の場合の挙動をプロンプト内で考慮するか、IFノードでチェックするとエラーを防げます。
参考URL
Dify 公式ドキュメント (Variables): https://docs.dify.ai/versions/3-0-x/en/user-guide/workflow/variables#variables
Dify 公式ドキュメント (Conversation Variables): https://docs.dify.ai/versions/3-0-x/en/user-guide/workflow/variables#conversation-variables
最終更新
