PL ▾
Pobierz klucz API

LLM Inference APIPrzewodnik

Rozwiązywanie typowych błędów w API czatu AI

Debugowanie integracji czatu AI często kończy się niepowodzeniem z powodu błędnie skonfigurowanych nagłówków, niewłaściwego rozumienia limitów tokenów lub niewłaściwej obsługi strumieniowania. Ten przewodnik omawia najczęstsze błędy implementacyjne, z którymi programiści napotykają podczas integracji endpointów kompatybilnych z OpenAI, zapewniając niezawodne działanie kodu w środowisku produkcyjnym.

Zaktualizowano:

Kluczowe punkty

  1. Zawsze obliczaj zużycie tokenów na podstawie tokenizera konkretnego modelu, a nie tylko liczby znaków, aby uniknąć przepełnienia okna kontekstu.
  2. Obsługuj błędy strumieniowania, sprawdzając kod statusu HTTP przed parsowaniem strumienia JSON, ponieważ zerwania sieci mogą pozostawić strumień w niespójnym stanie.
  3. Upewnij się, że nagłówki zapytania ściśle odpowiadają specyfikacji API, szczególnie pola Content-Type i Authorization, aby zapobiec cichym błędom 400 lub 401.
  4. Wdróż strategie backoffu limitu zapytań natychmiast, ponieważ przekroczenie 300 zapytań na minutę spowoduje błędy 429, które zatrzymają Twoją aplikację.

Zrozumienie okien kontekstu

Jednym z najczęstszych powodów niepowodzeń API jest przekroczenie okna kontekstu. Okno kontekstu definiuje całkowitą liczbę tokenów dozwolonych w jednym zapytaniu, obejmując zarówno prompt wejściowy, jak i wygenerowane uzupełnienie. Gdy limit ten zostanie osiągnięty, API odrzuci zapytanie z błędem, często wskazując, że sekwencja jest zbyt długa.

Programiści często mylą liczbę znaków z liczbą tokenów. Jeden wyraz może reprezentować wiele tokenów w zależności od tokenizera. Na przykład okno kontekstu 100 000 tokenów, takie jak to oferowane przez nasz inference api, pozwala na zapisanie znacznej historii rozmowy lub przetwarzanie dużych dokumentów, ale nie jest nieskończone.

  • Monitoruj zużycie tokenów: Używaj oficjalnego tokenizera dla swojego modelu, aby dokładnie policzyć tokeny przed wysłaniem zapytania.
  • Obcinaj inteligentnie: Jeśli przekroczysz limit, usuń najstarsze wiadomości z historii rozmowy, a nie te najnowsze.
  • Uwzględnij narzut: Zarezerwuj część tokenów na odpowiedź modelu. Jeśli twój prompt zużywa 63 000 tokenów, masz tylko 1 000 tokenów rezerwy na uzupełnienie.

Niezarządzanie tym limitem prowadzi do zerwanych połączeń lub niekompletnych odpowiedzi. Zawsze weryfikuj liczbę tokenów zgodnie z dokumentacją modelu przed wdrożeniem w środowisku produkcyjnym.

Obsługa błędów strumieniowania

Strumieniowanie odpowiedzi za pomocą Server-Sent Events (SSE) jest kluczowe dla dobrego doświadczenia użytkownika, ale wprowadza złożoność w obsłudze błędów. W przeciwieństwie do standardowych odpowiedzi JSON, strumień może zostać przerwany w trakcie przetwarzania. Jeśli wystąpi błąd sieci, klient może otrzymać częściowe dane, pozostawiając strumień w stanie niezdefiniowanym.

Podczas implementacji konsumenta strumienia musisz ostrożnie zarządzać jego cyklem życia. Sprawdź kod statusu HTTP przed próbą parsowania strumienia. Jeśli połączenie zostanie zerwane, zaloguj błąd i zdecyduj, czy ponowić próbę, czy wyświetlić komunikat dla użytkownika.

Dodatkowo upewnij się, że Twój klient poprawnie obsługuje znacznik końca strumienia. Niektóre biblioteki oczekują konkretnego zdarzenia zamykającego, podczas gdy inne polegają na zamknięciu połączenia. Niezrozumienie tego może prowadzić do zawieszania się procesów lub wycieków pamięci.

Zawsze wdrażaj limit czasu dla żądań strumieniowych. Jeśli API nie wyśle odpowiedzi w rozsądnym czasie, anuluj żądanie, aby zwolnić zasoby. Jest to kluczowe dla utrzymania stabilności w środowiskach o wysokiej konkurencji.

Liczenie tokenów i limity

Liczenie tokenów to nie tylko utrzymanie się w oknie kontekstu; to również zarządzanie kosztami. Każdy token ma określoną cenę, a błędne obliczenie zużycia może skutkować nieoczekiwanymi rachunkami. Choć nasze ceny są przejrzyste, ze stawkami za token dla danych wejściowych i wyjściowych, nadal musisz dokładnie śledzić zużycie.

Większość programistów używa biblioteki do liczenia tokenów, ale kluczowe jest użycie właściwego tokenizera dla używanego modelu. Różne modele używają różnych tokenizerów, a użycie niewłaściwego może prowadzić do znaczących rozbieżności w zliczanych tokenach. Na przykład, tokenizer wytrenowany na tekście angielskim może inaczej obsługiwać interpunkcję niż ten wytrenowany na kodzie.

Śledź swoje limity zużycia. Nasze API pozwala na 300 zapytań na minutę na klucz. Jeśli przekroczysz ten limit, otrzymasz błąd 429 Too Many Requests. Wdrożenie prostego licznika w Twojej aplikacji pomoże utrzymać się w tych limitach i uniknąć przerw w usługach.

Na koniec pamiętaj, że liczby tokenów mogą nieznacznie różnić się w zależności od implementacji tego samego tokenizera. Zawsze testuj logikę liczenia tokenów na kilku znanych danych wejściowych, aby zapewnić spójność.

Pułapki konfiguracji nagłówków

Nagłówki są warstwą konfiguracji Twoich zapytań API. Ich błędna konfiguracja jest częstą przyczyną błędów 400 Bad Request lub 401 Unauthorized. Dwa najważniejsze nagłówki to Content-Type i Authorization.

Nagłówek Content-Type musi być ustawiony na application/json. Jeśli jest on nieobecny lub niepoprawny, API może nie poprawnie przeanalizować ciała Twojego zapytania. Nagłówek Authorization musi zawierać Twój klucz API w formacie Bearer YOUR_API_KEY. Powszechnym błędem jest zapomnienie o prefiksie Bearer, co skutkuje błędem uwierzytelniania.

  • Sprawdź literówki: Upewnij się, że Twój klucz API został poprawnie skopiowany, w tym ewentualne spacje lub znaki nowej linii na końcu.
  • Zweryfikuj nagłówki: Użyj narzędzia takiego jak curl lub Postman, aby sprawdzić wysyłane nagłówki.
  • Obsługuj rozróżnianie wielkości liter: Niektóre API rozróżniają wielkość liter w nazwach nagłówków, choć większość nowoczesnych API tego nie robi.

Zawsze weryfikuj swoje nagłówki przed wysłaniem zapytania. Mały błąd w nagłówku może spowodować niepowodzenie całego zapytania, prowadząc do dezorientacji i marnowania czasu na debugowanie.

Zarządzanie limitem zapytań

Limity zapytań istnieją, aby zapewnić uczciwe użytkowanie i zapobiec nadużyciom. Nasze API pozwala na 300 zapytań na minutę na klucz. Jeśli przekroczysz ten limit, otrzymasz błąd 429 Too Many Requests. Błąd ten zawiera nagłówek Retry-After, który wskazuje, jak długo należy czekać przed wysłaniem kolejnego zapytania.

Aby skutecznie zarządzać limitami zapytań, wdróż strategię backoffu. Zamiast ponawiać próbę natychmiast, poczekaj okres, który rośnie wykładniczo z każdą kolejną próbą. Zapobiega to przeciążeniu API przez Twoją aplikację w godzinach szczytu.

Monitoruj metryki zużycia. Większość API dostarcza panel lub endpoint API do śledzenia objętości zapytań. Wykorzystaj te dane do optymalizacji wzorca zapytań Twojej aplikacji. Jeśli wysyłasz zbyt wiele małych zapytań, rozważ ich grupowanie.

Pamiętaj, że limity zapytań są przypisane do klucza, a nie do konta. Jeśli masz wiele kluczy, każdy klucz ma swój własny limit. Zaplanuj dystrybucję kluczy odpowiednio, aby uniknąć niespodziewanego osiągnięcia limitów.

Interpretacja kodów błędów

Zrozumienie kodów błędów jest kluczowe dla debugowania. Najczęstsze błędy, z którymi się spotkasz, to 400 Bad Request, 401 Unauthorized, 429 Too Many Requests i 500 Internal Server Error.

  • 400 Nieprawidłowe żądanie: Zwykle oznacza to problem z ciałem żądania, np. brakujące pola lub nieprawidłowy JSON. Sprawdź komunikat o błędzie, aby dowiedzieć się, które pole jest niepoprawne.
  • 401 Nieautoryzowany: Oznacza to problem z twoim kluczem API. Zweryfikuj, czy klucz jest poprawny i nie został unieważniony.
  • 429 Zbyt wiele żądań: Oznacza to, że przekroczyłeś limit zapytań. Wdroż strategię backoffu, aby obsłużyć to poprawnie.
  • 500 Wewnętrzny błąd serwera: Oznacza to problem po stronie serwera. Ponów żądanie po krótkim opóźnieniu.

Zawsze loguj ciało odpowiedzi z błędem. Często zawiera cenne informacje na temat tego, co poszło nie tak, takie jak konkretne pole, które spowodowało błąd. Może to zaoszczędzić Ci godzin debugowania.

Optymalizacja ciał żądań

Ciało żądania jest rdzeniem Twojej interakcji z API. Jego optymalizacja może poprawić wydajność i obniżyć koszty. Pospolitym błędem jest wysyłanie zbyt dużej ilości danych w jednym żądaniu. Jeśli Twój prompt jest zbyt duży, możesz przekroczyć okno kontekstu lub ponieść wyższe koszty.

Starannie zbuduj swój JSON. Upewnij się, że wszystkie wymagane pola są obecne, a pola opcjonalne są uwzględniane tylko wtedy, gdy są potrzebne. Na przykład, jeśli nie potrzebujesz strumieniowania, nie dołączaj parametru stream. Zmniejsza to rozmiar ładunku i upraszcza odpowiedź.

Użyj narzędzi takich jak curl lub Postman do przetestowania ciał żądań. Pozwala to zweryfikować, czy JSON jest poprawny i czy API interpretuje go prawidłowo. Pomaga to również zidentyfikować niepotrzebne dane wysyłane przez Ciebie.

Na koniec rozważ buforowanie odpowiedzi dla identycznych żądań. Jeśli wysyłasz ten sam prompt wielokrotnie, możesz zapisać odpowiedź lokalnie i uniknąć ponownego wywołania API. Może to znacząco zmniejszyć opóźnienia i koszty w przypadku powtarzalnych zadań.

Debugowanie wywoływania funkcji

Wywoływanie funkcji pozwala modelowi wykonywać funkcje na podstawie danych wejściowych użytkownika. Debugowanie wywoływania funkcji może być trudne, ponieważ obejmuje ono wiele kroków: wysłanie żądania, otrzymanie wywołania funkcji, wykonanie funkcji i przesłanie wyniku z powrotem do modelu.

Upewnij się, że definicje Twoich funkcji są dokładne. Schemat musi odpowiadać rzeczywistej sygnaturze funkcji. Jeśli schemat jest niepoprawny, model może wygenerować nieprawidłowe argumenty, co doprowadzi do błędów podczas próby wykonania funkcji.

Loguj argumenty wywołania funkcji oraz wynik funkcji. Pozwala to zweryfikować, czy model generuje poprawne argumenty i czy Twoja funkcja wykonuje się zgodnie z oczekiwaniami. W przypadku błędu dziennik logów pomoże Ci zidentyfikować problem.

Obsłuż błędy w sposób elegancki. Jeśli wykonanie funkcji się nie powiedzie, wyślij komunikat o błędzie z powrotem do modelu, aby mógł dostosować swoją odpowiedź. Zapewnia to lepsze doświadczenie użytkownika i pozwala modelowi odzyskać się po błędach.

Pytania i odpowiedzi

Jak obliczyć zużycie tokenów w moich żądaniach API?

Użyj oficjalnej biblioteki tokenizera dostarczonej dla Twojego konkretnego modelu. Liczba znaków nie jest wiarygodnym wskaźnikiem liczby tokenów, ponieważ różne znaki mogą reprezentować różną liczbę tokenów. Większość SDK dostarcza funkcję pomocniczą do dokładnego liczenia tokenów.

Co się stanie, jeśli przekroczę limit zapytań?

Otrzymasz błąd 429 Zbyt wiele żądań. W odpowiedzi znajduje się nagłówek <code>Retry-After</code> wskazujący, jak długo należy czekać przed ponowną próbą. Zaleca się wdrożenie strategii backoffu wykładniczego, aby obsłużyć to poprawnie.

Czy mogę użyć dowolnego SDK kompatybilnego z OpenAI z tym API?

Tak, każde SDK obsługujące format API OpenAI może być użyte poprzez po prostu zmianę zmiennych środowiskowych <code>base_url</code> i <code>API_KEY</code>. Obejmuje to Python, Node.js i inne popularne języki.

Jak obsłużyć błędy strumieniowania w mojej aplikacji?

Sprawdź kod statusu HTTP przed parsowaniem strumienia. Jeśli połączenie zostanie zerwane, zaloguj błąd i zdecyduj, czy ponowić próbę, czy wyświetlić komunikat do użytkownika. Wdróż limit czasu, aby zapobiec zawieszaniu się procesów.

Twój klucz jest o jeden formularz stąd

Utwórz konto, skopiuj klucz, zmień bazowy URL. To cała konfiguracja.

Pobierz klucz API