Najważniejsze wnioski
- Context windows combine prompt and completion, so long histories drain limits faster than expected.
- Streaming wymaga ostrożnego obsługi zdarzeń SSE, aby uniknąć uszkodzonego JSON lub utraty tokenów.
- JSON mode demands strict schema adherence; malformed responses cause silent parsing failures.
- Opłata za kryptowaluty z góry oznacza, że błędy są darmowe, ale liczenie tokenów musi być precyzyjne, aby uniknąć niespodzianek.
Dlaczego klucz API może zostać odrzucony
Klucze API są odrzucane, gdy klient wysyła niepoprawne nagłówki lub przekracza limity ciała żądania. Serwer waliduje nagłówek uwierzytelniający przed przetworzeniem jakiejkolwiek logiki. Jeśli nagłówek jest nieobecny lub zawiera nadmiarowe spacje, żądanie zostaje odrzucone natychmiast.
Inną częstą przyczyną jest wysyłanie payloadu, który przekracza limit rozmiaru ciała 8 MB. Duże okna kontekstowe z wieloma wiadomościami mogą łatwo przekroczyć ten próg. Sprawdź długość tablicy wiadomości i liczbę tokenów przed wysłaniem.
- Upewnij się, że nagłówek Authorization poprawnie używa prefiksu 'Bearer'.
- Verify the request body size stays under 8 MB.
- Sprawdź, czy klucz API jest aktywny i nie wygasł.
Zrozumienie ograniczeń okna kontekstowego
Okno kontekstu obejmuje zarówno prompt wejściowy, jak i wygenerowane uzupełnienie. Nasze API obsługuje okno o rozmiarze 100,000 tokenów, ale musisz uwzględnić obie strony. Jeśli wyślesz 80,000 tokenów kontekstu, pozostaje Ci tylko 20,000 na odpowiedź.
Większość modeli domyślnie ustawia mały limit wyjściowy tokenów, jeśli nie określisz max_tokens. Może to niespodziewanie obciąć długie odpowiedzi. Ustaw max_tokens na żądaną długość tylko wtedy, gdy chcesz nałożyć limit. Pamiętaj, że limit dotyczy całej żądania, a nie tylko promptu.
Poprawne obsłużenie przerw w strumieniowaniu
Strumieniowanie za pomocą zdarzeń wysłanych przez serwer (SSE) wymaga solidnej obsługi błędów. Jeśli połączenie zostanie przerwane, możesz stracić ostatni token lub metadane dotyczące użycia. Zawsze buforuj przychodzące fragmenty i odtwarzaj pełną odpowiedź po stronie klienta.
Dane dotyczące użycia tokenów są zwykle przesyłane w ostatnim fragmencie strumienia. Jeśli zamkniesz połączenie wcześniej, możesz nie uzyskać dokładnej liczby tokenów. Wpływa to na dokładność rozliczeń w systemach zaliczkowych. Zaimplementuj mechanizm ponawiania z wykładniczym opóźnieniem, aby obsłużyć przejściowe problemy sieciowe.
Użyj dedykowanego klienta strumieniowego, który automatycznie obsługuje parsowanie SSE. Zmniejsza to ryzyko błędów parsowania i zapewnia przechwycenie wszystkich danych.
Błędy parsowania w trybie JSON
Podczas korzystania z response_format: {"type": "json_object"}, model musi zwrócić poprawny JSON. Każde odchylenie powoduje błędy parsowania w Twojej aplikacji. Upewnij się, że prompt wyraźnie instruuje model do zwracania wyłącznie JSON.
Czasami model zawiera bloki kodu markdown wokół JSON, co psuje ścisłe parsery. Usuń obudowy przed parsowaniem. Ponadto, zwaliduj strukturę JSON po stronie klienta przed użyciem danych.
Użyj biblioteki do walidacji schematu, aby wychwytywać błędy na wczesnym etapie. Zapobiega to awariom, gdy model zwraca nieoczekiwane klucze lub typy.
Zaskoczenia w liczeniu tokenów i rozliczeniach
Rozliczenie prepaidowe obciąża tylko za rzeczywiste użycie tokenów. Błędy i odrzucenia są darmowe, co stanowi istotną przewagę nad modelami subskrypcyjnymi. Jednakże liczenie tokenów może być trudne, jeśli nie uwzględnisz całego kontekstu.
Każda wiadomość w historii rozmowy wlicza się do limitu tokenów wejściowych. Długie rozmowy zużywają Twój kredyt z góry opłacony szybciej, niż się spodziewasz. Regularnie monitoruj swoje zużycie, aby uniknąć wyczerpania kredytów w trakcie sesji.
Skonfiguruj alerty dla niskich stanów konta. Dzięki temu będziesz mógł dołaczyć środki przed niepowodzeniem się Twoich żądań. Pamiętaj, że kredyty nie wygasają, więc możesz dołaczyć je w dowolnym momencie.
Unikanie miękkich odmów w promptach NSFW
Miękkie odmowy występują, gdy model wahaje się lub udziela częściowej odpowiedzi zamiast bezpośredniej. Często ma to miejsce w przypadku tematów kontrowersyjnych lub dla dorosłych. Nawet w modelu bez cenzury pewne wyzwalacze mogą powodować wahanie się.
Dostosuj parametr temperature, aby zmniejszyć losowość. Niższa temperatura sprawia, że model jest bardziej deterministyczny i mniej skłonny do dywagacji. Upewnij się również, że prompt jest jasny i bezpośredni. Unikaj niejednoznacznych sformułowań, które mogą zmylić model.
Jeśli napotykasz częste miękkie odmowy, spróbuj nieco przeformułować prompt. Małe zmiany w sformułowaniu często pozwalają ominąć wahanie i uzyskać bezpośrednią odpowiedź.
Szczyty limitów i strategie backoff
API pozwala na 300 żądań na minutę i 8 równoległych żądań na klucz. Wzrosty ruchu mogą szybko przekroczyć te limity. Zaimplementuj wykładnicze opóźnienie ponownych prób, aby obsłużyć błędy limitu żądań w sposób elegancki.
Gdy otrzymasz kod stanu 429, poczekaj przed ponowną próbą. Zacznij od krótkiego opóźnienia i zwiększaj je z każdą kolejną próbą. Zapobiega to przeciążeniu serwera w godzinach szczytu.
Monitoruj częstotliwość żądań i dostosuj do tego poziomy współbieżności. Jeśli wysyłasz wiele żądań jednocześnie, rozważ rozłożenie ich w czasie. Zapewnia to stałe przepustowość bez przekraczania limitów.
Struktury ładunku wywoływania funkcji
Wywoływanie funkcji wymaga określonej struktury payloadu. Zdefiniuj swoje funkcje w parametrze tools i określ tool_choice. Model zwróci wywołanie funkcji, jeśli uzna to za odpowiednią odpowiedź.
Upewnij się, że definicje funkcji są dokładne i kompletne. Brakujące parametry lub nieprawidłowe typy mogą spowodować, że model wygeneruje nieprawidłowe wywołania. Zawsze sprawdzaj argumenty wywołania funkcji przed ich wykonaniem.
Użyj parametru tool_choice, aby kontrolować, kiedy model wywołuje funkcje. Możesz wymusić wywołanie funkcji, pozwolić modelowi na podjęcie decyzji lub całkowicie wyłączyć wywoływanie funkcji. Daje to Ci szczegółową kontrolę nad zachowaniem modelu.
Debugowanie błędów 400 vs 500
Błędy 400 wskazują na problemy po stronie klienta, np. nieprawidłowy format JSON lub brakujące parametry. Błędy 500 sugerują problemy po stronie serwera, takie jak błędy wewnętrzne lub przekroczenie limitu czasu. Rozróżnianie tych błędów pozwala szybciej debugować aplikację.
W przypadku błędów 400 sprawdź komunikat o błędzie zwrócony w odpowiedzi. Zwykle wskazuje on bezpośrednio na przyczynę problemu. W przypadku błędów 500 ponów żądanie po krótkim opóźnieniu. Jeśli błąd nadal występuje, skontaktuj się z pomocą techniczną, podając identyfikator żądania.
Zapisuj szczegóły żądania i odpowiedzi dla każdego błędu. Pomaga to zidentyfikować wzorce i powtarzające się problemy. Użyj usługi logowania, aby śledzić błędy w czasie i ulepszyć integrację z API.