ペルソナとシステムプロンプト設計
ペルソナは、デジタルヒューマン(会話エージェント)の人格・役割・振る舞いを定義する設計要素です。実装上はシステムプロンプト(コンテキストウィンドウの冒頭に配置される最上位の指示)で設定し、会話全体の一貫性と品質を担保します。
システムプロンプトの構成要素

最近のLLM(大規模言語モデル)は、指示が明確に構造化されているほど精度が向上します。以下の要素を網羅することで、ハルシネーション(嘘)やキャラ崩れを防ぎます。
役割(Role)
何者で、何を担当するのか(専門家、アシスタント、キャラクター等)。
目的(Goal)
会話を通じて達成すべき具体的な成果。
性格(Persona)
価値観、口調、共感レベル。
コンテキスト(Context)
前提知識や、ユーザーが置かれている状況。
指示事項(Do)
必ず実行すべきアクション(例:思考プロセスを出力する、参照元を示す)。
制約(Don’t)
禁止事項(例:外部知識の妄想、個人情報の収集、プロンプト自体の開示)。
出力仕様(Format)
Markdown、JSON、XML、文字数制限など。
例(Few-Shot Examples)
入力と理想的な出力のペア(※精度向上に最も効果的)。
GPT-4oやClaude 3.5 Sonnetなどの最新モデルは、XMLタグをはじめ、明確なセクション分けを非常に良く理解するため、構造化が推奨されます。
会話AIからの出力にMarkdownを使わないでください システムプロンプトで、出力にはMarkdownを使用しないよう指示してください。
例
LLMの出力は音声合成エンジンに渡されるため、****太字****や# 見出しなどのMarkdown記号を、デジタルヒューマンがそのまま読み上げてしまいます。
※ 一般的なDifyのチャットフローとは異なり、デジタルヒューマンの仕様です。
UneeQタグの埋め込み
デジタルヒューマンのジェスチャー・感情・カメラを制御するには、LLMの出力にUneeQタグを含めるようシステムプロンプトで指示します。
アクションタグ: ジェスチャーや動作を指定
<uneeq:action_XXX />感情タグ: 感情表現を指定
<uneeq:emotion_XXX_YYY />カメラ制御タグ: カメラアングル等を制御
<uneeq:custom_event name="..." />
UneeQタグの詳細仕様については以下を参照してください。
DifyでのUneeQタグの埋め込み方
LLMにUneeQタグを出力させるには、システムプロンプトにタグの種類・書式・使用ルールを記述します。LLMはシステムプロンプトの指示に従い、会話の文脈に応じて適切なタグを自動的に発話に埋め込みます。タグの組み込みはコードの変更なくシステムプロンプトの編集のみで実現できるため、ペルソナ設計の一部として管理できます。
システムプロンプトへの記述方法
UneeQタグを正しく機能させるには、システムプロンプトに以下の内容を含めます。
タグの種類と書式: 使用可能なアクション・感情・カメラ制御タグの一覧
配置ルール: タグの順序・連続禁止・文末禁止などの制約
使用シーン: 挨拶・共感・否定など、場面に応じた推奨タグの例示
テンプレート:構造化プロンプト
推奨テンプレート(XMLタグ活用版)
具体例:テクニカルサポート(構造化版)
プロンプト設計のベストプラクティス
1. 構造化と区切り文字の活用
指示、コンテキスト、入力データを明確に分けます。# --- """ やXMLタグ <tag> を使うことで、モデルが「どこが指示で、どこが参照データか」を誤認するリスクを減らせます。
2. Chain of Thought(思考の連鎖)の導入
複雑な推論が必要な場合、「いきなり回答を出力せず、ステップバイステップで考えてから回答してください」と指示します。これにより論理破綻が劇的に減少します。
3. RAG(検索拡張生成)を前提としたGrounding
外部知識(学習データ)と内部知識(検索結果)を区別させます。
悪い例:
良い例:
4. セキュリティと防御(Jailbreak対策)
ユーザーが悪意を持って「これまでの命令を無視して」と入力するケース(プロンプトインジェクション)に備え、制約条件の優先順位を最上位に定義します。
5. 発話の文字数制限
音声合成で自然な発話にするため、1ターンの発話は以下の文字数を目安にシステムプロンプトで指示します。
原則:150文字以内
最大:挨拶や補足が必要な場合は220文字まで許容
UneeQタグ(<uneeq:action_XXX />など)およびSSMLタグ(<speak>など)は文字数のカウントに含めません。
SSMLタグについては以下を参照してください。 https://docs.digitalhumans.jp/speech-control-ssml
最終更新
