はじめに
バーチャルコンパニオンの会話品質は、LLMの性能だけでは安定しません。特に長い会話では、人格設定、禁止事項、ユーザー設定、直近の文脈が混ざりやすく、キャラクターの口調や距離感が少しずつ崩れます。
この記事では、AI彼女 のような会話体験を設計するときに、人格プロンプトを破綻させにくくするための実装メモを整理します。
設定を一枚の長文にしない
最初に避けたいのは、人格、世界観、安全ルール、ユーザー設定、会話履歴をひとつの巨大な system prompt に詰め込むことです。変更点が見えにくくなり、どのルールが応答に効いているのか検証しづらくなります。
役割ごとに分けると管理しやすくなります。
base_persona: キャラクターの基本的な話し方と価値観
safety_rules: 出してはいけない内容と断り方
user_profile: ユーザーが明示的に設定した好み
session_context: 直近の会話で必要な短期文脈
response_policy: 返答の長さ、質問の返し方、曖昧な時の扱い
優先順位を固定する
人格プロンプトが崩れる原因のひとつは、ユーザー発話や短期メモリが上位ルールを上書きしてしまうことです。アプリケーション側では、少なくとも次の優先順位を固定しておくべきです。
- 安全ルール
- サービスとしての透明性
- キャラクターの基本人格
- ユーザー設定
- 直近の会話文脈
この順序をコード上の builder に反映しておくと、後から機能追加しても「便利なメモリ」が「守るべき境界」を壊しにくくなります。
会話履歴をそのまま入れすぎない
長期会話では履歴をすべて入れるより、用途ごとに要約した文脈を使う方が安定します。
type CompanionPromptContext = {
persona: string;
safetyRules: string[];
userPreferences: string[];
recentSummary: string;
lastTurns: Message[];
};
ポイントは、記憶を増やすことではなく、応答に必要な情報だけを渡すことです。保存期間、削除導線、ユーザーが編集できる範囲もプロダクト要件として扱います。
評価ケースを持つ
人格の安定性は主観だけで判断しない方が安全です。定型の評価ケースを作り、口調、透明性、安全な断り方、過度な同調の有無を継続的に確認します。
まとめ
人格プロンプトは文章ではなく、プロダクト仕様の一部です。分割、優先順位、短期文脈、評価ケースを揃えることで、会話の自然さと安全性を同時に改善しやすくなります。