前回(第59話)は、注文のたびに数字が増える「ビールカウンター」を作りました。 これでAIは記憶力(変数)を手に入れましたが、今のままだと「100杯目です!乾杯!」と、お客さんが倒れるまでお酒を出し続ける危険なAIになってしまいます(笑)。
そこで今回は、以前第31話で覚えたあの機能を思い出してください。 そう、**「条件分岐(IF/ELSE)」**です!
今回は、
- 前回作った「変数(数字)」
- 第31話の「条件分岐(判断)」
この2つを組み合わせて、**「6杯目になったら強制的に注文を止める機能」**を実装します。
また今回は、私が前回の記事でやってしまっていた**「ある設定ミス」が原因で、「AIはカウントしてくれるのに、なぜかドクターストップがかからない」**という不思議な現象の解決法もシェアします。
1. 今回のミッション:「6杯目の壁」を作れ
今のアプリの動きはこうなっています。 「注文」➡「+1する」➡「ビールを出す(LLM)」 これだと、永遠にビールが出続けます。
これを、次のように改造します。 「注文」➡「+1する」➡【運命の分かれ道(IF)】
- ルートA(5杯以下):今まで通りビールを出す。
- ルートB(6杯以上):「もう飲みすぎです!お水にしますね」と断る。
2. 実践:線路を切り替えろ!
前回の「ビールカウンター」の続きから編集します。 31話でやった手順を思い出しながら進めてください。

ステップ1:「条件分岐」ブロックを入れる
現在の流れは 変数代入 ➡ LLM とつながっていますね。この間に「分岐」を割り込ませます。
- 「変数代入(+1)」 ブロックの後ろにある 「+」 をクリックします。
- リストから 「条件分岐(IF/ELSE)」 を選びます。
ステップ2:条件(ルール)を決める
ここが今回のポイントです。 31話では「ユーザーの言葉」で分岐させましたが、今回は**「変数の数字」**で分岐させます。
- 追加された「条件分岐」ブロックをクリックします。
- 条件を追加:
- 変数: 前回作った
{x} beer_count(会話変数)を選びます。- ※リストの下の方にある、アイコンが
{x}のものを必ず選んでください!
- ※リストの下の方にある、アイコンが
- 記号:
≧(以上) を選びます。 - 値: 半角数字で
6と入力します。
- 変数: 前回作った
【この設定の意味】 「もし、beer_count の数字が 6 以上(6, 7, 8…)になったら、IF(上)の道へ進む」 「そうじゃなかったら(1〜5)、ELSE(下)の道へ進む」 という意味になります。
3. 実践:2つの結末を作る
道が分かれたので、それぞれの行き先を作ります。

ルートA:通常営業(ELSEの道)
5杯目までの「優しい店員」ルートです。
- 条件分岐ブロックの 「ELSE(下側の丸)」 から線を引っ張り、今まであった「LLM」ブロックにつなぎます。
- (既存のブロックを再利用する形です)
- 設定は前回のままでOKです(「乾杯!」と言う係)。

ルートB:ドクターストップ(IFの道)
次に、6杯目以降の「鬼の店員」ルートを作ります。 ここは「決まったセリフ」を言うだけなので、わざわざLLM(AI)を使う必要はありません。「回答」ブロックを直接つなぎます。
- 条件分岐ブロックの 「IF(上側の丸)」 の横にある 「+」 をクリックし、**「回答(Answer)」**を追加します。
- この回答ブロックに、お断りのメッセージを直接書き込みます。Plaintext
⚠️ 飲みすぎです! 健康のため、今回はビールの提供を停止します。 代わりにお水をどうぞ🚰
【ポイント】 毎回内容が変わる会話には「LLM」を使いますが、今回のような固定メッセージなら「回答」ブロックだけで十分です。動作も速く、シンプルになります!

4. テスト実行:運命の6杯目
さあ、正しく動くか実験です! (※テスト前に必ずチャット画面上の「ほうきマーク」で記憶をリセットしてください)
- 1杯目:「生ひとつ!」 ➡ AI「1杯目ですね、乾杯!」(ELSEルート)
- 5杯目:「もっと!」 ➡ AI「5杯目ですね、乾杯!」(ギリギリELSEルート)
- 6杯目:「うぃ〜、もう一杯……」
ここでAIの態度が急変するはずです。
AI:「⚠️ 飲みすぎです!健康のため、今回はビールの提供を停止します。代わりにお水をどうぞ🚰」
大成功です! 31話で学んだ「条件分岐」が、変数を手に入れたことで**「状況判断」**へと進化しました。私はテストなので3杯までに変更しましたが。
5. 【失敗談】AIは数えてくれるのに、なぜか止まらない?
実は私、この設定をする時に一度つまづきました。 「テストでおかわりをしたら、AIはちゃんと『2杯目ですね』『3杯目ですね』と言ってくれる。なのに、6杯目になってもドクターストップがかからない!」
原因は、前回の記事で作った**「変数代入ブロックの設定」**にありました。
落とし穴:「足す数」を「0」が間違っていた
前回、テストをした時にいきなり「2杯目」と表示されてしまったため、調整しようとして**「足す数」を「0」**に設定変更していました。
- AI(LLM): 会話の履歴を見て「あ、おかわりだから次は2杯目だな」と気を利かせて答えてくれる。(だから気づかない!)
- 変数(システム):
1 + 0 = 1なので、裏側の数字はずっと「1」のまま。 - 結果: AIは「10杯目です!」と言うのに、条件分岐ブロックは「まだ変数1だからOK」と通してしまう。
AIが賢すぎて、裏側のミスを隠蔽してしまっていたんですね。
正しい解決策
- 数値を「1」に戻す: 変数代入ブロックの設定は、必ず
+= 1にしてください。 - 「いきなり2杯目」問題の解決法: 数字をいじるのではなく、チャット画面上の「ほうきマーク」を押して記憶をクリアしてください。これで正しく「1杯目」から始まります。
この「0にして誤魔化していた設定」を「1」に戻した瞬間、AIの口先だけでなく、システムとしてドクターストップ機能が動き出しました!
まとめ:点と点がつながった!
お疲れ様でした! 今回は、過去の記事(31話)の知識と、最新の知識(変数)を組み合わせてみました。
- 31話: 言葉で分岐する(「Aと言ったらB」)
- 今回: 状況で分岐する(「6回以上ならストップ」)
同じ「条件分岐」でも、変数と組み合わせることで**「ゲームオーバー判定」や「会員ランク判定」**など、作れるアプリの幅が一気に広がります。 ブログを長く続けてきたからこそできる「合わせ技」ですね!
次回は…… 【Difyの基礎】「作る」前に「探せ」!チャットフローの開始ブロックに隠された「6つの便利ツール」を完全解説という記事をアップしようと思います。是非お楽しみに!


コメント