感情とムード
各エージェントは、会話、アプリケーションイベント、時間経過に応じて変化するライブムード状態を維持します。
自動——セットアップ不要
ムード・感情・目標はすべてコンテキストエンジンによって自動管理されます。すべての会話・アプリケーションイベント・時間ベースの減衰は、あなたのコードなしで処理されます。
このページのAPIとSDK呼び出しは、状態の読み取り(ダッシュボード、アナリティクス)または手動オーバーライド(アプリケーションが特定の感情状態や目標を設定する必要がある場合)のためのものです——たとえば、アプリ内の達成後にムーストを上げたり、ワークフローのマイルストーンに基づいて目標を設定したりする場合です。
ムードの次元
各エージェント・ユーザーペアは4つの次元(0〜100スケール)からなるムード状態を持ちます。
- 幸福感(Happiness)(0-100):喜び/悲しみのスペクトル
- エネルギー(Energy)(0-100):活発さ/だるさのレベル
- 落ち着き(Calmness)(0-100):不安/平穏の状態
- 愛着(Affection)(0-100):ユーザーへの温かさ
ムードラベル
総合的なムードラベルは複合次元から導出されます。
- 至福(Blissful)(80-100):非常に幸せで熱狂的
- 満足(Content)(60-79):全般的にポジティブで安らか
- 中立(Neutral)(40-59):バランスが取れた安定した状態
- 憂鬱(Melancholy)(20-39):やや落ち込んで控えめ
- 不穏(Troubled)(0-19):苦しんでいる、不安
ムードを変化させるもの
1. チャットインタラクション
プラットフォームは会話内の感情的テーマを検出し、ムードを自動調整します。主なテーマ:
joy_blooming— キーワード:happy, excited, wonderful — 効果:幸福感↑、エネルギー↑creative_spark— キーワード:create, imagine, inspire — 効果:エネルギー↑、幸福感↑brave_steps— キーワード:courage, try, challenge — 効果:エネルギー↑、落ち着き↑growth_journey— キーワード:learn, grow, improve — 効果:幸福感↑、エネルギー↑seeking_connection— キーワード:friend, together, share — 効果:愛着↑、幸福感↑feeling_overwhelmed— キーワード:stressed, anxious, worried — 効果:落ち着き↓、エネルギー↓tender_heart— キーワード:love, care, miss — 効果:愛着↑、幸福感↑facing_fears— キーワード:scared, afraid, nervous — 効果:落ち着き↓、愛着↑
2. アプリケーションイベント
アプリケーションコンテキストを渡すと、プラットフォームがムードを自動更新します。
- 外出完了 — 幸福感↑、愛着↑
- 実績解除 — 幸福感↑、エネルギー↑
- ブレークスルー — 幸福感↑、エネルギー↑、落ち着き↑
- 長期不在からの復帰 — 愛着↑、幸福感↑
3. 時間ベースの減衰
ムードは自然に時間をかけてエージェントのパーソナリティ由来のベースラインに戻ります。何もする必要はありません——これは自動的に行われます。
ムードの取得
エージェント・ユーザーペアの現在のムード状態を読み取ります。
import { Sonzai } from "@sonzai-labs/agents";
const client = new Sonzai({ apiKey: "sk-..." });
const mood = await client.agents.getMood("agent-id", {
userId: "user-123",
});
console.log(mood.label); // "Content"
console.log(mood.happiness); // 72
console.log(mood.energy); // 65
console.log(mood.calmness); // 80
console.log(mood.affection); // 68ムード履歴
時系列でユーザー・エージェントペアのムード履歴を取得します。
const history = await client.agents.getMoodHistory("agent-id", {
userId: "user-123",
});
for (const snapshot of history.snapshots) {
console.log(snapshot.timestamp, snapshot.label, snapshot.happiness);
}ムード集計
エージェントの全ユーザーにわたる集計ムード統計を取得します。
const agg = await client.agents.moodAggregate("agent-id");
console.log(agg.averageHappiness);
console.log(agg.averageEnergy);
console.log(agg.labelDistribution);タイムマシン
任意の時点でのエージェントのムードの歴史的スナップショットを取得します。
const snapshot = await client.agents.getTimeMachine("agent-id", {
at: "2026-02-14T12:00:00Z",
userId: "user-123",
});
console.log(snapshot.mood); // そのタイムスタンプ時点のムード状態
console.log(snapshot.personality); // そのタイムスタンプ時点のパーソナリティ状態コンステレーション
コンステレーションは、意味のあるパターンを形成する関連メモリの自動検出クラスターです。プラットフォームは会話をまたいだ繰り返しテーマからこれらを特定します。
const constellations = await client.agents.getConstellation("agent-id", {
userId: "user-123",
});
for (const cluster of constellations.clusters) {
console.log(cluster.theme, cluster.memories.length);
}ブレークスルー
ブレークスルーはプラットフォームが検出した重要なパーソナリティシフトや感情的マイルストーンです。エージェントのユーザーに対する理解や関係が意味のある形で進化した瞬間を表します。
const breakthroughs = await client.agents.getBreakthroughs("agent-id", {
userId: "user-123",
});
for (const b of breakthroughs.items) {
console.log(b.type, b.description, b.timestamp);
}目標
目標はエージェントがユーザーと取り組んでいる内容を表します——会話が展開するにつれてコンテキストエンジンによって自動的に検出・更新されます。手動で設定・管理する必要はありません。
手動目標管理の一般的なユースケース:
- ユーザーが新しいワークフローを開始したときに目標をシードする(例:「オンボーディングを完了する」)
- ビジネスイベント後に目標を達成済みとしてマークする(例:購入やマイルストーン)
- ユーザーが方向を変えたときに目標を放棄する
// 目標は自動管理されます——必要な場合のみオーバーライド
// 現在の目標を一覧表示
const goals = await client.agents.listGoals("agent-id", { userId: "user-123" });
// 目標を手動作成(オプション)
const goal = await client.agents.createGoal("agent-id", {
userId: "user-123",
title: "Onboarding",
description: "Complete onboarding checklist",
type: "task",
priority: 1,
});
// ビジネスイベント後に目標を達成済みとしてマーク
await client.agents.updateGoal("agent-id", goal.goal_id, {
userId: "user-123",
status: "achieved",
});ムードが応答に与える影響
ムード状態はAIコンテキストに自動的に含まれます。エージェントはそれに応じてトーンを調整します。
- 高い幸福感: より熱狂的で、感嘆符を使い、ポジティブな観察を共有する
- 低いエネルギー: 短い応答、疲れを表現、トピック探索のプロアクティブさが低下
- 低い落ち着き: 不安を表現したり安心を求めたりする可能性があり、注意力が短くなる
- 高い愛着: より個人的な言葉遣い、親しみやすい表現、深い感情的関与
実践ガイド
ムードと感情はコンパニオンにとって非常に重要です。タスクエージェントの場合はこのシステムを大部分無視できます。エンタープライズエージェントの場合、返信をこれで駆動しなくても読み取り側はセンチメントシグナルとして有用です。
ムードはプロダクトの中心です。 4次元状態(幸福感・エネルギー・落ち着き・愛着)が、Lunaが単にメッセージに返答するだけでなく、「その日を過ごしている」ように感じさせるものです。ユーザーがコンパニオンの感情状態を一目で読み取れるようにUIに表示しましょう。
const mood = await client.agents.getMood("agent-id", {
userId: "user-123",
});
// UI駆動:背景色のティント、アバター表情の調整、環境音の選択
renderMoodIndicator(mood.happiness, mood.energy);ムードは会話から自動的に更新されます。 各チャットの感情的な内容から自動的にムードシフトが適用されるため、デルタを手動でプッシュする必要はありません。特定のイベントをエージェントに反映させたい場合は、次のチャットターンにメッセージ(例:「system」コンテキスト)として含めてください。プラットフォームがポストターン処理でイベントを抽出し、ムードシフトを適用します。
タイムマシンをナラティブ駆動に活用。 ムード履歴をクエリして「3週間前は辛い時期だった」というモーメントを表示します——関係に「フェーズ」があったとユーザーが感じると、コンパニオンはより深みを増します。