コンソール

リアルタイム動画理解

WSS/v1/realtime

WebSocketで画像フレームを継続的に送信して質問すると、サーバーが増分テキストイベントを返します。このAPIは視覚理解のプロトコルであり、音声Realtimeとは互換性がなく、SSEでもありません。

接続と認証

HTTP GETでWebSocketにアップグレードします。接続先はwss://api.mosi.cn/v1/realtimeで、modelクエリパラメータでモデルを指定する必要があります。APIキーはAuthorizationリクエストヘッダーにのみ指定できます。

フィールド型必須説明
model: string必須

モデルID。安定版IDまたはスナップショットIDをWebSocket接続先のmodelクエリパラメータに指定します

Authorization: HTTP header必須

Bearer <API Key>。クエリパラメータやWebSocketサブプロトコルによる指定には対応していません

セッションの流れ

段階クライアントサーバー側の応答と判定
接続の確立WebSocketハンドシェイクを完了しますsession.createdを受信します。接続時にセッションが自動作成されます
設定session.configureを1回だけ送信しますsession.configuredを受信し、session.readyを待ちます
画像の送信まずinput.frame JSONを送信し、次に画像バイナリを送信しますinput.frame.readyを待ってからバイナリを送信し、input.frame.acceptedを受信してから次の入力を送信します。画像だけでは回答は自動生成されません
質問input.promptを単独で送信します質問に画像を再度添付する必要はありません。accepted / processedを受信し、テキスト、沈黙、割り込みのイベントを受信する場合があります
継続または終了フレームの送信を続けるか、final=trueを設定する / session.abortを送信しますresponse.doneは1つの回答セグメントを終了するだけで、セッションを終了するのはsession.doneです

クライアントイベント

フィールド型説明
session.configure: event

接続の確立後に必ず1回送信し、session.created.configure_timeout_sの期限内に完了する必要があります。

input.frame: event

画像フレームのメタデータを送信します。input.frame.readyを受信したら、続けて完全な画像バイナリを送信します。

input.prompt: event

質問テキストを単独で送信します。フィールド名はtextではなくpromptです。質問には直近に受信した画像が使われます。

session.abort: event

セッション全体を能動的に終了します。seq_noを消費せず、その他のフィールドも受け付けません。

サーバーイベント

フィールド型説明
セッションイベント: server events

接続、設定、準備完了、セッションの終了状態の判定に使用します。

入力イベント: server events

画像フレームや質問の受信準備、送信、処理完了を確認するために使用します。

出力イベント: server events

増分テキストの読み取りと、1つの回答セグメントが沈黙、割り込み、正常終了のいずれであるかの判定に使用します。

使用量イベント: server events

処理中の使用量と、回答またはセッションの累計使用量の読み取りに使用します。

エラーイベント: server events

プロトコルやサービスの異常の処理に使用します。

プロトコルの制限

項目現在のプロトコル値と説明
制御イベント1件あたりデフォルトで256 KiB以下で、画像バイナリのサイズとは別に計算します
設定と送信サーバーが定める設定期限内に設定を完了します。input.frame.readyの受信後10秒以内にバイナリを送信してください。タイムアウトするとcode=session_timeoutのerrorイベントが返され、セッションが終了します
入力キューデフォルトは4、設定可能な範囲は[1, 256]です。未処理入力の枠であり、セッションの同時実行数ではありません
コンテキストと時間サーバーが返すcontext_limitとセッション時間の制限のうち、先に達した方が適用されます

エラーコード

接続確立時の認証、権限、レート制限、一般的なHTTPエラーについては、エラーコードを参照してください。以下では、リアルタイム動画理解API固有のプロトコルエラーのみを示します。

エラーコード発生条件対処方法
invalid_requestクライアントのイベント/フィールド/順序が不正であるか、メッセージが大きすぎますリクエストを修正して再送信してください。接続が切断された場合は再接続してください
context_exhaustedセッションがコンテキストの上限に達しました現在のセッションを終了し、新しいセッションを確立してください
session_timeoutセッションが時間またはアイドルの制限に達したか、input.frame.readyの受信後10秒以内にバイナリが送信されませんでしたセッションのアクティビティとサーバーの制限を確認し、必要に応じて再接続してください
response_failedモデルの生成または処理に失敗しましたエラー情報を記録し、業務に応じて再試行するかどうかを判断してください
session_capacity_exceededリアルタイムセッションの容量が上限に達しました同時実行数を減らすか、しばらくしてから再試行してください

接続のクローズ

クローズコード意味クライアントの対応
1000サーバーがsession.doneを送信した後にクローズします。errorイベントで終了したセッションもこのクローズコードを使用します現在のセッションを終了し、再試行しないでください。成否はsession.done.reason(completed、aborted、errorなど)とそれ以前のerrorイベントで判断してください
1001サービスの停止または接続の離脱業務の必要に応じて再接続してください
1002プロトコルエラーイベントの形式と送信順序を確認してから再試行してください
1009バイナリのサイズ超過、または制御イベントが大きすぎます。クローズ前にinvalid_requestのerrorイベントが返される場合があります。メッセージを小さくしてから再接続してください
1011サーバーの障害しばらくしてから再試行し、エラーを記録してください
1013サービスが一時的に処理できません同時実行数を減らし、しばらくしてから再試行してください