会話API
@grant CAT.agent.conversation
会話APIはAgentシステムの中核であり、スクリプトがAI会話の作成、メッセージの送信、返信の受信を可能にします。
会話を作成
const conv = await CAT.agent.conversation.create(options?);
ConversationCreateOptions
| パラメータ | 型 | デフォルト | 説明 |
|---|---|---|---|
id | string | 自動生成 | 会話ID、既存の会話の再開に使用 |
system | string | — | カスタムシステムプロンプト、組み込みプロンプトの後に追加 |
model | string | デフォルトモデル | モデルID(管理ページで設定後に取得) |
maxIterations | number | 20 | 単一の会話ターン内の最大ツール呼び出しループ数 |
skills | "auto" | string[] | — | "auto"はすべてのSkillを自動的に読み込み、または特定のSkill名の配列 |
tools | ToolDefinition[] | — | カスタムツールリスト(以下参照) |
commands | Record<string, CommandHandler> | — | カスタム会話コマンド |
ephemeral | boolean | false | ストレージに永続化されない一時的な会話 |
cache | boolean | true | プロンプトキャッシュを有効にする(トークン使用量を削減) |
カスタムツール
スクリプトはAIが呼び出す独自のツールを登録できます:
const conv = await CAT.agent.conversation.create({
tools: [{
name: "get_weather",
description: "指定された都市の天気情報を取得",
parameters: {
type: "object",
properties: {
city: {
type: "string",
description: "都市名"
},
unit: {
type: "string",
enum: ["celsius", "fahrenheit"],
description: "温度単位"
}
},
required: ["city"]
},
handler: async (args) => {
// args = { city: "北京", unit: "celsius" }
const data = await fetchWeather(args.city, args.unit);
return { temperature: data.temp, condition: data.condition };
}
}]
});
ツールのparametersはJSON Schema仕様に従います。AIはdescriptionを使用して、ツールをいつ、どのように呼び出すかを判断します。
カスタムコマンド
/で始まるカスタムコマンドを登録できます:
const conv = await CAT.agent.conversation.create({
commands: {
"/export": async (args) => {
// ユーザーが"/export pdf"と入力したときにトリガー
await exportToPdf(args);
return "エクスポート完了";
}
}
});
組み込みコマンド:/new(会話履歴をクリア)— カスタムハンドラで上書きできます。
既存の会話を取得
const conv = await CAT.agent.conversation.get(conversationId);
// 会話が存在しない場合はnullを返す
ConversationInstanceのメソッド
chat — 同期チャット
const reply = await conv.chat(content, options?);
メッセージを送信し、完全な返信を待ちます。AIは返信中にツールを呼び出す場合があります。chatはすべてのツール実行が完了するまで待ってから最終結果を返します。
パラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
content | string | ContentBlock[] | メッセージ内容、テキストまたはマルチモーダルコンテンツブロック |
options.tools | ToolDefinition[] | この呼び出しのみで追加する追加ツール(作成時に渡されたツールとマージ) |
ChatReplyを返します:
| フィールド | 型 | 説明 |
|---|---|---|
content | string | ContentBlock[] | AIの返信内容 |
thinking | string | モデルの思考プロセス(一部のモデルのみサポート) |
toolCalls | ToolCall[] | この返信中に行われたツール呼び出しの記録 |
usage | { inputTokens, outputTokens } | トークン使用量 |
command | boolean | この返信がコマンドによってトリガーされたかどうか |
chatStream — ストリーミングチャット
const stream = await conv.chatStream(content, options?);
for await (const chunk of stream) {
// ストリーミングイベントを処理
}
AIの返信をリアルタイムで受け取ります — 出力を段階的に表示する場合に便利です。
StreamChunkイベントタイプ:
| タイプ |
|---|