Skip to main content
Sonzai Docs

会話

リアルタイムチャットライフサイクル:メッセージ送信、応答ストリーミング、 プラットフォームによるエージェント状態の自動更新。

セッションフロー

すべての会話はシンプルな3ステップのライフサイクルに従います:

1. Send a chat request   — Pass agent ID, user ID, application context, and messages
2. Receive stream        — Render tokens to the user in real time
3. Platform auto-updates — Memory, mood, relationships, and personality evolve

チャット(非ストリーミング)

シンプルなリクエスト・レスポンスフローには、標準のチャットメソッドを使用します。

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);

チャット(ストリーミング)

トークンが到着次第ストリーミングして、よりレスポンシブな体験を提供します。 内部では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);
  }
}

プロダクトの機能に基づいてオプトインツールを有効にしてください。 記憶と状態のツールはプラットフォーム管理です。