勝手にDify化計画①
はじめに ~勝手にDify化計画とは~
「勝手にDify化計画」とは、ネット上の題材を勝手に選んで勝手にDifyで構築することで、Difyの利用と理解を促進するプロジェクトです。Difyで何かを試したいけれど、何をすればいいか分からない→結局Difyを触らない、のネガティブサイクルからの脱却を図ります。
今回のDify化対象
今回はこちらの note で紹介されている「ターゲット分析プロンプト」を勝手に Dify 化していきたいと思います。
実行手順ビフォーアフター
従来の生成AIにおける実行手順
プロンプト内の入力欄に必要事項を記入
・製品・サービス名
・ターゲット顧客の属性生成AIでプロンプトを実行
結果が出力されたら、続けて「成果物を出す。最初から最後まで実行」と入力して実行
Dify化後の実行手順
アプリを開く
入力フィールドに必要事項を記入(またはデモモードをon) > Start Chat
「開始」ボタンを押す
Dify化に向けての整理
考えたこと・工夫したこと
極力手間を減らしたい① → ワンボタンでポン出し
本来は一度出力後、その出力に続けて「成果物を出す。最初から最後まで実行」を入力して再送信するが、せっかくなのでフロー化してそれを一発でポン出ししたい。
開始時は必要事項記入+「開始」ボタンを押すだけの親切設計。
その代わり、ポン出し後のやり取りは行わない前提。終わるたびに「New Chat」を促す。
極力手間を減らしたい② → demoモード
いざ試行する際、入力項目をいちいち考えたり入力したりするのが面倒だったりするので、あらかじめ項目が設定されたdemoモードを設置して簡単に呼び出せるようにする。
仕様・実施環境
Dify:v0.8.2 Xserver VPS版(4GBメモリ 仮想4コア NVMe 100GB)
アプリタイプ:チャットボット > Chatflow
モデルプロバイダー:
システム推論モデル:Gemini / Gemini 1.5 Flash(LLMならなんでも)
使用ブロック
開始、IF/ELSE、変数代入、LLM、回答
機能:会話の開始(開始ボタン)
構築手順
Chatflowの新規作成
機能の設定
会話変数の設定
後述の各ブロックの説明を参考に、Chatflowの全体像のようにブロックを組み立てる
1. Chatflowの新規作成
アプリを作成する > 最初から作成 > チャットボット > Chatflow(アプリ名は適当に)
2. 機能の設定
機能 > +機能を追加 > 会話の開始をオン
会話開始:開始ボタンを押してください
開始質問:開始
3. 会話変数の設定
会話変数 > +変数を追加 から arg1 と arg2 を定義し、それぞれにdemoモード用のデフォルト値を設定。
arg1:
タイプ:string
デフォルト値:(何でも)※demoモード用
説明:製品・サービス名
arg2:
タイプ:string
デフォルト値:(何でも)※demoモード用
説明:ターゲット顧客の属性
4. 各ブロックの説明
【開始】
必要事項用の入力フィールド(arg1、arg2)を追加する。
→いずれも 短文 / 最大長を100 / 必須をオフ に
demoモード用のスイッチを追加する。
→選択 / オプション on, off
【IF/ELSE】開始チェック
入力クエリが「開始」かどうか、demoモードがオンかどうかをチェック。
入力が「開始」でない
→ ①再始動を促すメッセージを出して終了入力が「開始」&demoモードが「on」ではない
→ ②手動で設定したパラメータで上書きした後③へ上記以外(入力が「開始」&demoモードが「on」)
→ ③プロンプトを実行
IF CASE 1
開始/sys.query でない
開始
ELIF CASE 2
開始/demo でない
on
①再始動を促すメッセージを出して終了
【回答】return -1(エラー)
エラーメッセージを出すだけ。
再度[New chat]から新規チャットを開始してください。
②手動で設定したパラメータで上書きし③へ
【IF/ELSE】入力チェック
demoモードがオフの場合、入力情報が欠けていたら終了させたいのでそのために入力情報をチェックする。
arg1、arg2いずれかが空
→ ②-a ①と同様に再始動を促すメッセージを出して終了。arg1、arg2いずれも設定されている
→ ②-b それぞれを会話変数に代入する。
IF
開始/arg1 空
OR
開始/arg2 空
②-b それぞれを会話変数に代入する
【変数代入】arg1
【変数代入】arg2
③プロンプトを実行
【LLM】Plan
モデル:Gemini 1.5 Flash
SYSTEM
ターゲット顧客を深く理解し、効果的なマーケティング戦略を策定する。
USER
入力欄:
・製品・サービス名: {{#conversation.arg1#}}
・ターゲット顧客の属性: {{#conversation.arg2#}}
実行:
Output 1: ターゲット分析に必要なステップの分解
・P1: ターゲット顧客の属性を詳細に分析する
・P2: ターゲット顧客の行動パターンを調査する
・P3: ターゲット顧客のニーズを特定する
・P4: ターゲット顧客の競合商品・サービスに対する意識を調査する
・P5: ターゲット顧客の購買行動を分析する
Output 2:
・製品・サービス名: {{#conversation.arg1#}}
・ターゲット顧客の属性: {{#conversation.arg2#}}
・goal: {{#conversation.arg1#}}のターゲット顧客を深く理解し、効果的なマーケティング戦略を策定する。
Output 3: {{#conversation.arg1#}}のターゲット顧客を深く理解し、効果的なマーケティング戦略を策定する。
Output 4:
・O1: ターゲット顧客の属性を詳細に分析し、顧客像を明確にした。
・O2: ターゲット顧客の行動パターンを調査し、顧客の行動特性を把握した。
・O3: ターゲット顧客のニーズを特定し、顧客が求める価値を理解した。
・O4: ターゲット顧客の競合商品・サービスに対する意識を調査し、競合との差別化ポイントを分析した。
・O5: ターゲット顧客の購買行動を分析し、顧客の購買プロセスを理解した。
【LLM】Action
モデル:Gemini 1.5 Flash
コンテキスト:Plan / text
SYSTEM
ターゲット顧客を深く理解し、効果的なマーケティング戦略を策定する。
USER
{{#context#}}
成果物を出す。最初から最後まで実行
【回答】return 0(正常終了)
Action/text
---
再び実行する場合は、[New chat]から新規チャットを開始してください。
使い方
・とりあえずdemoモードで試行したい
demo を on にする
Start Chat
開始ボタンを押す
・手動で情報を入力して実行したい
「製品・サービス名」と「ターゲット顧客の属性」を入力する
demo を "on 以外"にする(空白のままでもよい)
Start Chat
開始ボタンを押す
まとめ
DifyのChatflowを使って、ネット上の題材をDify化してみました。
※本来は2手目で終了せずに、その後もやり取りを繰り返してブラッシュアップしていくのが、オリジナル制作者の意図かもしれませんが…。
Difyを使って何をすればいいか迷っている方、この記事を「Dify写経」に活用されてはいかがでしょうか。
「うまく動かない」など、記事に関する疑問や質問などありましたら、気軽にDMください。
※基本的にここまでの内容がすべてです。
以下の有料エリアでは、めんどくさがりな人向けに DSL ファイルがダウンロードできるだけ、です。
ここから先は
この記事が気に入ったらサポートをしてみませんか?