Claude Opus 5.5 jest już dostępny w SeedRouter

Przenieś integrację obrazów do SeedRouter

Przenieś integrację GPT Image 2 do SeedRouter: zmapuj pola żądania, obsłuż zadania asynchroniczne i sprawdź odbiór obrazów przez adresy URL.

Czytaj jako Markdown

Migracja API obrazów do SeedRouter wymaga sprawdzenia kontraktu żądania i odpowiedzi, a nie tylko podmiany klucza API i adresu bazowego. GPT Image 2 korzysta ze znanych pól generowania obrazów, ale wysłanie żądania zwraca identyfikator zadania. Aplikacja musi zapisać ten identyfikator, odpytywać zadanie do zakończenia i odczytać adresy gotowych obrazów.

Najmniejsza użyteczna migracja to jedno żądanie z tekstu na obraz wysłane z kodu po stronie serwera. Doprowadź je do działania, zanim przeniesiesz edycje z referencją, maski albo większą partię. Zostaw dotychczasową integrację dostępną, dopóki nowa ścieżka nie przejdzie tych samych testów odbiorczych.

Które założenia trzeba zmienić?

Znajdź kod, który zamienia żądanie obrazu w użyteczny plik. Może dziś oczekiwać obrazu w pierwszej odpowiedzi, dekodować pole base64 albo wysyłać plik jako multipart. Każde z tych założeń trzeba osobno zestawić z dokumentacją GPT Image 2 w SeedRouter.

Dotychczasowe założenieKontrakt SeedRouterZmiana w aplikacji
Wysłanie zwraca gotowy obrazWysłanie zwraca odniesienie do zadaniaZapisz id, zanim zaczniesz czekać na wynik
Wynik jest w tablicy data odpowiedzi na wysłanieObrazy ukończonego zadania są w output.dataOdczytuj wyniki po zakończeniu zadania
Klient dekoduje b64_jsonObrazy wracają jako hostowane adresy URLPobierz zwrócone adresy URL
Edycja wysyła bajty plikuReferencje używają obiektów URL w imagesUdostępnij obrazy wejściowe pod adresem URL
Osobna ścieżka edycji wybiera tryb edycjiOperację wybierają images i maskKorzystaj z publicznego endpointu generowania
Limit czasu po stronie klienta oznacza błądZadanie może nadal być przetwarzaneWróć do odpytywania zapisanego identyfikatora

Dlatego synchroniczne wywołanie SDK do obrazów nie jest zamiennikiem jeden do jednego, nawet jeśli przyjmuje konfigurowalny adres bazowy. Zachowaj te ustawienia modelu, których nadal potrzebujesz, ale przerób kod aplikacji, który czeka na wynik i go przetwarza.

Zmapuj pola żądania, zanim ruszysz kod

Zacznij od model, prompt, size, quality i n. Jako identyfikatora modelu użyj gpt-image-2. Wysyłaj jawne wymiary, na przykład 1024x1024, albo auto; nie przenoś osobnego pola resolution ani nie podstawiaj proporcji kadru w miejsce rozmiaru.

Dokument OpenAPI SeedRouter warto mieć otwarty przy tym przeglądzie. Porównuj pola, które aplikacja naprawdę wysyła, łącznie z wartościami dokładanymi przez SDK, zamiast sprawdzać tylko argumenty widoczne w miejscu wywołania. Nieznane pola są odrzucane.

W tym modelu style, response_format i konfigurowalne input_fidelity nie są akceptowanymi polami żądania. Usuń te założenia, zamiast chować je w ogólnym obiekcie opcji. Żądanie nie obsługuje też stream ani partial_images; postęp w tej integracji sygnalizuje status zadania.

Ustawienia wyjścia mają zależności. Jeśli prosisz o przezroczystość, wybierz PNG. output_compression wysyłaj wyłącznie dla JPEG, nigdy dla PNG. Zerowa wartość kompresji jest poprawna, więc unikaj sprawdzania „czy wartość jest prawdziwa” i podmieniania jej na domyślną. To drobiazgi, których udane podstawowe żądanie nie sprawdzi.

Porzuć założenie o odpowiedzi synchronicznej

Poniższy przykład w Node.js wysyła jedno żądanie i wypisuje identyfikator zadania. Ustaw SEEDROUTER_API_KEY na serwerze; nigdy nie umieszczaj klucza w kodzie przeglądarki ani w publicznej zmiennej środowiskowej.

const response = await fetch('https://api.seedrouter.ai/v1/images/generations', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SEEDROUTER_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'gpt-image-2',
    prompt: 'A cobalt-blue ceramic mug on a pale gray tabletop.',
    size: '1024x1024',
    quality: 'low',
    n: 1,
  }),
  signal: AbortSignal.timeout(60000),
});
const task = await response.json();
if (!response.ok) {
  // Preserve a task reference if one accompanies an uncertain submission.
  if (typeof task.id === 'string') console.log('Task reference:', task.id);
  throw new Error(`Submission needs review: HTTP ${response.status}`);
}
if (typeof task.id !== 'string' || !task.id) throw new Error('Missing task ID.');
console.log(task.id); // Persist this ID with your application's image record.

Do ręcznego testu wystarczy wypisanie identyfikatora. W aplikacji zapisz go, zanim oddasz sterowanie użytkownikowi. Rekord obrazu może wtedy pozostać w stanie oczekiwania, gdy użytkownik przejdzie gdzie indziej, a późniejsze sprawdzenie odzyska wynik.

Postęp sprawdzaj przez GET https://api.seedrouter.ai/v1/tasks/{id} z tym samym nagłówkiem autoryzacji. Przy completed odczytaj output.data[].url. Przy failed obsłuż udokumentowany błąd i pokaż odpowiedni stan niepowodzenia. Gotowy do uruchomienia przykład z zapisem postępu znajdziesz we wsadowym wysyłaniu i odpytywaniu.

Nie dołączaj klucza API do żądania pobrania obrazu. Autoryzacja należy do wywołania API zadań, a nie do osobnego pobrania pliku spod zwróconego adresu.

Przenieś referencje i maski na wejścia URL

Dotychczasowy proces oparty na plikach lokalnych wymaga dodatkowego kroku: udostępnij obraz referencyjny pod dostępnym adresem HTTP(S), który kontrolujesz. Przekaż go jako images: [{"image_url": "https://example.com/reference.png"}], zastępując ten adres własnym. Nie wysyłaj ścieżki do pliku, adresu blob:, data URL w base64 ani identyfikatora Files ID.

Sprawdź, czy adres działa bez ciasteczek logowania z twojej przeglądarki. Adres, który otwiera się wyłącznie w twojej zalogowanej sesji, nie nadaje się na referencję dla tego żądania. Utrzymuj obraz dostępny, dopóki zadanie jest przetwarzane; nie odbieraj dostępu zaraz po wysłaniu.

Maska ma postać mask: {"image_url": "https://example.com/mask.png"} i wymaga obrazów referencyjnych. Musi mieć takie same wymiary jak pierwszy obraz referencyjny. Zanim przeniesiesz istniejący proces edycji, przejrzyj wszystkie ograniczenia wejść multimedialnych, zwłaszcza formaty i rozmiary plików.

Co powinien obejmować test odbiorczy migracji?

Sprawdź zachowanie, na którym opiera się aplikacja, łącznie z przerwaniem pracy. Jeden udany obraz dowodzi tylko tego, że jedno żądanie zadziałało. Nie dowodzi, że stan oczekiwania przetrwa odświeżenie strony ani że nieudane pobranie nie doprowadzi do zduplikowanej generacji.

  • Wyślij żądanie z samym tekstem i zapisz zwrócony identyfikator przed rozpoczęciem odpytywania.
  • Przerwij odpytywanie, wznów je z tym samym identyfikatorem i sprawdź, że nie pojawia się dodatkowy POST.
  • Obsłuż processing, completed i failed jako odrębne stany.
  • Pobierz ukończony obraz bez wysyłania nagłówka autoryzacji API.
  • Sprawdź edycję z referencją pod dostępnym adresem, a potem obsługę błędu przy adresie niedostępnym.
  • Zweryfikuj pola opcjonalne, w tym zerową kompresję, według opublikowanego schematu.
  • Potwierdź, że obciążenia konta odczytujesz z historii użycia, a nie z wymyślonego pola kosztu w odpowiedzi zadania.

Do powtarzalnych testów błędów i przekroczeń czasu używaj odpowiedzi atrapowych. Mały, świadomy test na żywo zrób dopiero po przejściu tych kontroli; prawdziwe generacje zużywają saldo. Jeśli wynik wysłania jest niepewny, zbadaj sprawę, zanim spróbujesz ponownie. Lokalny wyjątek nie dowodzi, że żadne zadanie nie zostało przyjęte.

Najczęstsze pytania

Czy mogę zostawić dotychczasowe prompty?

Tak, jako punkt wyjścia, o ile mieszczą się w ograniczeniach żądania. Zachowaj kilka reprezentatywnych promptów do porównań, ale nie oczekuj identycznych obrazów przy powtórzonych generacjach.

Czy potrzebuję nowej biblioteki klienckiej?

Do przykładów z tego tekstu nie. Wystarczą zwykłe żądania HTTP. Jakikolwiek klient wybierzesz, musi obsłużyć wysłanie zadania i odpytywanie, zamiast oczekiwać gotowego obrazu od razu.

Gdzie znajdę końcowy koszt?

W historii użycia konta. Ukończone zadanie może zawierać zużycie tokenów, ale jego publiczna odpowiedź nie ma pola z kosztem. Szacowaniem zajmuje się przewodnik po cenach.

Dokończ migrację na granicy aplikacji

Migracja API obrazów jest ukończona, gdy aplikacja obsługuje cały cykl życia wyniku: przyjęte zadanie, stan oczekiwania, gotowy wynik, pobranie i błąd. Pierwszą zmianę zrób małą, przetestuj przypadki przerwania, a pozostałe żądania przenoś dopiero po sprawdzeniu ich założeń wejścia i wyjścia.

Powiązane poradniki