前回(第58話)は、ブログにAIチャットボットを住まわせることに成功しましたね。
自分のサイトでAIが動いているのを見ると、「開発者」になった実感が湧いてきませんか?
さて、今回は**「Dify中級者への登竜門」**とも言える、非常に重要な機能に挑戦します。
それは、AIに「正確な記憶(数字)」を持たせることです。
実は、今のままだとAIは**「数字を数える」のが大の苦手なんです。 今回は、AIの弱点を補う最強の武器「会話変数(Conversation Variable)」を使って、「飲みすぎ防止!ビール杯数カウンター」**を作ってみましょう。
これができれば、あなたはもう「AI利用者」ではなく「AIエンジニア」の仲間入りです!
1. 衝撃の事実:AIは「数字」を覚えられない?
「え? AIってこれまでの会話を覚えてるんでしょ? なんでわざわざ『変数』なんて難しい設定をするの?」
そう思いますよね。
実は、DifyのAI(LLM)が持っている記憶は、人間でいうと**「ほろ酔い状態の記憶」なんです。 会話の雰囲気や文脈はなんとなく覚えていますが、「今、ビールが何杯目で、合計いくらか?」といった正確な数字の維持**が大の苦手です。
例えば、「ビールおかわり!」と言い続けると、最初は「2杯目ですね」と言ってくれますが、会話が長くなると「えーっと、たくさん飲みましたね!」と誤魔化したり、「たぶん5杯目くらい?」と幻覚を見たりします。
そこで登場するのが、**シラフの記録係=「会話変数」**です。
2. 徹底比較:「LLMのメモリ」と「会話変数」
この2つは、役割が全く違います。
| 機能名 | イメージ | 得意なこと | 苦手なこと |
| LLMのメモリ (Context) | 「会話の議事録」 (スクロールして見る履歴) | ・文脈を理解する ・「さっきの話だけど…」に対応する | ・正確なカウント (1+1=2) ・長期間の情報の保持 ・計算 |
| 会話変数 (Conversation Var) | 「スコアボード」 (常に書き換えられる数字) | ・正確に数を数える ・「Yes/No」の状態管理 ・情報の永続化 | ・文脈の理解 ・曖昧な情報の処理 |
結論
- おしゃべりは「メモリ(文系脳)」に任せる。
- 数字や大事な記録は「変数(理系脳)」で管理する。
この**「二刀流」**こそが、アプリ開発の極意です。
3. これがないと作れない!会話変数が活躍するシーン
「ビールカウンター」以外にも、こんな場面で必須になります。
- 積み上げ計算(カウンタ・合計)
- クイズ大会:「正解するたびに +10点」
- 家計簿:「使った金額を予算から引いていく」
- ダイエット:「食べたカロリーを足していく」
- 状態管理(フラグ)
- 会員サイト:「この人は『プレミアム会員』か? (True/False)」
- ゲーム:「『勇者の剣』を手に入れたか?」
- 情報の引き継ぎ
- 予約システム:会話の中で聞いた「名前」と「日付」を、最後まで忘れずに保持して予約メールを送る。
4. 実践:最強の「飲みすぎ防止カウンター」を作ろう
理屈がわかったところで、実際に手を動かします。
**「注文が入るたびに、数字に1を足す」**という仕組みを作ります。
ステップ1:アプリの作成
- Difyホームで 「最初から作成」 > 「チャットフロー(Chatflow)」 を選択します。
- ※今回は「チャットボット」ではなく、より高度なことができる**「チャットフロー」**を選んでください!
- 名前:
ビールカウンター

ステップ2:会話変数(ロッカー)を用意する
まずは数字を入れておく「場所」を作ります。
- 画面の右上にある 「{x}(または{ENV})」 マークをクリックします。
- (ここをクリックすると、右側に「会話変数」というパネルが開きます)
- パネルの中にある 「変数を追加」 をクリック。
- 以下の通りに入力します。
- 変数名:
beer_count(半角英数推奨) - タイプ:
Number(数字) - 説明:
飲んだビールの杯数
- 変数名:
- 「保存」 をクリック。
これで、初期値「0」が入ったロッカーが設置されました。

ステップ3:変数代入(計算機)を設置する
ここが一番の山場です!「1を足す」という処理を作ります。
- 「開始(Start)」 ブロックの後ろにある 「+」 をクリック。
- 「変数代入(Variable Assigner)」 を選びます。
- 追加されたブロックをクリックして設定します。
- 設定する変数: さっき作った
beer_countを選択。 - 操作(記号):
+=を選びます。(これが「足す」という意味です) - 値(入力欄): 半角で 0と入力します。
- 設定する変数: さっき作った
【解説】
これで、会話が通るたびに**「今の数字に 1 を足す」**という処理が行われます。
数式を書かなくても、直感的に計算ができるようになっています!

ステップ4:AIに「今の杯数」を教える
最後に、AI(LLM)がこの数字を見て喋れるようにします。
- 変数代入ブロックの後ろの 「+」 を押し、「LLM」 を追加します。
- コンテキスト:
beer_countを選択して追加。 - システムプロンプト:Plaintext
あなたは居酒屋の店員です。 現在のお客様のビール杯数は {{beer_count}} 杯です。 ・杯数を伝えて、「乾杯!」と盛り上げてください。 ・3杯目までは「まだまだ行けますね!」 ・5杯目を超えたら「そろそろお水にしましょう」と心配してください。
これで完成です!
「開始」 ➡ 「変数代入(+1)」 ➡ 「LLM(返答)」 ➡ 「回答」
という流れになっているはずです。

5. テスト実行と「あるあるトラブル」
右側のプレビュー画面で試してみましょう。
【重要】テスト前の儀式
テストをする時は、必ずチャット画面の上にある 「ほうきマーク(会話をクリア)」 を押してから始めてください。
これをしないと、前のテストの数字が残ってしまい、いきなり「2杯目ですね!」と言われてしまいます。
- ほうきマーク をクリック(数字を0にリセット)。
- 自分:「生ひとつ!」
- AI:「1杯目ですね!乾杯!まだまだ行けますね!」
- (裏側で
beer_countが 1 になりました)
- 自分:「おかわり!」
- AI:「2杯目ですね! 乾杯!」
成功です!
間に雑談を挟んでも、AIは正確にカウントし続けます。
これが「LLMのメモリ」と「会話変数」の合わせ技です。
6. まとめ:あなたは「文系」から「理系」の力を手に入れた
お疲れ様でした!
今までのDifyは「言葉」しか操れませんでしたが、今日からは「数字」と「論理」を操れるようになりました。
- 会話変数 = 忘れないメモ帳
- 変数代入 = メモを書き換えるボールペン
- ほうきマーク = メモを消してリセット
この3つを覚えれば、ゲームのスコア管理も、仕事の見積もり計算も自由自在です。
今回はそこまで苦戦しなかったです。次回はこのチャットボットにアレンジ
を加えていきたいと思います。
次回は……
数字が扱えるようになったら、次は**「条件分岐(IF)」**です。
今のままだと、5杯目を超えてもAIは注意してくれるだけですが、
「もし beer_count が 5 を超えたら、強制的に『水以外は注文禁止』モードに切り替える」
という鬼機能を実装しましょう(笑)是非お楽しみに!


コメント