Dify(ディファイ)で高度なAIアプリケーションを開発するためには、「入力フィールド」と「変数」の理解が欠かせません。
この記事では、ユーザーからの情報を受け取るための入力フィールドの設定方法と、データを柔軟に扱うための各種変数(システム変数、環境変数、会話変数など)について、初心者にもわかりやすく解説します。
ユーザーから情報を集める「入力フィールド」
入力フィールドは、アプリの利用者がAIに指示を出すための「入力フォーム」です。開発者が事前に必要な項目を設定しておくことで、ユーザーは迷わずに必要な情報を提供でき、AIの回答精度も向上します。
利用可能なフィールドタイプ
- テキスト(Text): 短い文章を入力します(最大256文字)。名前やタイトルの入力に適しています。
- 段落(Paragraph): 長文を入力します。質問内容や文章の要約依頼などに使います。
- ドロップダウン(Select): 開発者が用意した選択肢から一つを選ばせます。モデルの挙動をパターン化したい場合に便利です。
- 数字(Number): 数値のみを受け付けます。
- 単一ファイル(File): 文書、画像、音声などのファイルを一つアップロードできます。
- ファイルリスト(File List): 複数のファイルを一括でアップロードできます。
注意: 画像や音声ファイルを処理するには、別途「外部データツール」などの設定が必要になる場合があります。
データの運び屋「変数(Variables)」とは?
ワークフローやチャットフローにおいて、ノード間(処理のステップ間)でデータを受け渡すための箱が「変数」です。変数を使いこなすことで、動的で複雑な処理が可能になります。
1. システム変数(System Variables)
Difyがあらかじめ用意している特別な変数です。すべて sys. から始まります。これらを使うことで、ユーザーIDや会話IDなどのメタデータにアクセスできます。

| 変数名 | データタイプ | 説明 | メモ |
|---|---|---|---|
sys.query | String | ユーザーが最初に入力したダイアログボックスの内容 | |
sys.files | Array[File] | ファイルパラメータで、ユーザーがアプリを使用する際にアップロードした画像を保存します。複数の画像をアップロードできます。このパラメータは今後廃止予定であり、「入力フィールド」内のファイル変数の使用を推奨します。 | 画像のアップロード機能は、アプリケーションの構築ページ右上隅の「機能」で有効にする必要があります |
sys.dialogue_count | Number | チャットフロー形式のアプリとの対話中にユーザーが持つ対話のラウンド数。各対話の後、自動的に1つのカウントが増加します。if-elseノードと組み合わせて豊富な分岐ロジックを作成できます。 例えば、Xラウンド目に到達したとき、対話履歴を振り返り分析を提供します。 | |
sys.conversation_id | String | 対話ボックスのインタラクションセッションの一意の識別子で、すべての関連メッセージを同じ対話にグループ化し、LLMが同じトピックとコンテキストに対して持続的な対話を行うことを確認します。 | |
sys.user_id | String | ユーザーID 各ユーザーがワークフローアプリを使用する際に、システムが自動的に一意の識別子を割り当て、対話ユーザーを区別します。 | 注意:Service API は WebApp で作成された対話を共有しません。つまり、同じ ID を持つユーザーでも、API と WebApp インターフェース間では独立した対話履歴を持ちます。 |
sys.app_id | String | アプリID システムは各ワークフローアプリケーションに一意の識別子を割り当て、アプリを区別し、このパラメータを使用して現在のアプリの基本情報を記録します。 | 開発能力を持つユーザー向け。このパラメータを使用して異なるワークフローアプリを特定および位置付けることができます。 |
sys.workflow_id | String | ワークフローID 現在のワークフローアプリ内に含まれるすべてのノード情報を記録するために使用されます。 | 開発能力を持つユーザー向け。このパラメータを使用してワークフロー内のすべてのノード情報を追跡および記録できます。 |
sys.workflow_run_id | String | ワークフローアプリケーションの実行ID ワークフローアプリケーション内の実行状況を記録するために使用されます。 | 開発能力を持つユーザー向け。このパラメータを使用してアプリの過去の実行状況を追跡できます。 |
2. 環境変数(Environment Variables)
APIキーやデータベースのパスワードなど、機密情報を安全に管理するための変数です。コード内に直接書かずに環境変数として設定することで、セキュリティを保ちながら異なる環境で値を共有できます。

- Secret型: 値が隠蔽され、読み取り専用として扱われます。
- String / Number型: 通常の定数として利用できます。
3. 会話変数(Conversation Variables)
チャットフロー(対話型アプリ)でのみ使用可能な変数です。セッション中ずっと値を保持できるため、AIに「文脈」を覚えさせるのに役立ちます。
例えば、ユーザーが最初に選んだ「言語設定」を会話変数に保存しておけば、その後の会話すべてでその言語設定を参照し続けることができます。値の書き込みには「変数代入ノード」を使用します。
会話変数は以下の6つのデータ型をサポートしています:
- String 文字列
- Number 数値
- Object オブジェクト
- Array[string] 文字列の配列
- Array[number] 数値の配列
- Array[object] オブジェクトの配列
AIモデルの挙動を調整する「パラメータ」
変数の設定だけでなく、LLM(大規模言語モデル)自体の振る舞いを決めるパラメータ設定も重要です。
- Temperature(温度): 0〜1の値で設定します。高いほど創造的でランダムな回答になり、低いほど論理的で一貫性のある回答になります。
- Top P: 回答の多様性を制御します。
- Presence Penalty(存在ペナルティ): 既に生成された内容にペナルティを課すことにより、同じエンティティや情報の繰り返し生成を減少させるために使用されます。パラメータ値が増加するにつれて、既に生成された内容に対して後続の生成でより大きなペナルティが課され、内容の繰り返しの可能性が低くなります。
- Frequency Penalty(頻度ペナルティ): 頻繁に出現する単語やフレーズにペナルティを課し、これらの単語の生成確率を低下させます。パラメータ値が増加すると、頻繁に出現する単語やフレーズにより大きなペナルティが課されます。パラメータ値が高いほど、これらの単語の出現頻度が減少し、テキストの語彙の多様性が増加します。
設定が難しい場合は、プリセット(「クリエイティブ」「バランス」「正確」)から選ぶだけで、目的に合ったパラメータを自動設定することも可能です。

まとめ
「入力フィールド」でユーザーの意図を正確に汲み取り、「変数」を使ってデータを適切に処理することで、Difyアプリの機能性は格段に向上します。
まずはシンプルな入力フィールドの設定から始めて、慣れてきたら会話変数を使った高度なコンテキスト管理に挑戦してみてください。
【推奨】業務システム化に有効なアイテム
生成AIを学ぶ



システム化のパートナー



VPSサーバの選定





コメント