59話:【Dify脱初心者】AIに「記憶」を持たせよう!会話変数と変数代入で作る「飲みすぎ防止カウンター」

居酒屋で働くロボット店員のイラスト。作務衣姿のAIロボットが「記憶」と書かれたボードを持ちながら、笑顔の客にビールを運ぶ様子を描いた、AIと人間が共存する温かい未来のイメージ画像です。 AI活用

前回(第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. これがないと作れない!会話変数が活躍するシーン

「ビールカウンター」以外にも、こんな場面で必須になります。

  1. 積み上げ計算(カウンタ・合計)
    • クイズ大会:「正解するたびに +10点」
    • 家計簿:「使った金額を予算から引いていく」
    • ダイエット:「食べたカロリーを足していく」
  2. 状態管理(フラグ)
    • 会員サイト:「この人は『プレミアム会員』か? (True/False)」
    • ゲーム:「『勇者の剣』を手に入れたか?」
  3. 情報の引き継ぎ
    • 予約システム:会話の中で聞いた「名前」と「日付」を、最後まで忘れずに保持して予約メールを送る。

4. 実践:最強の「飲みすぎ防止カウンター」を作ろう

理屈がわかったところで、実際に手を動かします。

**「注文が入るたびに、数字に1を足す」**という仕組みを作ります。

ステップ1:アプリの作成

  1. Difyホームで 「最初から作成」「チャットフロー(Chatflow)」 を選択します。
    • ※今回は「チャットボット」ではなく、より高度なことができる**「チャットフロー」**を選んでください!
  2. 名前: ビールカウンター
Difyの「会話変数」機能の設定画面。AIに長期的な記憶を持たせるために、会話履歴やユーザー設定などの変数を追加・管理する操作手順と、変数への読み書きの仕組みを図解しています。

ステップ2:会話変数(ロッカー)を用意する

まずは数字を入れておく「場所」を作ります。

  1. 画面の右上にある 「{x}(または{ENV})」 マークをクリックします。
    • (ここをクリックすると、右側に「会話変数」というパネルが開きます)
  2. パネルの中にある 「変数を追加」 をクリック。
  3. 以下の通りに入力します。
    • 変数名beer_count (半角英数推奨)
    • タイプNumber (数字)
    • 説明飲んだビールの杯数
  4. 「保存」 をクリック。

これで、初期値「0」が入ったロッカーが設置されました。

Difyの変数代入ノード設定画面。会話変数 beer_count に対し、数値を加算(+=)して記憶させる設定手順を示しています。AIが過去の対話内容を数値として蓄積・管理する「記憶機能」の実装例です。

ステップ3:変数代入(計算機)を設置する

ここが一番の山場です!「1を足す」という処理を作ります。

  1. 「開始(Start)」 ブロックの後ろにある 「+」 をクリック。
  2. 「変数代入(Variable Assigner)」 を選びます。
  3. 追加されたブロックをクリックして設定します。
    • 設定する変数: さっき作った beer_count を選択。
    • 操作(記号)+= を選びます。(これが「足す」という意味です)
    • 値(入力欄): 半角で 0と入力します。

【解説】

これで、会話が通るたびに**「今の数字に 1 を足す」**という処理が行われます。

数式を書かなくても、直感的に計算ができるようになっています!

Difyの会話変数 beer_count を活用した、居酒屋店員AIのプロンプト設定画面。記憶した数値(杯数)に応じて、AIの接客コメントを自動で変化させる「条件付き回答」の実装例を説明しています。

ステップ4:AIに「今の杯数」を教える

最後に、AI(LLM)がこの数字を見て喋れるようにします。

  1. 変数代入ブロックの後ろの 「+」 を押し、「LLM」 を追加します。
  2. コンテキストbeer_count を選択して追加。
  3. システムプロンプト:Plaintextあなたは居酒屋の店員です。 現在のお客様のビール杯数は {{beer_count}} 杯です。 ・杯数を伝えて、「乾杯!」と盛り上げてください。 ・3杯目までは「まだまだ行けますね!」 ・5杯目を超えたら「そろそろお水にしましょう」と心配してください。

これで完成です!

「開始」 ➡ 「変数代入(+1)」 ➡ 「LLM(返答)」 ➡ 「回答」

という流れになっているはずです。


Difyの会話変数機能を用いた「ビール杯数カウントAI」の動作テスト画面。ユーザーの「おかわり」という言葉に対し、AIが記憶していた「1杯目」という情報に加算して「2杯目です」と正しく応答しているプレビュー。

5. テスト実行と「あるあるトラブル」

右側のプレビュー画面で試してみましょう。

【重要】テスト前の儀式

テストをする時は、必ずチャット画面の上にある 「ほうきマーク(会話をクリア)」 を押してから始めてください。

これをしないと、前のテストの数字が残ってしまい、いきなり「2杯目ですね!」と言われてしまいます。

  1. ほうきマーク をクリック(数字を0にリセット)。
  2. 自分:「生ひとつ!」
    • AI:「1杯目ですね!乾杯!まだまだ行けますね!」
    • (裏側で beer_count が 1 になりました)
  3. 自分:「おかわり!」
    • AI:「2杯目ですね! 乾杯!」

成功です!

間に雑談を挟んでも、AIは正確にカウントし続けます。

これが「LLMのメモリ」と「会話変数」の合わせ技です。


6. まとめ:あなたは「文系」から「理系」の力を手に入れた

お疲れ様でした!

今までのDifyは「言葉」しか操れませんでしたが、今日からは「数字」と「論理」を操れるようになりました。

  • 会話変数 = 忘れないメモ帳
  • 変数代入 = メモを書き換えるボールペン
  • ほうきマーク = メモを消してリセット

この3つを覚えれば、ゲームのスコア管理も、仕事の見積もり計算も自由自在です。

今回はそこまで苦戦しなかったです。次回はこのチャットボットにアレンジ

を加えていきたいと思います。

次回は……

数字が扱えるようになったら、次は**「条件分岐(IF)」**です。

今のままだと、5杯目を超えてもAIは注意してくれるだけですが、

「もし beer_count が 5 を超えたら、強制的に『水以外は注文禁止』モードに切り替える」

という鬼機能を実装しましょう(笑)是非お楽しみに!

コメント

タイトルとURLをコピーしました