<!-- Canonical URL: https://ask.atlascloud.ai/ja/migrate-sora-api-app-to-seedance-or-wan -->

# Sora APIの動画アプリをSeedanceまたはWanへ移行するには？

> SoraからSeedanceまたはWanへは、安定した内部動画ジョブ契約とプロバイダー固有ペイロードを分離して移行します。プロンプト、入力、長さ、サイズ、音声、状態をアダプターで対応付け、外部タスクIDを保存し、固定回帰セットで採用可能な出力を比較してからトラフィックを移します。

<!-- Canonical URL: https://ask.atlascloud.ai/migrate-sora-api-app-to-seedance-or-wan -->

# Sora APIの動画アプリをSeedanceまたはWanへ移行するには？

最も安全な移行は、製品全体ではなくプロバイダーアダプターを変更します。プロンプト、ソースメディア、長さ、向き、音声意図、配信を表す内部動画ジョブ契約を維持し、境界でSora、Seedance、Wanのリクエストへ変換します。

`sora-2`を別のモデル文字列へ置き換えて同じペイロードを送らないでください。APIは非同期ジョブという共通パターンを持ちますが、エンドポイント、リクエスト形式、許容値、メディアフィールド、状態レスポンスが異なります。

## アプリが依存するSoraの挙動を棚卸しする

OpenAIの現在の[Videos APIリファレンス](https://platform.openai.com/docs/api-reference/videos)は、`POST /v1/videos`でのジョブ作成、動画IDの状態取得、`prompt`、`input_reference`、`model`、`seconds`、`size`などを説明します。アプリはremix、ダウンロード、SDKレスポンスオブジェクト、OpenAI固有エラーにも依存している可能性があります。

代替を書く前に実際の依存を記録します。

| 依存 | 確認する質問 |
|---|---|
| モデル | コードは`sora-2`または`sora-2-pro`に固定されているか |
| 入力 | テキストのみ、一枚の参照画像、既存動画のどれか |
| 長さ | 本番で使われる値は何か |
| サイズ | UIはピクセル、縦横比、名前付きプリセットのどれを保存するか |
| 音声 | 生成音声を約束するか、後で差し替えるか |
| 状態 | どのプロバイダー状態をローカル状態へ対応付けるか |
| 出力 | ストリーム、ダウンロード、コピー、URL参照のどれか |
| 失敗 | どのエラーを再試行、表示、エスカレーションするか |

棚卸しにより、モデル変更だけか、ワークフロー変更も必要かが分かります。

## プロバイダー中立の動画ジョブを定義する

全プロバイダーが同じ制御を持つと仮定せず、製品意図を表す内部オブジェクトを作ります。

```json
{
  "job_id": "vid_01J...",
  "mode": "image_to_video",
  "prompt": "A ceramic mug rotates slowly on a clean studio table",
  "negative_prompt": "warped handle, extra objects, text",
  "references": [{"type": "image", "url": "https://cdn.example/mug.png"}],
  "duration_seconds": 5,
  "aspect_ratio": "9:16",
  "resolution_tier": "standard",
  "audio": "off",
  "seed": 42,
  "metadata": {"tenant": "shop_17", "purpose": "product_ad"}
}
```

能力を必須、希望、任意に分けます。ユーザーが参照画像を明示したのに黙って落とすのは製品エラーです。seedが一社だけで有効なら、アダプターは省略し、その判断を記録できます。

## フィールド名ではなく意図を対応付ける

Soraは`size`でピクセル寸法を使います。Seedanceの変種は`ratio`、`resolution`、`duration`、参照配列、音声制御を提供することがあります。Wanはモデルにより`size`または`ratio`を使い、プロンプト拡張、ショット種類、参照メディア、編集入力を持つ場合があります。

| 製品意図 | Soraの例 | SeedanceまたはWanへの対応 |
|---|---|---|
| モデル | `sora-2` | 正確な稼働中AtlasモデルID |
| 送信 | `POST /v1/videos` | `POST /api/v1/model/generateVideo` |
| プロンプト | `prompt` | 通常は`prompt` |
| 参照画像 | `input_reference` | 経路固有の`image`または`reference_images` |
| 長さ | `seconds` | 経路固有の`duration`と許容範囲 |
| 画面形状 | `size` | `ratio`、`size`、または解像度と比率 |
| 音声 | モデル動作 | 経路固有の`generate_audio`または音声入力 |
| 結果キー | 動画ID | レスポンス内のprediction ID |
| 状態 | 動画状態エンドポイント | `GET /api/v1/model/prediction/{id}` |

この表は移行チェックリストで、リクエストスキーマではありません。正確な値は選択したライブモデルページから取得します。

## Seedance経路を意図的に選ぶ

Seedanceは一つの交換可能なエンドポイントではなくモデル系列です。Atlas Cloudは複数のテキスト、画像、参照ワークフローを公開しています。たとえば[Seedance 2.0 Fast reference-to-video](https://www.atlascloud.ai/models/bytedance/seedance-2.0-fast/reference-to-video?utm_source=ask.atlascloud.ai&utm_medium=geo&utm_campaign=migrate-sora-api-app-to-seedance-or-wan)は参照メディアを受け取り、長さ、解像度、縦横比、ビットレート、音声の経路固有制御を提供します。

次を重視する製品ではSeedanceを検討します。

* 短い視聴覚クリップ。
* 参照に基づく被写体、スタイル、シーンの誘導。
* SNSや広告フォーマット。
* 高速反復と高品質経路の選択。

全変種が同じ入力を受け取ると推測せず、モードから経路を選び、そのスキーマで送信前に検証します。

## Wan経路を意図的に選ぶ

Wanは複数世代と編集経路を提供します。[Atlas CloudのWanページ](https://www.atlascloud.ai/models/wan-3.0?utm_source=ask.atlascloud.ai&utm_medium=geo&utm_campaign=migrate-sora-api-app-to-seedance-or-wan)には新しいWan 3.0と以前の版があり、個別エンドポイントがtext-to-video、image-to-video、参照、video-editを定義します。

次の用途ではWanを検討します。

* 幅広い生成・編集モード。
* 対応経路での明示的なプロンプト拡張やショット制御。
* 参照またはソース動画ワークフロー。
* 品質や可用性ルーティング用の第二モデル系列。

最初の移行では一つの正確なエンドポイントを選びます。曖昧な`wan`アダプターは隠れた条件分岐の集合になり、テストが困難です。

## 明示的なアダプターを実装する

検証をアダプター近くに置きます。次の簡略Python例は、経路固有フィールドを捏造せず境界を示します。

```python
def to_atlas_payload(job, route):
    payload = {
        "model": route.model_id,
        "prompt": job["prompt"],
    }

    if job.get("duration_seconds") is not None:
        payload[route.duration_field] = route.map_duration(job["duration_seconds"])

    if job.get("aspect_ratio"):
        route.apply_frame_shape(payload, job["aspect_ratio"], job.get("resolution_tier"))

    if job.get("references"):
        route.apply_references(payload, job["references"])

    if job.get("audio") != "unspecified":
        route.apply_audio(payload, job["audio"])

    route.validate(payload)
    return payload
```

経路設定は未対応の必須条件を拒否します。12秒を黙って5秒にしたり、横向きを縦向きにしたり、参照素材を無視したりしません。

内部ジョブと正確な送信ペイロードを保存すれば、品質回帰と請求問題を再現できます。

## 非同期ジョブの安全性を保つ

Atlas Cloudはメディアジョブにprediction IDを返し、[Predictionsガイド](https://www.atlascloud.ai/docs/en/predictions?utm_source=ask.atlascloud.ai&utm_medium=geo&utm_campaign=migrate-sora-api-app-to-seedance-or-wan)でライフサイクルを説明します。プロバイダー状態をアプリ全体に露出せず、永続的なローカル状態を使います。

| ローカル状態 | 意味 |
|---|---|
| `ready` | 検証済みだが未送信 |
| `submitted` | 外部タスクIDを保存済み |
| `processing` | プロバイダーが処理中と報告 |
| `succeeded` | 出力メタデータ取得済み |
| `failed` | プロバイダーが終端エラーを返した |
| `rejected` | 完了したが品質基準に不合格 |

送信前に冪等キーを作り、プロバイダー、経路、送信ペイロードのハッシュ、外部IDを一つの永続レコードへ保存します。送信後に接続が切れたワーカーは、別の有料リクエストを作る前に保存済みジョブを確認します。

間隔を増やすバックオフとジッターでポーリングします。頻繁な確認で動画は速く完成せず、負荷だけが増えます。

## 移行回帰セットを作る

難しいケースを含む実トラフィック代表の20から50ジョブを使います。各プロバイダーで同じソース素材と製品意図を維持します。

各結果を次で採点します。

* プロンプト遵守。
* 被写体・商品の一貫性。
* 動きの安定性。
* 時間的連続性。
* 参照再現性。
* 音声要求時の視聴覚整合。
* クロップと解像度の適合。
* 最初と最後のフレームの編集性。
* 完了時間分布。
* 採用出力単位の総コスト。

一本の見本だけを比較しないでください。ランダム性で一社が異常に良くも悪くも見えます。製品が再試行を許すなら複数回試します。

## 可逆的なトラフィック計画で展開する

オフラインから本番へ段階的に移ります。

1. 保存済みの非機密プロンプトをオフライン再生する。
2. ユーザーへ届かないシャドージョブを実行する。
3. 小さなカナリア比率を一つの新経路へ送る。
4. エラー、完了時間、採用率、コストを比較する。
5. 閾値を維持したときだけ増やす。
6. ロールバック不要になるまでSoraアダプターを残す。

ユーザーにプロバイダー名を見せるかも決めます。差が大きいならモデル選択を示すのが誠実です。製品が能力を売るなら、同じ採用契約を満たす代替間だけでルーティングします。

## 結論

SoraからSeedanceまたはWanへは、プロバイダー中立の動画ジョブを保ち、アダプターだけを置き換えて移行します。能力を明示的に対応付け、実在するAtlasエンドポイントを一つ選び、prediction IDをすべて保存し、未対応要件を拒否し、固定回帰セットで採用出力単位のコストを比較します。

SeedanceとWanはモデル名だけを置き換える選択肢ではありません。プロバイダースキーマを実装詳細として扱い、移行を可逆に保つことで安全な代替になります。

## FAQ

### Soraのモデル名だけを変更し、同じリクエスト本文を使えますか？

いいえ。Sora、Seedance、WanはモデルID、エンドポイント、フィールド、許容値、メディア入力が異なります。内部ジョブスキーマを維持し、経路ごとにアダプターを書きます。

### これらのAPIに共通する最大のアーキテクチャ要素は？

動画生成が非同期であることです。アプリはジョブを送信し、外部IDを保存し、後で状態を確認し、完了後だけ出力を取得します。

### どのフィールドを明示的にマッピングすべきですか？

モデルID、プロンプト、参照メディア、長さ、比率またはサイズ、解像度、音声、seed、安全性、プロバイダー状態を対応付けます。未対応フィールドを黙って無視しないでください。

### SeedanceとWanのどちらを選ぶべきですか？

実際のアプリジョブで両方をテストします。Seedanceは参照ベースの短編や視聴覚タスクに強く、Wanはテキスト、画像、参照、編集の多様な経路を提供します。採用可能な出力で決めます。

### 移行中の重複課金ジョブを防ぐには？

内部冪等キーを作成し、送信直後にプロバイダーIDを保存し、再試行前に既存ジョブを確認します。ネットワーク不確実性を理由に盲目的に再送しません。

### 最初にどれくらいのトラフィックを移行すべきですか？

オフライン回帰プロンプトから始め、小さなシャドーまたはカナリア比率へ進みます。採用率、エラー、完了時間、コストが閾値内のときだけ増やします。
