前回(第59・60話)は、自分で「変数」を作って、ビールを数えるカウンターを実装しました。 「変数を作るのって、結構大変なんだな……」 そう思った方も多いのではないでしょうか?
実は、Difyには**「自分で作らなくても、最初から用意されている変数」がたくさんあるんです。 これらは以前は「開始ブロック」の中にありましたが、最新のバージョンでは画面右上の「{x}」マーク**の中に格納されています。
今回は、知っているだけで開発が楽になる**「Difyからの無料プレゼント(システム変数)」を使って、「最初は厳しいけど、徐々に優しくなる英会話ボット」**を作ってみましょう。
1. 宝の山は「{x}」の中にあり
チャットフロー編集画面の右上にある「{x}」マーク。 ここをクリックすると、「変数」の一覧パネルが開きます。
前回、私たちはここで「会話変数(Conversation Variables)」を作りましたが、その下をよーく見てください。 「システム変数(System Variables)」 という項目がありませんか?
ここに、sys.query や sys.dialogue_count といった謎の英語が並んでいます。 これらは**「設定不要で、最初から勝手にデータを取っておいてくれる機能」**なんです。
2. 特に使える「システム変数」2選
この中から、特によく使う2つを紹介します。
① {x} sys.query (ユーザーの言葉)
- 正体: ユーザーがチャット欄に入力した「テキスト(文字)」そのものです。
- 使い道: LLMに「ユーザーの言ったことに答えて」と指示する時、無意識にこれを選んでいるはずです。実はこれも変数の一種だったんですね。
② {x} sys.dialogue_count (会話ターン数)
- 正体: 「今、何往復目の会話か?」を表す数字です。
- 1回目の会話 ➡
1 - 2回目の会話 ➡
2 - ……と、自動で増えていきます。
- 1回目の会話 ➡
今回は、この sys.dialogue_count を使って、**「会話が長引くと態度が変わるAI」**を作ります。
3. 実践:最初は厳しく、後は優しく。「ツンデレ英会話ボット」を作ろう
ここからは実践です。 **「最初はスパルタだけど、何度も質問して頑張っていると優しくなる英会話の先生」**を作ってみましょう。
これを作れば、AIに「空気を読む(ユーザーの努力を認める)」能力を与えることができます!
手順1:運命の分かれ道(IFブロック)を設置
いつもの「チャットフロー」を用意し、「開始」ブロックの次に**「条件分岐(IF/ELSE)」**ブロックを追加します。
ここで、さきほどのシステム変数の出番です!
- 変数: リストの
sys.から始まる部分にあるsys.dialogue_countを選びます。- (※変数の選択リストでも、システム変数は下の方にあります)
- 記号:
≧(以上) - 値:
4
【設定の意味】
- 4回以上(IF): 会話が4ターン以上続いている ➡ 「頑張ってるね(デレ)」ルート
- それ以外(ELSE): まだ会話が始まったばかり ➡ 「甘えるな(ツン)」ルート

手順2:二人の先生(LLM)を用意する
分岐した先に、それぞれ 「LLM」ブロック をつなぎます。 ここが一番楽しいところです!それぞれのAIに違う「演技指導(プロンプト)」をしましょう。
ルートA:スパルタ先生(ELSE / 3回目まで) まだ会話は序盤です。甘やかしてはいけません。
- つなぐ場所: 条件分岐の 「ELSE(下)」
- システムプロンプト:Plaintext
あなたは「超スパルタな英語教師」です。 ユーザーが甘えた質問をしてきても、絶対に答えを教えないでください。 「自分で考えなさい!」「甘えるな!」と厳しく突き放し、ヒントも出し惜しみしてください。
ルートB:優しい先生(IF / 4回目以降) 4回もラリーが続きました。ユーザーは困っているか、頑張っています。ここで優しくします。
- つなぐ場所: 条件分岐の 「IF(上)」
- システムプロンプト:Plaintext
あなたは「とても優しい英語教師」です。 ユーザーは何度も挑戦して頑張っています。 「よく頑張りましたね!」「ここが難しいですよね」と共感し、 分かりやすいヒントや、答えを優しく教えてあげてください。

手順3:いざ、授業開始!(テスト実行)
さあ、AIの態度の変化を楽しみましょう。 ちょっと難しい英語の質問(例:「see, look, watch の違い」など)を投げかけてみてください。
1ターン目(スパルタ)
- 自分:「see と look と watch の違いを教えて」
- AI:「甘えるな!そのくらい自分で辞書を引け!『意識して見るかどうか』の違いだ。それ以上は自分で考えろ!」 (うわっ、ヒントだけで突き放された……!)
2ターン目(スパルタ)
- 自分:「もう少し詳しく……」
- AI:「ダメだ!すぐに答えを聞こうとするな!自分の頭を使え!」
3ターン目(スパルタ)
- 自分:「全然わからないよ……」
- AI:「努力が足りない!出直してこい!」
4ターン目(優しい)
- 自分:「どうしてもわかりません。教えてください……」
- AI:「何度も諦めずに食らいついてきましたね。素晴らしいガッツです。 違いは『意識』にあります。 ・See:自然に目に入ってくる(見える) ・Look:意識して視線を向ける(見る) ・Watch:動いているものを注視する(観る) この違いですよ。よく頑張りましたね!」
(急にデレた!!)

まとめ:「あるものは使う」が鉄則
おめでとうございます! これで、あなたのAIは**「会話の長さ(ユーザーの努力量)」**に応じて態度を変えることができるようになりました。例えばコールセンターで
チャットの回数に応じて対応を変えるという事もできます。今までのチャットボットよりも
ワンランク上のチャットボットができるでしょう!
- 自分で変数を作る: ビール杯数など、独自のデータを扱いたい時。
- システム変数を使う: 会話回数やユーザーIDなど、基本的なデータを使いたい時。
この使い分けができれば、開発の手間がグッと減ります。 「作る前に、右上の {x} を探す」。これがDify上級者への近道です!
次回は…… 基礎パラメータを理解したところで、次こそは外部の世界へ飛び出します! AIに「Google検索」の能力を与える**「Tavily Search(タビリー・サーチ)」を使って、「最新のニュースを調べて記事にするボット」**を作りましょう。 情報の鮮度が命のブログ運営には必須の機能です!


コメント