- HTTP リクエスト
- パスパラメータ
- リクエストの本文
- レスポンスの本文
- 認可スコープ
- IAM 権限
- AssistantConfirmationResponse
- StreamChatAiAssistantRequest.ClientCapability
- OperationCompletedEvent
- ArtifactChunk
- ArtifactChunk.State
- OptionQuestionsChunk
- OptionQuestionsChunk.Question
- OptionQuestionsChunk.Option
- AssistantConfirmationRequest
- AssistantConfirmationRequest.Target
- SessionCheckpoint
- TurnResumeSnapshot
- TurnHandoffEvent
- TurnHandoffEvent.Reason
- TurnCompletedEvent
- TurnCompletedEvent.Reason
- UiEvent
- TurnMetadata
- TurnMetadata.ContractStreamingPhase
指定されたアシスタント セッションで AI アシスタントの Arc をストリーミング形式で実行します。
HTTP リクエスト
POST https://ces.googleapis.com/v1/{name=projects/*/locations/*/apps/*/assistantSessions/*}:streamChatAiAssistant
この URL では gRPC Transcoding 構文を使用します。
パスパラメータ
| パラメータ | |
|---|---|
name |
必須。アシスタントの実行に使用されるアシスタント セッション。形式: |
リクエストの本文
リクエストの本文には、次の構造のデータが含まれます。
| JSON 表現 |
|---|
{ "message": string, "attachedGcsUris": [ string ], "contextToken": string, "confirmationResponse": { object ( |
| フィールド | |
|---|---|
message |
省略可。アシスタント エージェントに送信するメッセージ。 |
attachedGcsUris[] |
省略可。このターン中にユーザーがアップロードしたファイルの Cloud Storage URI。例: 「gs://cxas-transient-uploads/uuid/prd.pdf」 |
contextToken |
省略可。 |
confirmationResponse |
省略可。保留中の |
clientCapabilities[] |
省略可。このクライアントがレンダリングできるレスポンス機能。サーバーは、機能( |
operationCompletedEvent |
省略可。クライアント管理の長時間実行オペレーションの完了を待機して一時停止したアシスタント セッションを再開します。 |
resumeFromSequenceNumber |
省略可。処理中または完了したターンからイベントを再開して再生するためのオプションのカーソル。 |
attachOnly |
省略可。新しいメッセージを送信せずに、既存の処理中のターンにアタッチするためのオプション フラグ。 |
レスポンスの本文
SessionService.StreamChatAiAssistant に対するレスポンス メッセージです。
成功した場合、レスポンスの本文には次の構造のデータが含まれます。
| JSON 表現 |
|---|
{ "eventId": string, "eventTime": string, "uiEvent": { object ( |
| フィールド | |
|---|---|
eventId |
イベントの固有識別子。 |
eventTime |
イベントが発生したタイムスタンプ。 RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: |
uiEvent |
省略可。UI イベントのペイロード。 |
turnMetadata |
省略可。ターンレベルのメタデータとインテントの分類。 |
sequenceNumber |
省略可。このセッション ターンの単調増加するシーケンス番号。 |
turnInProgress |
省略可。ターンがバックグラウンドでまだアクティブに実行されているかどうかを示します。 |
| イベント ペイロード。相互に排他的なフィールドのリストは次のとおりです。レスポンスに設定されるフィールドは、最大 1 つです。 | |
textChunk |
テキスト トークン(Gemini の回答を単語ごとにストリーミングする場合)。 |
status |
簡単なステータス更新。 |
thoughtChunk |
思考テキスト チャンク(回答を生成する前のエージェントの推論)。 |
toolCall |
ツール呼び出し実行イベント。 |
toolResponse |
ツール呼び出しレスポンス イベント。 |
artifactChunk |
生成されたドキュメント アーティファクト イベント(ライブ プレビューの差分 + 最終的な Cloud Storage ポインタ)。 |
optionQuestionsChunk |
モデルターンから解析された構造化された明確化オプション。コンソールでは、これらは未加工のテキストではなく、選択可能なオプション リストとしてレンダリングされます。 |
confirmationRequest |
エージェントが一時停止したブロック確認。エージェントは、後続のリクエストの |
sessionCheckpoint |
ユーザーの意図とローリング サマリーを含むセッション チェックポイント / 圧縮要約イベント。 |
resumeSnapshot |
処理中のターンの圧縮されたリプレイ。ライブイベントの前に、アタッチまたは再開の最初のイベントとして送信されます。クライアントは、このターンのローカルでレンダリングされた状態をスナップショットの内容に置き換えます。 |
handoff |
resumeFromSequenceNumber を使用してサイレントに再接続するようクライアントに指示します。このストリームを処理するタスクは終了し、ターンは別の場所で続行されます。エラーではありません。このイベントの後、ストリームは正常に完了します。 |
turnCompleted |
ターンが終了しました。元のストリームと、接続されたストリームまたは再開されたストリームで、すべてのターンの最後のイベントとして送信されます。これにより、クライアントはストリームの終了から推測するのではなく、明示的なシグナルでターンを終了できます。 |
| 相互に排他的なフィールドの終了。 | |
認可スコープ
次の OAuth スコープのいずれかが必要です。
https://www.googleapis.com/auth/cloud-platformhttps://www.googleapis.com/auth/ces
詳細については、Authentication Overview をご覧ください。
IAM 権限
name リソースに対する次の IAM 権限が必要です。
ces.assistantSessions.get
詳細については、IAM のドキュメントをご覧ください。
AssistantConfirmationResponse
AssistantConfirmationRequest に対するユーザーの回答。一時停止したエージェントを再開するために、次の SessionService.StreamChatAiAssistant 呼び出しで送信されます。
| JSON 表現 |
|---|
{ "confirmationId": string, // The following is a list of mutually exclusive fields. At most one of the // fields will be set in a response: "confirmed": boolean, "answerText": string // End of mutually exclusive fields. } |
| フィールド | |
|---|---|
confirmationId |
|
| ユーザーの回答。相互に排他的なフィールドのリストは次のとおりです。レスポンスに設定されるフィールドは、最大 1 つです。 | |
confirmed |
バイナリ回答: true は一時停止されたアクションを承認し、false は拒否します。 |
answerText |
選択したオプションの submitText、または自由形式のユーザー テキスト。一時停止されたアクションはキャンセルされ、テキストがエージェントに渡されて処理されます。 |
| 相互に排他的なフィールドの終了。 | |
StreamChatAiAssistantRequest.ClientCapability
クライアントが宣言できるレスポンス機能。
| 列挙型 | |
|---|---|
CLIENT_CAPABILITY_UNSPECIFIED |
指定されていない機能。無視されます。 |
CONFIRMATION_CARDS |
クライアントは AssistantConfirmationRequest カードをレンダリングし、confirmationResponse を介して回答します。 |
CLIENT_MANAGED_LRO |
クライアントは、オペレーションをポーリングし、operationCompletedEvent を送信してターンを再開することで、長時間実行オペレーションを帯域外で管理します。宣言されていない場合、サーバーは LRO ポーリングを管理し、ターンをインラインで完了します。 |
PROJECT_SCOPE |
クライアントは、プロジェクト スコープのイベントをレンダリングします。typedPayload カード、ツール呼び出しとレスポンスの targetApp、確認リクエストの targets、ターンの完了の touchedApps。 |
OperationCompletedEvent
非同期の長時間実行オペレーション(LRO)の完了後にアシスタント セッションを再開するために、クライアントまたはバックグラウンド ワーカーから送信されるイベント。
| JSON 表現 |
|---|
{
"operationName": string,
"targetResourceName": string,
"operationType": string,
"status": string,
"deduplicationToken": string,
"error": {
object ( |
| フィールド | |
|---|---|
operationName |
オペレーション リソース名(例: |
targetResourceName |
オペレーションの対象となる、またはオペレーションによって生成されるプライマリ リソース(評価実行 ID、アプリ ID、データセット ID など)。 |
operationType |
オペレーション タイプまたはツール名(「run_evaluation」、「copy_app」、「export_app」など)。 |
status |
オペレーション実行のステータス(「SUCCEEDED」、「FAILED」、「CANCELLED」など)。 |
deduplicationToken |
同時実行のブラウザタブから重複したターンの実行を防ぐための、オプションの重複除去トークン(UUID など)。 |
error |
オペレーションが失敗した場合の正規エラー ステータス(省略可)。 |
metadata |
省略可能な構造化された結果メタデータ(pass_rate、total_examples、export_uri など)。 |
ArtifactChunk
アシスタントが生成しているドキュメント アーティファクト(マークダウン TDD など)のストリーミングされたフラグメント。ドキュメントの書き込み中にコンテンツ デルタがストリーミングされるため、クライアントはライブ プレビューをレンダリングできます。ファイルが永続化されると、FINALIZED チャンクが Cloud Storage URI を伝送します。
| JSON 表現 |
|---|
{
"artifactId": string,
"displayName": string,
"mimeType": string,
"contentDelta": string,
"gcsUri": string,
"state": enum ( |
| フィールド | |
|---|---|
artifactId |
アーティファクトの識別子。ストリーム内の 1 つのアーティファクトのすべてのチャンクで安定しています。 |
displayName |
ユーザーに表示されるファイル名(例: 「hotel_booking_tdd.md」)。STARTED で設定(FINALIZED で繰り返し)。 |
mimeType |
アーティファクト コンテンツの IANA メディアタイプ(例: text/markdown)。 |
contentDelta |
増分アーティファクトのコンテンツ。DELTA チャンクに設定します。 |
gcsUri |
アーティファクトが永続化された Cloud Storage オブジェクト。FINALIZED チャンクに設定します。 |
state |
このチャンクのライフサイクル位置。 |
targetApp |
出力専用。このアーティファクトが生成されたアプリ(1 つのアプリ用に生成された場合)。形式: |
ArtifactChunk.State
アーティファクトのストリーム内でのこのチャンクのライフサイクル位置。
| 列挙型 | |
|---|---|
STATE_UNSPECIFIED |
未使用のデフォルト。 |
STARTED |
アシスタントがアーティファクトの生成を開始しました。 |
DELTA |
コンテンツの増分。contentDelta が設定されています。 |
FINALIZED |
アーティファクトが永続化されました。gcsUri が設定されています。 |
FAILED |
生成または永続化に失敗しました。アーティファクトは保存されませんでした。 |
CLOSED |
ドキュメントのストリーミングが完了しました。コンテンツは contentDelta チャンクを介して完全に配信されました。永続化は引き続き行われる可能性があります。アーティファクトが保存されると、gcsUri を含む FINALIZED チャンクが送信されます。 |
OptionQuestionsChunk
アシスタントがユーザーに選択を求める構造化された明確化オプション。モデルのターン外でサーバーサイドで変換されます(オプション ブロックは、ストリーミングされたテキストと永続化されたテキストから削除されます)。コンソールには、キーボードで操作可能なオプション リストが作成ツールの上のドックに表示されます。
| JSON 表現 |
|---|
{
"questions": [
{
object ( |
| フィールド | |
|---|---|
questions[] |
このターンで質問された内容。複数のエントリがコンソールの「1 of N」ページャーを駆動します。 |
OptionQuestionsChunk.Question
1 つの質問とその選択肢。
| JSON 表現 |
|---|
{
"question": string,
"options": [
{
object ( |
| フィールド | |
|---|---|
question |
質問のヘッダー テキスト。 |
options[] |
選択可能なオプション(表示順)。 |
OptionQuestionsChunk.Option
選択可能なオプションが 1 つ。
| JSON 表現 |
|---|
{ "title": string, "details": string, "submitText": string } |
| フィールド | |
|---|---|
title |
短い書式なしテキストのオプション タイトル(マークダウンなし、番号なし)。 |
details |
オプションのトレードオフの詳細がセカンダリ テキストとして表示されます。 |
submitText |
オプションが選択されたときに送信するオプションのメッセージ テキスト。空の場合はデフォルトで |
AssistantConfirmationRequest
エージェントのアクションを続行する前に、アシスタントが回答する必要があるブロック質問または確認。リクエスト元のエージェントは一時停止し、後で StreamChatAiAssistantRequest.confirmation_response で回答が届いた場合にのみ再開します。
| JSON 表現 |
|---|
{ "confirmationId": string, "context": string, "positiveLabel": string, "negativeLabel": string, "questions": [ { object ( |
| フィールド | |
|---|---|
confirmationId |
このリクエストをレスポンスに関連付ける識別子。クライアントには不透明。応答リクエストでそのままエコーする必要があります。 |
context |
確認対象を説明するコンテキスト(エージェントが実行するアクション、回答が必要な質問など)。マークダウンではなく、書式なしテキストとしてレンダリングされます。 |
positiveLabel |
2 択の確認の承認アクションのラベル(例: 「公開」)。 |
negativeLabel |
2 択の確認で拒否する操作のラベル(例: 「まだ」)。 |
questions[] |
確認の多肢選択形式。入力すると、カードに選択可能なオプション リストが表示され、選択したオプションの submitText(または自由形式のユーザー テキスト)が |
tool |
エージェントが一時停止したツール呼び出しの名前(例: 「update_app」)。カードのヘッダーに使用されます。純粋な質問の場合は未設定。 |
agentName |
確認を生成したエージェントの表示ラベル(例: |
expireTime |
この確認に回答できなくなる時間。期限切れのカードは無効としてレンダリングされ、サーバーは次のターンで確認を拒否するため、一時停止されたエージェントは無期限に待機することはありません。 RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: |
targets[] |
確認されたアクションによって変更されるすべてのもの。これにより、コンソールで「2 個のアプリを更新」とアプリごとに 1 つのバッジをレンダリングできます。以前の単一ターゲット カードの場合は空です。 |
AssistantConfirmationRequest.Target
確認済みの操作によって変更される 1 つのリソース。
| JSON 表現 |
|---|
{ "resource": string, "displayName": string, "action": string, "targetApp": string } |
| フィールド | |
|---|---|
resource |
変更されるリソース(完全なリソース名)。 |
displayName |
カードのリソースまたはアプリの表示名。 |
action |
アクション( |
targetApp |
リソースが属するアプリ。アプリの作成など、ロケーション スコープのアクションの場合は空です。形式: |
SessionCheckpoint
セッション タイトルと UI の推定ユーザー インテントを含むセッション チェックポイント。
| JSON 表現 |
|---|
{ "userIntent": string } |
| フィールド | |
|---|---|
userIntent |
セッションの推定ユーザー目標またはトピック(例: 「e コマース サポート エージェントの構築」)。 |
TurnResumeSnapshot
処理中のターンの圧縮されたリプレイ。これまでにターンの表示可能な出力をレンダリングするために必要なすべての情報と、ライブイベントが継続する位置が含まれます。
| JSON 表現 |
|---|
{
"turnId": string,
"resolvedSequenceNumber": string,
"events": [
{
object ( |
| フィールド | |
|---|---|
turnId |
アタッチされるターンを識別します。 |
resolvedSequenceNumber |
このスナップショットが表す位置。ライブイベントは、これよりも厳密に大きい sequenceNumber で続きます。クライアントがリクエストした resumeFromSequenceNumber よりも小さい場合、フラッシュされた進行状況はクライアントがすでにレンダリングした内容よりも遅れています。クライアントは、スナップショットを適用する前に、この位置を超えるこのターンのレンダリングされたコンテンツを破棄する必要があります。 |
events[] |
ライブ ストリーミングと同じイベント形状を使用して、ターンの表示可能な出力をレンダリング順に再構築する圧縮イベント。 |
orphanDeadlineTime |
クライアントが接続されていない場合に、ターンが終了するタイミング。 RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: |
TurnHandoffEvent
このタスクがターンの途中でストリームの提供を停止する前に出力されます(サーバーの再起動など)。ターンの状態は永続化されます。resumeFromSequenceNumber を含む再接続により、別のタスクで継続されます。
| JSON 表現 |
|---|
{
"turnId": string,
"reason": enum ( |
| フィールド | |
|---|---|
turnId |
再開するターンを識別します。 |
reason |
ストリームが引き継がれている理由。 |
TurnHandoffEvent.Reason
ストリームが引き継がれる理由。
| 列挙型 | |
|---|---|
REASON_UNSPECIFIED |
指定なし。 |
SERVER_RESTART |
サービング タスクがシャットダウンしている(リリース プッシュまたは再スケジュール)。 |
TurnCompletedEvent
ターンのターミナル イベント(StreamChatAiAssistantResponse.turn_completed を参照)。
| JSON 表現 |
|---|
{
"turnId": string,
"reason": enum ( |
| フィールド | |
|---|---|
turnId |
終了したターンの識別子。TurnResumeSnapshot.turn_id および ActiveTurnInfo.turn_id と一致します。 |
reason |
ターンが終了した理由。 |
finalSequenceNumber |
ターンで生成された最後のイベントのシーケンス番号。カーソルが低いクライアントはコンテンツを見逃しているため、セッションを再読み込みしてコンテンツを表示する必要があります。 |
touchedApps[] |
このターンで対象となった、または変更されたアプリ。コンソールは、これらのアプリのストアのみを更新できます。プロジェクト スコープのセッションのみ。形式: |
TurnCompletedEvent.Reason
ターンが終了した理由。これにより、遅れて接続したクライアントは、空のストリームから推測するのではなく、結果を言葉で表現できます。
| 列挙型 | |
|---|---|
REASON_UNSPECIFIED |
指定なし。 |
COMPLETED |
ターンが完了しました。セッションは commit された出力を保持します。 |
ABANDONED |
ターンを駆動するタスクがなくなったため、コミットされた部分にシールされ、続行できません。 |
RESUME_UNAVAILABLE |
このサーバーはセッションのアタッチまたは再開を処理しないため、何もテールされませんでした。クライアントは代わりにセッションを再読み込みする必要があります。 |
UiEvent
UI イベント ペイロードを表します。
| JSON 表現 |
|---|
{ "mimeType": string, "jsonPayload": string } |
| フィールド | |
|---|---|
mimeType |
UI イベント ペイロードの形式を示すメディアタイプ(MIME タイプ)(例: 「application/json+a2ui」)。 |
jsonPayload |
A2UI サーフェスを表す JSON ペイロード。 |
TurnMetadata
ターンレベルのメタデータとインテントの分類。
| JSON 表現 |
|---|
{
"contractRelated": boolean,
"contractFinalized": boolean,
"contractStreamingPhase": enum ( |
| フィールド | |
|---|---|
contractRelated |
このアシスタントのターンが契約に関連しているかどうか(契約のドラフト、調整、抽出、改訂など)を示します。 |
contractFinalized |
契約の下書きが公開された(リビジョンが有効化された)ターンの最終アーティファクト イベントに設定されます。このドラフトの明確化フローのターミナル: contractProgress は信頼できるものであり、完了しています。 |
contractStreamingPhase |
契約アーティファクト フェンスのストリーミング中に生成される処理中の進捗状況の見積もりと、revision-turn-start イベントにのみ設定されます。信頼できるペイロードでは設定されていません。 |
contractDraftComplete |
すべてのプレースホルダが解決された(contractProgress が 100%)契約ドラフトのターミナル イベントに設定されます。ドラフトが公開されたかどうかは関係ありません。クライアントは、契約の進行状況の表示を完了して閉じます。公開は contractFinalized によって別途報告されます。 |
TurnMetadata.ContractStreamingPhase
契約の進行状況ペイロードのストリーミング フェーズ。
| 列挙型 | |
|---|---|
CONTRACT_STREAMING_PHASE_UNSPECIFIED |
ペイロードは信頼できるものです(完全な契約ドキュメント、永続化されたスナップショット、またはドラフト前の状態から計算されます)。クライアントは、以前に受信した進行状況をこの値に置き換える必要があります。 |
DRAFTING |
最初の契約ドラフトがストリーミングされています。contractProgress は処理中の推定値です。1 つのアーティファクト フェンス内で減少しない、信頼できる範囲の下限、柱の内訳は totalItemCount == 0 で、推定された柱の状態を示します。 |
REVISING |
既存の契約の改訂がストリーミングされている(アノテーションの送信後など)。DRAFTING と同じ見積もりセマンティクス。 |