Skip to main content
Sonzai Docs

人格系统

创建具有独特人格的智能体,并观察它们通过交互不断演化。

大五人格模型

每个智能体都有大五人格(OCEAN)分数。行为特质、情绪基线、语言风格和交互偏好均源自这些分数。

开放性0.0 - 1.0好奇心、创造力、对新经验的开放程度。高 = 富有想象力、爱冒险。低 = 务实、传统。
尽责性0.0 - 1.0组织能力、自律、目标导向。高 = 有条理、可靠。低 = 随性、灵活。
外向性0.0 - 1.0社交能量、热情、自信。高 = 外向、充满活力。低 = 内敛、善于思考。
宜人性0.0 - 1.0温暖、合作、共情。高 = 关怀、信任。低 = 直接、怀疑。
神经质0.0 - 1.0情绪敏感性、焦虑倾向。高 = 情绪反应强烈。低 = 情绪稳定。

confidence 字段(0.0-1.0)控制分数对行为的影响强度。低置信度 = 更通用;高置信度 = 更具差异性。

创建带人格的智能体

创建智能体时传入大五人格分数。平台自动生成人格提示词、语言风格和行为倾向。

import { Sonzai } from "@sonzai-labs/agents";

const client = new Sonzai({ apiKey: "sk-..." });

const agent = await client.agents.create({
  agentId: "your-stable-uuid",  // 可选但推荐
  name: "Luna",
  gender: "female",
  big5: {
    openness:          0.75,
    conscientiousness: 0.60,
    extraversion:      0.80,
    agreeableness:     0.70,
    neuroticism:       0.30,
  },
  language: "en",
});

console.log(agent.agentId);

幂等 — 传入相同的 agentId 始终执行 upsert 操作。可安全在每次部署时调用。参见 快速开始 了解推荐的 UUID 推导模式。

获取人格档案

检索智能体的当前人格档案,包括推导的语言风格和交互偏好。

const profile = await client.agents.personality.get("agent-id");

console.log(profile.big5);
console.log(profile.speechPatterns);
console.log(profile.interactionPreferences);

更新人格

在执行人格评估后更新大五人格分数。confidence 值控制新分数对行为的影响强度。

await client.agents.personality.update("agent-id", {
  big5: {
    openness:    0.82,
    extraversion: 0.75,
  },
  confidence: 0.8,   // 0.0-1.0
});
confidence < 0.3: 试探性的。最小调整。
confidence 0.3 - 0.7: 与现有分数混合。
confidence > 0.7: 强烈影响人格。

人格演化历史

检索智能体的人格变化历史 — 适用于向用户展示成长时刻。

const history = await client.agents.personality.history("agent-id");

for (const shift of history.shifts) {
  console.log(shift.trait, shift.delta, shift.triggeredBy, shift.createdAt);
}

交互偏好

影响对话风格的推导偏好:

节奏

适中

推导自: 外向性水平

正式程度

随意平衡正式

推导自: 尽责性水平

幽默风格

冷幽默俏皮温暖

推导自: 开放性 + 宜人性

情感表达

内敛适度丰富

推导自: 神经质 + 外向性

人格演化

人格通过交互自然演化:

1
交互分析

每次对话后分析情感主题和模式。

2
微调整

根据对话内容对相关的大五人格维度进行小幅调整。

3
突破

当累积变化超过阈值时,触发'突破'事件 — 智能体意识到的重大人格变化。

4
档案重生成

人格提示词、语言风格和行为指令将重新生成,以反映演化后的人格。

用户级人格覆盖

为特定用户调整人格行为,而不影响基础智能体档案。

// 应用用户级覆盖(如来自评估结果)
await client.agents.personality.setUserOverlay("agent-id", "user-123", {
  big5: {
    extraversion: 0.55,  // 智能体与此用户交流时更内敛
  },
  confidence: 0.6,
});