Skip to main content
Sonzai Docs

对话

实时聊天生命周期:发送消息、流式接收响应,让平台自动更新智能体状态。

会话流程

每次对话遵循简单的三步生命周期:

1. 发送聊天请求   — 传入智能体 ID、用户 ID、应用上下文和消息
2. 接收流式响应   — 实时将 token 渲染给用户
3. 平台自动更新   — 记忆、情绪、关系和人格同步演化

聊天(非流式)

对于简单的请求-响应流程,使用标准聊天方法。

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

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

const response = await client.agents.chat("agent-id", {
  messages: [{ role: "user", content: "Hello!" }],
  userId: "user-123",
  language: "en",
});

console.log(response.content);

聊天(流式)

实时流式接收 token,获得更流畅的响应体验。底层使用 Server-Sent Events (SSE)。

for await (const event of client.agents.chatStream("agent-id", {
  messages: [{ role: "user", content: "Tell me a story" }],
  userId: "user-123",
  language: "en",
  timezone: "America/New_York",
})) {
  process.stdout.write(event.choices?.[0]?.delta?.content ?? "");
}

SSE 格式

REST 端点发送与 OpenAI 兼容的 SSE 数据块。每行以 data: 开头。流以 data: [DONE] 结束。

应用上下文

在每个请求中传递应用状态,使智能体能够在对话中引用。平台不会缓存此状态 — 每次聊天调用都需要发送。

for await (const event of client.agents.chatStream("agent-id", {
  messages: [{ role: "user", content: "What should I do next?" }],
  userId: "user-123",
  gameContext: {
    customFields: {
      department: "Engineering",
      currentTask: "Q2 roadmap review",
      ticketsOpen: 12,
      role: "Senior Developer",
    },
  },
})) {
  process.stdout.write(event.choices?.[0]?.delta?.content ?? "");
}

平台管理的状态更新

每次交互后,平台自动处理以下内容。无需额外的 API 调用。

记忆提取

从对话中提取事实、事件和承诺。

情绪更新

检测到的情感主题会影响情绪维度。

人格演化

基于交互模式的渐进式大五人格变化。

习惯追踪

重复出现的模式成为被追踪的习惯。

关系更新

更新默契度和关系叙事。

目标进度

记录活跃目标的进展。

多智能体对话

使用对话 API 编排多个智能体之间的对话,或让智能体在没有用户直接消息的情况下响应共享场景上下文。

const response = await client.agents.dialogue("agent-id", {
  userId: "user-123",
  messages: [
    { role: "user", content: "Tell the group about your weekend plans" },
  ],
  sceneGuidance: "A casual team standup meeting",
});

console.log(response.content);
工具调用

内部工具(记忆、状态)自动运行。您只需配置可选工具以提供终端用户功能:

可选工具

generate_image根据文本提示生成图像
generate_video根据文本提示生成视频
generate_sound生成音效
generate_music生成背景音乐
generate_tts文本转语音

通过 SDK 启用

for await (const event of client.agents.chatStream("agent-id", {
  messages: [{ role: "user", content: "Show me a sunset!" }],
  userId: "user-123",
  tools: ["generate_image"],
})) {
  if (event.type === "image") {
    console.log("Generated image:", event.imageUrl);
  }
}

根据产品功能启用可选工具。记忆和状态工具由平台管理。