HappyOyster は、リアルタイムインタラクティブオープンワールドモデルです。単一の自然言語プロンプトと最初のフレームの画像から、リアルタイムで演技、探索、インタラクションできるデジタルワールドを生成し、参加可能なライブビデオストリームとして配信します。インタラクティブドラマ、映画のプレビズ、AI コンパニオン、プレイ可能なワールドに最適です。
モデルのショーケースとプロンプト作成のヒントについては、HappyOysterガイドを参照してください。
はじめに
HappyOysterは3つの体験モードを提供し、それぞれが異なるシナリオをカバーするために独立してデプロイされます:
| モード | 入力 | インタラクション |
|---|---|---|
| Adventure | プロンプト + 最初のフレームの画像 (横向き) | 方向 / カメラ / アクションコマンド (sendCommand) |
| Directing | プロンプトまたは構造化スクリプト + 最初のフレームの画像 (横向き)、オプションの参照画像 (スクリプト生成およびキャラクター参照に使用) | テキスト指示 (sendInstruct) / スクリプトリスト。一時停止、巻き戻し、再開をサポート |
| Acting | プロンプト + 最初のフレームの画像 (縦向き 9:16 、デフォルトは 16:9 もサポート) | テキスト指示 (sendInstruct)。一時停止と再開をサポート。 巻き戻しはサポートされていません |
アーキテクチャ
HappyOysterはサーバー+クライアントの統合モデルを使用します:
- お使いのサーバー は、HappyOyster Open API (プライマリ API キーを使用し、標準的な HTTPS REST 経由) を通じて、ワールドの完全なライフサイクルを管理します。これには、ワールドの作成と管理、認証情報の交換、履歴とアーティファクトのクエリが含まれます。Open API は体験モードごとに、Adventure、Directing、Acting の 3 つの独立したスイートに分割されています。
- お使いのクライアント は、HappyOyster SDK (一時的な API キー +
ticketを使用し、RTC リアルタイムオーディオ / ビデオチャンネル経由) を通じてリアルタイム体験を提供し、Android、iOS、および Web をサポートします。SDK は RTC 接続、ビデオ再生、ステータスポーリング、およびインタラクティブコマンドをカプセル化しているため、基盤となるリアルタイムプロトコルを直接操作する必要はありません。
このフローには、エンドユーザー、クライアントアプリまたは Web アプリ、バックエンド、HappyOyster Open API、HappyOyster SDK が関与します。次の順序で統合します。
- バックエンドで World を作成し、認証情報を取得します。 バックエンドはプライマリ API Key を使用して HappyOyster Open API に
POST /worldsを送信し、GET /worlds/build-statusで構築状態をポーリングした後、POST /worlds/get-travel-credentialで体験用の認証情報を取得します。バックエンドからクライアントへtokenとticketを渡します。 - クライアントでリアルタイム体験を開始します。 クライアントは SDK、一時的な API Key、
ticketを使用します。initializeとupdateTokenを呼び出してからstartTravel(ticket)を呼び出します。SDK は Open API を通じて体験に入り、RTC 接続を確立し、動画 View とステータスコールバックをクライアントに返します。 - クライアントから操作します。 クライアントは SDK を通じて
sendInstruct、sendCommand、pause、endを実行します。SDK は対応する制御 API を Open API に呼び出します。 - 体験終了後に成果物を取得します。 バックエンドは Open API に
GET /travels/artifactsを送信して成果物を取得します。
すべてのエンドポイントは、Alibaba Cloud Model Studio ゲートウェイを通じて認証されます。認証情報のモデルとその取得方法については、認証情報の取得を参照してください。
Open APIとSDK
責任範囲
| 次元 | サーバー側 HappyOyster Open API | クライアント側 HappyOyster SDK |
|---|---|---|
| 呼び出し元 | ご利用のバックエンド | ご利用のアプリまたは Web フロントエンド |
| 認証情報 | プライマリ API キー (長期、サーバー上でのみ保持) | 一時的な API キー (トークン) + 1 回限りの ticket (有効期限が短い) |
| 主な責任 | ワールド管理 (作成、ステータスポーリング、クエリ、削除)、認証情報の交換、Travel 制御、アーティファクトのクエリ | RTC 接続とビデオレンダリング、リアルタイムインタラクションコマンド、セッション制御、ステータスコールバック |
| 通信 | 標準 HTTPS REST | RTC リアルタイムオーディオ / ビデオチャンネル (SDK 内にカプセル化) |
| サポートされるプラットフォーム | 任意のバックエンド言語 (Python、Java、Node.js など) | Android、iOS、Web |
機能マップ
| 機能 | Open API (サーバー) | SDK (クライアント) |
|---|---|---|
| ワールドの作成 / 管理 | サポート済み | サポートされていません |
| ワールド構築ステータスのポーリング | サポート済み | サポートされていません |
交換 ticket | サポート済み | サポートされていません ( ticket) |
| HTTP 認証トークンの注入 | サポートされていません | サポート (updateToken) |
| ルーム入室 + RTC 接続 | サポート (SDK によって内部的に呼び出されます) | サポート (Travel の開始、SDK 内にカプセル化) |
| リアルタイムビデオ再生 | サポートされていません | サポート (SDK が提供するビデオビューをアタッチ。Acting の場合は、返された aspectRatio を使用して縦向き / 横向きの向きを設定) |
| ステータスポーリング | サポート (SDK によって内部的に呼び出されます) | サポート (ステータスコールバックを介して公開) |
| Directing / Acting テキスト指示 | サポート (instruct) | サポート (sendInstruct) |
| Adventure 制御コマンド | サポートされていません | サポート (sendCommand、Acting では利用できません) |
| 一時停止 / 再開 | サポート済み | サポート (Directing および Acting。Adventure の呼び出しは SDK によって 103003) |
| 巻き戻し | サポート (rewind、Directing のみ) | サポート (Directing のみ。他のモードは 103003) |
| 体験の終了 | サポート済み | サポート (Travel の終了、SDK 内にカプセル化) |
| スクリプトの更新 (ScriptList) | サポート (update-script、Directing scriptlist のみ。Acting および Directing simple の呼び出しは 409000) | サポートされていません |
| Travel 履歴のクエリ | サポート済み | サポートされていません |
| ビデオアーティファクトの取得 | サポート済み | サポートされていません |
注記SDK は、ワールドの作成または管理に対して責任を負いません。Directing スクリプト (Script List) モードはサーバー側でのみ利用可能です。SDK はストリーミング、再生、およびテキスト指示の入力のみを処理します。
シナリオ
| シナリオ | 推奨モード | 主要なサーバー API | 主要なクライアント SDK 機能 |
|---|---|---|---|
| インタラクティブゲーム / プレイ可能なワールド | Adventure | ワールドの作成 → 認証情報の交換 | sendCommand + ステータスコールバック |
| AI コンパニオン / バーチャルガイド | Adventure | 最初のフレームの画像 + プロンプトで作成 | リアルタイム体験 + ビデオビュー |
| インタラクティブ短編ドラマ / 映画のプレビズ | Directing | simple プロンプトまたは scriptlist 構造化スクリプト | sendInstruct + 一時停止 / 巻き戻し |
| ビデオ通話 / 縦向きコンパニオン | Acting | 必須 prompt + firstFrameImage、オプション aspectRatio | sendInstruct + 一時停止 / 再開 (巻き戻しなし) |
| コンテンツプラットフォーム / 二次創作 | Directing | artifacts セッション終了後のエクスポート | 体験 + サーバー側でのアーティファクト取得 |
| 教育シミュレーション | Adventure | 最初のフレームの画像 + プロンプトでシーンを構築 | 迅速なルーム入室体験 |
制限事項
- アスペクト比のルール:
- Adventure:
firstFrameImageが必須です。ビデオのアスペクト比は最初のフレームの画像に従います。 - Directing:
firstFrameImageはsimpleサブモードではオプションであり、scriptlistサブモードでは必須です。指定する場合、横向き (幅 / 高さ 1.5–2.0) である必要があり、アスペクト比は最初のフレームの画像に従います。作成時に渡されたaspectRatioの値は無視されます。 - Acting:
firstFrameImageは必須です。アスペクト比は作成時にaspectRatioによって制御され、デフォルトは9:16(縦向き) であり、16:9を明示的に渡すこともできます。このフィールドはルーム入室時およびワールドの詳細でエコーされ、クライアントはそれに応じてプレーヤーの向きを設定する必要があります。最初のフレームのアスペクト比はターゲットのアスペクト比と一致している必要があり、そうでない場合は400000が返されます。
- Adventure:
- クロスモデルアクセス:WorldとTravelは、それらを作成したモデルに厳密にバインドされています。クロスモデルアクセスは
403001(world)または404000(travel)を返します。 - モードの違い:Actingは巻き戻し(
rewind)やsendCommandをサポートしていません。Adventureで一時停止/再開を呼び出すと103003が返されます。
用語集
- World:キャラクター、シーン、スクリプトを含むデジタルワールドの完全な定義。Worldは事前構築して再利用でき、あらゆる体験の基盤となります。
- Travel: ワールドから開始されるリアルタイム体験セッションです。通常、「初期化 → 準備 → 実行 → (オプションで一時停止 / 巻き戻し) → 終了」の段階を経ます。正確なステータス値は SDK ごとに異なります。対応する SDK API リファレンスを参照してください。
- ticket:サーバーから発行され、クライアントに配信されるワンタイムのルーム入室クレデンシャル。
- token(一時的なAPI Key):クライアントSDK用のHTTPレイヤークレデンシャルで、サーバーによって署名されSDKに注入されます。定期的に更新する必要があります。
Model Usageの確認
コンソールの「Model Usage」モジュールは、まだワールドモデルの使用統計をサポートしていません。代わりに、請求ページから使用量を確認してください。
次のステップ
-
クイックスタート:エンドツーエンドの統合を完了します。