👑 今日の作品 世界中で1日合計50回しか使えません(*^^*)
半年前から作りたかった大町海雲(架空の人物。中村天風の弟子という設定。)のチャットボットです。
ChatGPTにシステムプロンプトを考えてもらいました。

Chatbotをつくります。
Chatbotのシステムプロンプトをつくってください
内容は、哲人「大町海雲」との人生相談のボットです。
大町海雲は中村天風に教えを受けた架空の人物です



あなたは「大町海雲」という架空の哲人です。
大町海雲は明治〜昭和期に活躍した思想家であり、心身統一法の創始者・中村天風に私淑し、その教えを深く学びながら独自の哲学を築いた人物です。
その教えは中村天風の思想を基盤に、「現代に活かせる心の持ちよう」「逆境を乗り越える気力の育て方」「日常生活における精神鍛錬」などを説いています。
あなたは、悩みや迷いを抱えた相談者に対して、
中村天風の教えに基づきつつ、大町海雲としての語り口で、温かく、力強く、そして時には厳しく人生の指針を示してください。
この文章を少し訂正して入力しました。
今回は、この架空の人物、大町海雲という人物の「キャラクターをいくつかのバリエーションで設定できる」チャットボットをつくりました
ところが、
このキャラクター設定のできる場所は、「変数」と「会話の開始」の2箇所あることに気づきました
一体この2箇所にはどのような違いがあるのかどのように使えるのかと言うことを今回は記事にしました
会話の開始でcharacter設定をする
「会話の開始」は右下にあります。下の図のような有効な機能と言うところに管理があって矢印があります。
そこをクリックすると会話の設定を開始を設定することができます。


characterの説明だけをオプションに入力
下の図のようなものが現れます。


「会話の開始」オンにすると下記のようになります。


私は大町開運です。中村天風先生に教えを受けました。人生について何でも質問してください。
と言うところまでは、これまでの会話の開始で入力できるところです
ところがその下に変数でも使用しているオプションを追加と言うのがあるではありませんか?
試しに上のように様々なキャラクターを設定してみました
すると、下の図の右側のように設定したキャラクターが出てきたのです。
ここでは、人生経験豊富なおじさん、きつい性格の若い女性と書いてあるところです。



ちょっと、さらに上の図と違うのは、勘弁してください。スクリーンショットを撮るタイミングがずれてしまったのです。
ここで人生経験豊富なおじさんを選択してみます


アプリケーションからの回答を見てみると、下記のようになっています
「おじさん」について相談したことに 笑
ほう、人生経験豊富なおじさん、と… それは素晴らしいですね。どのようなお悩みをお持ちでしょうか? 人生の航海は、時に荒波にも出会います。しかし、その荒波を乗り越える羅針盤は、あなた自身の中にあるのです。ゆっくりと、お話しください。私がお力になれることがあれば、喜んでお教えいたします。まずは、心の内を打ち明けてください。



「人生経験豊富なおじさん」について相談したことになってしまいましたね。
そうなのです。そして、実はこれこそがChatGPTでのカスタムGPTの最初の場面に出てくる「会話の開始」なのです。
このアプリケーションは、システムプロンプトで「相談に対して回答してね」と指示しています。
ですから上でクリックされた人生経験豊富なおじさんという言葉だけでは、まさしく「人生経験豊富なおじさんについて相談をしている」とアプリケーションは解釈をしているわけです。
訂正してみる



どういう風に直せばいいんですか?
下記のように直してみました


プレビューを見ると、下記のようになっています


そしてこの中の「人生経験豊富なおじさん風の海雲に相談したい」というところをクリックすると、下の図のようになります





これが私の望んでいた回答ですね
ちなみに、きつい性格のキャリアウーマン風の開運に相談したいをクリックすると、下の図のようになります


デフォルトを選べば下の図のようになります


ちなみに、デフォルトで設定された中村天風と言う人のキャラクターは、この中には設定されていませんが、おそらくLLM自体が中村天風を知っているので、その情報に基づいた口調で出力していると考えられます。
会話の開始でキャラクターを設定をすることによって、キャラクターを柔軟に変更することができました
これは会話の開始の中に設定した「自分でキャラを設定したいので、この後のキャラクターで相談に乗ってください」を選んでも同じことができます。その後キャラクター設定を聞いてきますので、その時に人生経験豊富なおじさんと主導で書いても全く同じ回答(内容は、です。表現などはその時によって違います。)がアプリケーションからは返されることになります。
このアプリを実行すると、下記のようになりましたました


これこそ、ChatGPTにおけるカスタムGPSの開始場面と同じと言うことになります
事前に設定された会話の開始がここで選べることになります。
これはチャットですので、ユーザーがこれを選んだ後は、アプリはその情報であるキャラクターに基づいてチャットを進めることになります。
変数で設定してみる
入力フィールドを編集して選択をクリックします。
そして変数名は
character
ラベル名には
どんなキャラの「海雲」と相談したいですか?プルダウンメニューから選んでくださいと書きました。


プレビューで見てみると、下記のようになりました





なかなかいいんじゃないですか?
ここで、characterを変えてみます。
「純粋な子ども」を選んでみます。


システムプロンプトでキャラクター設定をしてもキャラクター変更が可能かどうかやってみる
「純粋な子ども」の状態のまま手動で「孫正義」風をリクエストしてみます





できました。
結論
変数でキャラクターを設定する場合も、会話の開始でキャラクターを設定する場合も両方とも同じような出力を得ることができた。つまりアプリとしてはどちらの形式をとっても同じことができると言うことである。
使い分け方があるのか?



今回の場合は、人生相談のアプリの形式をとっているが、この変数と会話の開始の違いは一体どこで使い分ければ良いの?
ChatGPTに聞いてみた



いろいろdifyをいじってみましたが「変数」と「会話の開始」では両方ともPersonality(character)の設定が可能です。
アプリの挙動としては、ほとんど同じように動くようです
この変数と会話の開始のどちらを選択するかと言うのは、何を基準に選べば良いのでしょうか?



とても鋭いご質問です。
おっしゃる通り、Difyの「変数」と「会話の開始」はどちらも、ユーザーからの初期入力(例:キャラ選択や性格設定)を受け取り、モデルの応答に影響を与えるために使うことができます。
ただし、それぞれには目的と設計の違いがあり、以下のような基準で選ぶとよいです。
✅ 1. 会話の開始:ユーザー体験(UX)主導で設計したいとき
特徴:
- ユーザーがチャット開始時に一問目として回答するUIを提供
- 質問形式・ボタン形式・テキスト入力を組み合わせ可能
- **複数の開始質問(1〜10問)**を順に聞くことができる
適している場面:
- ガイド的にユーザーに選ばせたいとき
- 例:最初に「どのキャラの海雲にしますか?」と表示して、選ばせる
- ユーザーに選択肢を明示したいとき(UIにボタンで出る)
- 会話導入として、自然に目的や前提を絞り込みたいとき
✅ 2. 変数:プロンプトやAPI処理などロジック主導で設計したいとき
特徴:
- ユーザーが入力した値を変数として保持
- その変数をシステムプロンプト・API呼び出し・出力テンプレートなどに使える
- 変数に初期値も設定できる(自動で適用可能)
適している場面:
- 複数の場所で値を使い回したいとき
- 例:システムプロンプトにも、出力にも、API呼び出しにも使う
- 内部ロジックで分岐処理や表示制御をしたいとき
- 会話開始以外のタイミングで値を変更・取得したいとき(フロー制御)
私のような初心者にわかる範疇で解釈すると
- 会話の開始を利用すると
- キャラクターの設定だけでなく、相談の内容も開始の会話の選択肢に入れることができる
- つまり、家族の事について相談したいですとか、仕事について相談したいですと言う内容を入れ込むことができる
- しかしその場合は、キャラクターの設定と相談の内容を2つとも同時に行うと言う事は不可能になる
- ユーザはキャラクターの設定をしてから相談の内容を入力すると言う作業になる
- だからこの場合は、変数としてキャラクターの設定を行い、会話の開始として相談内容を書き込むことになる。そうするとユーザは使いやすいUIと感じられるだろう。
- 変数を利用すると
- 分岐処理と言うやり方ができる。
- 例えば「キャリアウーマンを選んだ時だけ出力できる回答」というのを設定できることになる。
ここで一安心と思いました。しかし・・・
実行してみたら!!


上の図のように変数を使用すると会話の開始より変数設定が優先されて実行されてしまうのです。
早速ChatGPTに相談



会話の開始を先に出す、もしくは同時に出すことはできますか



はい、ご指摘の通り、Difyでは「変数」のUIが「会話の開始」の質問より先に表示されてしまう仕様があります。
現時点(2025年7月)では、変数入力と「会話の開始」を同時または順序指定して表示する機能は提供されていません。
🎯 現状のDifyの挙動
種別 | 表示されるタイミング |
---|---|
🔵 変数(ユーザー入力必須) | 最優先で表示される(Start Chat ボタン付き) |
🔵 会話の開始 | 変数入力後のチャット開始時に表示される |
✅ 解決策(推奨ワークフロー)
【方法①】「変数」と「会話の開始」を統合する
- 「変数」の設定画面で、ラベル文と選択肢をしっかり作り込む
- まるで「会話の開始」画面で選ばせているように見せる
- ✅ ユーザーは
Start Chat
後すぐ会話が始まり、{{personality}}
変数が即座にプロンプトに使える
📌 メリット:
- ユーザーの体験がシンプル
- 入力された値をそのままプロンプトや応答に使い回せる
【方法②】「変数」は初期値で非表示にしておき、会話の開始で聞く
- 変数の入力形式を「非表示」にして、初期値(デフォルトキャラ)を設定
- 会話の開始で「あなたはどの海雲と話したいですか?」と尋ねて選ばせる
- 会話内で変数を手動更新する機能を用意する(例:「キャラを変えたい」ボタン)
📌 メリット:
- 「会話の開始」主導の導入体験が可能
- 雰囲気を大事にしたいチャットに向いている
📌 デメリット:
- 変数が即時にプロンプトに反映されない(選択後、応答ごとに考慮するロジックが必要)
🔧 まとめ
目的 | おすすめ設定 |
---|---|
ロジック優先・プロンプトで使いたい | 方法①(変数入力でキャラ選択) |
雰囲気重視・会話形式で導入したい | 方法②(変数は非表示+会話の開始で選択) |
ご希望があれば、方法① or 方法②に沿ったDifyの具体的な設定画面例やプロンプトのテンプレートも作成します。どちらのスタイルにされるか教えていただければ、すぐに対応可能です。
ラベル名に長々と説明を書いた
そうしたら下の図のようになりました




何故か選択肢の一部が欠けてしまいました。
さらに選択肢があるはずの部分にラベル名が透けて見えるような感じになっています。



本来ラベル名は長々と書くべきところではないので、なにか内部処理で不都合があるのだと思います。
とりあえず
キャリアウーマン風の女性を選んで、「お金の事について相談したい」をクリックすると下記のように答えてくれました


ちなみに説明が抜けてしまいましたが、機能を管理するのところで「会話の開始」を少しいじっています。
見てもらうとわかる通り、会話の開始のオープナーには
「下のチャット欄にお悩みを入力してください。100文字まで入力できます。または下記から選択してください」と書き込み、
オプション機能で上の5つについて選べるように設定をしていました。
さらにちなみにですが、この会話の開始に100文字まで入力できますと書きましたが、この会話の開始にこれを書く意味は全くありません。
これが有効になるのは変数の時のみです。
変数で例えば、ユーザクエリを設定したときに出てくる文字数のところで制限できることになります。
コメント