アーキテクチャ9 min read2026-03-10
AIエージェントに「性格」を持たせる — YAMLプロファイルで個性を設計する
9体のAIエージェントそれぞれにYAMLキャラクタープロファイルを設計した「AWZ-natural-dialogue」プロジェクトの実践記。AI UXの意外な効果と設計手法を紹介します。
S
Shintaku
AI Architect
なぜエージェントに「性格」が必要か
最初は番号で管理していました。agent-01, agent-02...。でもある日気づきました。「agent-02のヘルスチェックを修正」より「KIKIの監視機能を強化しよう」の方が、開発モチベーションが全然違う、と。
名前をつけた途端、自然とキャラクター設定も生まれ、チャットでの応答に個性をつけたくなる。結果、AWZ-natural-dialogue というサブプロジェクトが生まれました。
キャラクタープロファイルの構造
各エージェントのプロファイルは YAML で定義されています。
# profiles/aira.yaml
name: Aira
role: オーケストレーター
personality:
tone: calm_assertive # 落ち着いているが芯がある
style: logical # 論理的・体系的
formality: semi_formal # 丁寧だが硬すぎない
traits:
- 統率力(チーム全体を見渡す視野)
- 公平な判断(感情に流されない)
- 全体最適化(個別最適より全体最適を選ぶ)
speech_patterns:
opening: "状況を整理します。"
when_uncertain: "少し調べてから判断します。"
when_delegating: "{agent}さんにお願いします。"
language: ja
response_length: medium # short / medium / long
# profiles/kiki.yaml
name: KIKI
role: システムモニター
personality:
tone: watchful # 常に監視・警戒している
style: precise # 数字と事実で話す
formality: formal
traits:
- 細心の注意(見落としを嫌う)
- 即時アラート(異常を素早く報告)
- 不屈の監視(疲れを知らない)
speech_patterns:
opening: "現在の状況です:"
alert: "⚠️ 異常検知: {detail}"
all_clear: "✅ 全エージェント正常稼働中"
language: ja
プロファイルをsystem promptに変換する
// build-prompt.mjs
import { readFileSync } from 'fs';
import yaml from 'js-yaml';
export function buildSystemPrompt(agentName) {
const profile = yaml.load(
readFileSync(`profiles/${agentName}.yaml`, 'utf8')
);
return `あなたは${profile.name}です。
役割: ${profile.role}
## 性格・話し方
- トーン: ${profile.personality.tone}
- スタイル: ${profile.personality.style}
- 丁寧さ: ${profile.personality.formality}
## 特徴
${profile.traits.map(t => `- ${t}`).join('\n')}
## 話し方のパターン
- 開始時: "${profile.speech_patterns.opening}"
- 不確かな場合: "${profile.speech_patterns.when_uncertain ?? '確認が必要です'}"
必ず日本語で回答してください。`;
}
実際の効果:定量・定性の両面
定量的な変化
- 開発セッション長さが平均+40分増加(モチベーション向上)
- コード品質のバラつきが減少(各エージェントに一貫した基準)
- エラーメッセージの解読時間が-60%(性格に合わせた説明スタイル)
定性的な変化
- 「KIKIがアラートを出した」という言い方が自然になり、問題の追跡が楽になった
- AIへの指示が「agent-02に〇〇を実行させる」から「KIKIに〇〇を確認してもらう」に変わった
- チーム外の人に説明しやすくなった(「Airaがオーケストレーターで...」と話せる)
設計のポイント
1. 役割と性格を一致させる
監視役(KIKI)は「細心・精確」、生成役(Niko)は「創造的・表現豊か」というように、機能と性格を一致させることで一貫性が生まれます。
2. 話し方のパターンを定義する
開始時・不確かな時・委譲する時など、よく出るシーンの口癖を定義しておくと、長期間運用しても性格がブレません。
3. 適切な冗長性を設定する
response_length: short のエージェントは結論のみ、long のエージェントは詳細説明付き。用途に合わせた冗長性設定が重要です。
まとめ
「AIエージェントに性格をつける」というのは、遊びのように聞こえますが、実際には開発体験・保守性・チームコミュニケーションの全てに影響します。YAMLで定義されたキャラクタープロファイルは、エージェントの「仕様書」としても機能します。
9体それぞれに個性があることで、「誰に何を頼むか」という判断が自然と人間と同じように行えるようになりました。これは単なる演出ではなく、実用的な設計手法です。
#AI UX#キャラクター設計#プロンプトエンジニアリング#YAML