Przejdź do treści głównej

Przewodnik migracji

Przenieś jeden przepływ, a nie cały katalog.

Dwie platformy mogą oferować to samo zadanie i mimo to różnić się nazwami pól, wartościami domyślnymi, stanami końcowymi, znaczeniem błędów i tym, czym jest jedna jednostka rozliczeniowa. Migracja, która zaczyna się od bazowego adresu, znajduje to wszystko na produkcji.

Wyzwanie

To samo zadanie, inny kontrakt

Model to ta część, która przenosi się czysto. Nie przenosi się wszystko wokół niego: które pola są wymagane, jakie są wartości domyślne, jak trafia do środka obraz referencyjny, kiedy blokowane są pieniądze i co twój kod ma zrobić ze stanem, którego nigdy nie widział.

01

Nazwy pól i wartości domyślne rzadko się pokrywają

Spisz mapowanie osobno dla każdego endpointu, zamiast go zgadywać. Wejście jest walidowane według opublikowanego schematu przy zamkniętym additionalProperties, więc niezmapowane pole to 400 przy pierwszym prawdziwym żądaniu, a nie ostrzeżenie w logu.

02

Pieniądze blokujemy przy przyjęciu, a nie po zakończeniu

createTask blokuje wycenę i zwraca ją jako cost z settled: false. Jeśli obecna platforma nalicza tylko przy powodzeniu, rozliczenia muszą zrozumieć blokady, zanim przeniesiesz jakikolwiek ruch.

03

Słownik błędów jest zamknięty i mały

Dziewięć wartości pokrywa każdą awarię, a content_rejected jest jedną z nich: odmowa to zakończone zadanie, a nie wyjątek. Odwzoruj swoje gałęzie obsługi błędów na tych dziewięciu przed przełączeniem, a nie po.

Podejście

Zacień jeden endpoint, porównaj liczby, potem przenoś

Weź jeden przepływ, zapisz jego obecne wejścia, wyniki, awarie i koszt jednostkowy, a potem odtwórz te same warunki tutaj. Porównaj wycenę z jobs/quote z tym, co płacisz dziś, trzymaj obie ścieżki żywe za flagą i zwiększaj udział tylko dopóty, dopóki liczby się trzymają.

Najpierw wycena: przechodzi tę samą walidację i te same kontrole przy przyjęciu co utworzenie, nie blokując środków ani nie uruchamiając pracy.

POST /api/v1/jobs/quote

{
  "model": "<publisher>/<model>/text-to-video",
  "input": {
    "prompt": "A slow aerial drift over a misty pine forest at sunrise",
    "duration_seconds": 5,
    "resolution": "1080p"
  }
}

200 OK — nothing reserved, nothing started

{
  "code": 200,
  "msg": "success",
  "request_id": "req_example_quote",
  "data": {
    "quoteId": "qte_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "<publisher>/<model>/text-to-video",
    "estimatedCost": "0.750000",
    "maxCharge": "0.750000",
    "currency": "USD",
    "quantity": "5",
    "unit": "second",
    "expiresAt": "2026-09-12T12:05:00Z"
  }
}

Kontrakt

Co warto ustalić na starcie

Alternatywa dla fal: przenieś obraz i wideo — Co warto ustalić na starcie
Pole lub nagłówekWartość lub limit
POST /api/v1/jobs/quoteno hold · signed quote valid 5 min
quoteId + expectedCost40901 when the price moved
40240201 balance · 40202 spend cap
published call nameimmutable · renames keep a 308

Przesuń w poziomie, żeby zobaczyć wszystkie kolumny.

Integracja

Od pierwszego wywołania do produkcji

  1. 01Wybierz jeden endpoint i zbierz dziesięć reprezentatywnych żądań, ich wyniki i obecny koszt.
  2. 02Zmapuj każde pole na input_schema docelowego endpointu i zapisz mapowanie z numerem wersji.
  3. 03Wyceń każdą zmapowaną treść i porównaj estimatedCost, quantity oraz unit z dzisiejszym rachunkiem.
  4. 04Najpierw cień, potem canary, potem zwiększaj udział – ze starą ścieżką gotową do wywołania na każdym kroku.

Dopasowanie

Kiedy ta droga jest właściwa

Wybierz to, gdy

  • Chcesz jednego salda, jednego zestawu limitów wydatków i jednego kontraktu zadań dla obrazu, wideo i tekstu.
  • Twoim wąskim gardłem są zasady dotyczące treści albo dostępność poszczególnych modeli, a nie sama jakość modelu.

Poszukaj gdzie indziej, gdy

  • Potrzebujesz przełączenia wszystkiego w jeden dzień. Różnice kontraktów wychodzą osobno dla każdego endpointu i wychodzą późno.
  • Twoje wdrożenie woła model z klienta. Tutaj klucze trzymamy po stronie serwera.

Dowody

Co możesz sprawdzić samodzielnie

Wycena to prawdziwy przebieg na sucho

POST /api/v1/jobs/quote przechodzi tę samą walidację i te same kontrole przy przyjęciu co utworzenie, zwraca estimatedCost, maxCharge, quantity i unit, i niczego nie blokuje. Podpisana wycena jest ważna pięć minut.

Zmieniona cena kończy się błędem, a nie niespodzianką

Wyślij quoteId i expectedCost razem z utworzeniem. Jeśli cena w międzyczasie się zmieniła, przyjęcie zwraca kod aplikacyjny 40901, zanim cokolwiek zostanie zablokowane.

Opublikowane nazwy wywołań nie wędrują

Wydana nazwa wywołania pozostaje ważna, a zmiana nazwy zostawia po sobie 308 i alias. Twoja tabela mapowania nie gnije po cichu między wydaniami.

Przed startem

Zachowania platformy do potwierdzenia

  • Wersjonuj mapę pól i trzymaj fixtures dla jednego powodzenia i jednej awarii na endpoint.
  • Potwierdź, że każdy docelowy endpoint da się wywołać i ma cenę, zanim skierujesz tam choć jedno żądanie.
  • Przećwicz wycofanie na żywym ruchu, a nie na gałęzi testowej.
  • Uzgodnij blokady z rozliczeniami przez pełny cykl rozliczeniowy, zanim przeniesiesz ostatnią część ruchu.

FAQ

O co pytają na tej stronie

Nie przy mediach. Kontrakt zadań, nazwy pól, maszyna stanów i semantyka rozliczeń wymagają mapowania. Najbliżej są klienci tekstowi: powierzchni zgodnej z OpenAI zwykle wystarczy bazowy adres i wartość model.

Co dalej

Zmapuj jeden przepływ i wyceń go

Przenoś po jednym przepływie: zmapuj pola, ujednolić stany i błędy, porównaj rachunek i przełącz ruch z wycofaniem, które przetestowano.

Źródło: fal model APIs ↗

Powiązane przewodniki