メインコンテンツへスキップ
イベントは、エージェントと Cartesia プラットフォーム間の通信に使う型付きの Python オブジェクトです。エージェントはハーネス(実行環境)から 入力イベント を受け取り、出力イベント を yield(生成)して会話を制御します。
どのイベントがエージェントをトリガーするか、また DTMF への応答や割り込みの抑止などの動作をカスタマイズする方法については 会話ループの制御 を参照してください。

入力イベント

入力イベントは、Cartesia ハーネスからエージェントが受け取るイベントです。すべての入力イベントには、完全な会話履歴を含むオプションの history フィールドがあります。historyNone の場合、そのイベントは履歴リスト内で使用されています。history にリストが含まれている場合、そのイベントには完全な会話コンテキストが添付されています。

通話ライフサイクル

イベント説明
CallStarted通話が接続された
CallEnded通話が終了した

ユーザーターンイベント

イベント説明
UserTurnStartedユーザーが発話を開始(デフォルトで割り込みをトリガー)
UserTurnEndedユーザーが発話を終了(デフォルトで新しいエージェントターンをトリガー)
UserTextSentユーザーのテキスト内容(UserTurnEnded.content 内)
UserDtmfSentユーザーが DTMF ボタンを押した

エージェントターンイベント(履歴内)

イベント説明
AgentTurnStartedエージェントがターンを開始
AgentTurnEndedエージェントがターンを終了
AgentTextSentエージェントが話したテキスト
AgentDtmfSentエージェントが送信した DTMF トーン

ハンドオフイベント

イベント説明
AgentHandedOffハンドオフツールに制御を移譲した

カスタムイベント

イベント説明
UserCustomSentクライアントが WebSocket の custom イベント で送信したカスタムメタデータ
クライアントアプリケーションがコールストリームに custom WebSocket イベントを送信したときに受信します。イベントには、クライアントが含めた任意のキーと値のペアを持つ metadata 辞書が含まれます:

出力イベント

出力イベントは、会話を制御するためにエージェントが yield(生成)するイベントです。

発話

AgentSendText でメッセージを送信できます。
デフォルトでは、ユーザーはエージェントを中断できます。免責事項やその他の重要なメッセージで中断されたくない場合は、interruptible フラグを false に設定できます。

通話制御

動的設定

AgentUpdateCall を使って、会話の途中で通話設定(ボイス、発音、言語)を更新します:
AgentUpdateCall パラメータ:
フィールド説明
typeLiteral["update_call"]イベントタイプ識別子(自動設定)
voice_idOptional[str]エージェントのボイスを更新
pronunciation_dict_idOptional[str]発音辞書を更新
languageOptional[str]音声認識(STT)および音声合成(TTS)モデルで使用される言語を更新
すべてのフィールドはオプションで、設定されたフィールドのみが更新されます。

ツールイベント

LlmAgent がツール実行を追跡するために発行します:

ロギング

カスタムイベント

エージェントからハーネスに任意のメタデータを送信します:
UserCustomSent と組み合わせて、メタデータの双方向交換を実現できます。

ボイスと言語の制御

通話の途中でボイスや音声認識言語を変更します:
language フィールドは ASR(音声認識)言語を設定します。Ink STT がサポートする任意の言語コード、または自動言語検出のための "multilingual" を指定できます。

イベント履歴

すべての入力イベントには、会話履歴を含むオプションの history フィールドがあります。historyNone の場合、そのイベントは履歴リスト内にあります。リストが含まれている場合は、完全な会話コンテキストが添付されています。LlmAgent はこれを自動的に処理するため、履歴を理解する必要があるのはカスタムエージェントを構築する場合のみです。

履歴へのアクセス

履歴リストに含まれるイベントは、冗長なネストを避けるため history=None を持ちます。イベントタイプは通常の入力イベントと同じです:
イベントタイプ説明
CallStarted通話が開始
UserTurnStartedユーザーが発話を開始
UserTextSentユーザーの書き起こされた発話
UserDtmfSentユーザーの DTMF ボタン押下
UserTurnEndedユーザーが発話を終了
AgentTurnStartedエージェントが応答を開始
AgentTextSentエージェントが話したテキスト
AgentDtmfSentエージェントの DTMF トーン
AgentTurnEndedエージェントが応答を終了
CallEnded通話が終了
LlmAgent はイベント履歴を自動的に LLM メッセージに変換します:
  • ユーザーメッセージ: UserTextSent イベントから
  • アシスタントメッセージ: AgentTextSent イベントから
  • ツール呼び出し: AgentToolCalled および AgentToolReturned イベントから
つまり LLM は、過去のツール呼び出しとその結果を含む完全なコンテキストを把握できるため、不必要な API 呼び出しを行わずにその情報を参照できます。
LlmAgent を使わずにカスタムエージェントを構築する場合、コンテキスト、要約、パターン検出のために履歴を使用できます: