53話:【Dify】ブログもSNSもこれ1つ!「条件分岐」で作る二刀流AI(前編:分裂の危機)

Dify実践記第53話のアイキャッチ。条件分岐機能を活用して、1つの入力からブログ記事とSNS投稿の両方を生成する「二刀流AI」の構築をテーマに、道が分かれる都市の風景と対照的な二人の人物を描いています。 AI活用

前回(第52話)、私たちはついに「DifyからGoogleスプレッドシートへデータを自動保存」することに成功しました。 あの感動、覚えていますか?

今回は、そのシステムをさらに進化させます。

皆さんは、こんな悩みありませんか?

  • ブログ記事は「3,000文字で論理的に」書きたい。
  • X(旧Twitter)は「140文字でエモく」書きたい。

これらをやるために、わざわざ**「ブログ用アプリ」と「X用アプリ」の2つを作って、スプレッドシートも2つ用意する……。** 正直、管理がめんどくさいですよね?

今日は、たった1つのアプリで、スイッチひとつで「真面目なブログ」と「陽気なSNS」を切り替え、**そのどちらの結果も、同じスプレッドシートに自動保存する「二刀流AI」**を作ります。

第31話で習った「条件分岐(IF/ELSE)」の実践編です! ……と言いたいところですが、実はこの先に**「スプレッドシートに保存できない!?」というとんでもない落とし穴**が待っています。 今日はそこまでご案内します。


ステップ1:入り口に「スイッチ」と「テーマ」を作る

まずは、アプリの入り口である「開始(Start)」ブロックを設定します。 ここで必要なのは、**「①どのモードで書くか(スイッチ)」「②何について書くか(テーマ)」**の2つです。

1. 「作成モード」スイッチを作る

「入力フィールドを追加」の設定画面。

フィールドタイプ: 「選択」が指定されています。

変数名: mode、ラベル名: 「作成モード」と設定されています。

オプション: 「Blog」と「SNS」の2つの選択肢が作成されており、赤い注釈で「ここをクリックして2個にする」と操作指示が書かれています。 ユーザーがアプリ使用時に出力形式を選べるようにする設定場面です。

まず、一番左にある**「開始」ブロックをクリックします。 右側の設定画面にある「入力フィールド」の「+追加」から「セレクト(選択)」**を選びます。

  • ラベル名作成モード
  • 変数キーmode (小文字の英語で入力)
  • オプション
    • Blog
    • SNS
  • 必須: チェックを入れる

これでスイッチは完成ですが、これだけだと「何について書くか」を入力する場所がありません。

2. 「書きたいテーマ」欄を作る

もう一度**「+追加」を押し、今度は「テキスト(段落)」**を選びます。

  • ラベル名書きたいテーマ
  • 変数キーquery (または topic
  • 必須: チェックを入れる
Difyの「ユーザー入力」ノードの設定完了画面。作成モード(mode)とテーマ(query)の入力フィールドが正しく設定され、次のステップである「IF/ELSE」条件分岐ノードへ接続されている状態を説明しています。

これで、ユーザーは「キャンプ(テーマ)」について「ブログモード(モード)」で書いて! と命令できるようになりました。準備完了です!


ステップ2:運命の分かれ道(IF/ELSE)

次に、選んだスイッチによって、AIの処理ルートを二手に分けます。 ここで登場するのが、おなじみ**「条件分岐(IF/ELSE)」**ブロックです。

  1. 開始ブロックの後ろにある「+」を押して、**「条件分岐」**を追加します。
  2. 条件を次のように設定します。
  • 変数: さっき作った mode を選びます。
  • 条件Blog と、である (equals)
Difyの「IF/ELSE」ノードの設定画面。入力された「作成モード」が「Blog」に一致するかどうかで、その後の処理を分岐させるロジックを構築しています。

これで、

  • IF(真)の道:ブログを選んだ人が通るルート(上)
  • ELSE(偽)の道:SNSを選んだ人が通るルート(下)

この2つに道が分かれました。線路のポイント切り替え完了です!


ステップ3:脳みそを2つ用意する

分かれた道の先に、それぞれ「専用のAI(LLM)」を配置します。 ここで重要なのは、**「AIに何を読ませるか」**です。

上の道(ブログ用)

  • 上の分岐(IF)の先にLLMブロックを追加し、名前を「ブログライター」に変更します。
  • コンテキスト開始 > query (書きたいテーマ)を選択。
  • SYSTEM(役割設定):PlaintextあなたはプロのSEOライターです。 ユーザーのテーマに基づき、読者の検索意図を満たす論理的な記事を3,000文字程度で執筆してください。 口調:丁寧語(です・ます)
  • USER(命令文): ここが超重要です! ここには**「書きたいテーマ」を入れます。 入力欄の {x} を押し、開始 > query** を選んで入れてください。 (※間違って mode を入れないように注意! AIが「Blogについて書いて」と勘違いしてしまいます)
Difyの条件分岐後に配置した「ブログ用」LLMノードのプロンプト設定画面。SEOライターとしての役割を与え、ユーザーが入力したテーマに沿って3,000文字程度の記事を執筆させるための具体的な指示を入力しています。

下の道(SNS用)

  • 下の分岐(ELSE)の先にLLMブロックを追加し、名前を「SNSライター」に変更します。
  • コンテキスト開始 > query を選択。
  • SYSTEM(役割設定):Plaintextあなたは人気インフルエンサーです。 ユーザーのテーマについて、共感を呼ぶエモい投稿を作成してください。 文字数:140文字以内 絵文字:多めに使用 ハッシュタグ:3つ提案
  • USER(命令文): こちらも同様に、開始 > query を入れます

これで、上の道を通れば「指定したテーマの長文」が、下の道を通れば「指定したテーマの短文」が生成されるようになりました。 完璧な「二重人格AI」の誕生です!


ステップ4:【緊急事態】出口がない!?

さあ、いよいよ最後の仕上げです。 この生成された文章を、前回作った**「スプレッドシート保存ブロック(HTTPリクエスト)」**に渡して保存しましょう。

……おや? ここで深刻な問題が発生します。

試しに、「HTTPリクエスト」ブロック(または終了ブロック)を1つ置いてみてください。 そして、「保存するデータ(Body)」を選ぼうとしたとき、あなたは絶望するはずです。

  • 選択肢A:上の「ブログライター」のテキストを選ぶ?
  • 選択肢B:下の「SNSライター」のテキストを選ぶ?

もし「A(ブログ)」を選んで設定したとします。 すると、SNSモードで実行したとき(下の道を通ったとき)、Aの箱は空っぽなので、スプレッドシートには何も保存されません(エラーになります)。

逆も同じです。「B(SNS)」を選んだら、ブログモードの時に保存されません。

「道は2つあるのに、スプレッドシートへの入り口は1つしかない!!」

これでは保存ができません。 まさか、「ブログ用保存ブロック」と「SNS用保存ブロック」を2つ作りますか? 今回は2つだから良いですが、もし分岐が10個になったら……設定を10回繰り返すことになります。想像しただけで地獄ですね。


次回予告:バラバラの道を束ねる「魔法」

どうしましょう。 せっかく「二刀流アプリ」を作ろうとしたのに、最後の最後で「合流」できずに詰んでしまいました。

実は、この問題はDifyを使っていると必ずぶつかる**「分岐の壁」です。 しかし、安心してください。Difyには、この状況を打破するための「専用ブロック」**が用意されています。

その名は……「変数集約器(Variable Aggregator)」

名前はゴツイですが、機能は「バラバラになった道を、魔法のように一本に束ねる」という超・便利なものです。 これさえあれば、どんなに複雑に分岐しても、スプレッドシートへの入り口はいつもひとつ!

次回、この魔法のブロックを使って、迷子になったデータを華麗に救出し、スプレッドシートへの完全自動保存を実現します。 これであなたも「ワークフロー設計」のプロになれますよ。

【次回の予告】 第54話:【解決編】バラバラの道を束ねる魔法!「変数集約器」で二刀流アプリを完成させよ

これを使えばワークフローがシンプルになるのと

何が不具合があったときに修正が楽になると思います。是非お楽しみに!

コメント

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