Strona główna / Rozdział 7 · Model na produkcji
    Ostatnia zmiana · 9 min czytania

    Użyj z AI

    LLM na produkcji

    Wywołanie modelu to zdalna zależność, która bywa przeciążona, wolna i droga, a czasem zwraca nie to, o co prosisz. System produkcyjny to kod wokół tego wywołania: ponowienia i fallbacki, kontrola czasu i kosztu, trace’y, walidacja i bezpieczne wdrażanie zmian.

    Po ludzkuRestauracja z jednym świetnym, ale kapryśnym kucharzem: czasem jest zawalony zamówieniami, czasem gotuje wolno, czasem poda nie to danie. Kierownik sali nie poprawi kucharza, ale może powtórzyć zamówienie za chwilę, trzymać drugiego kucharza na zastępstwo, sprawdzić talerz przed wyniesieniem i notować, co poszło nie tak.

    Wybierz awarię i włączaj zabezpieczenia. Zobacz, co dostanie użytkownik, po jakim czasie i za ile

    Awaria

    Zabezpieczenia

      pierwsza treść dla użytkownika
      koniec obsługi
      wywołań modelu
      koszt, 1× to jedno zwykłe wywołanie

      Symulacja poglądowa, liczby dobrane ręcznie. Bez awarii: pierwszy token po 0,8 s, całość po 6,8 s, koszt 1×. Model zapasowy u innego dostawcy ma zimny cache, więc kosztuje 1,4×. Polityka: timeout 20 s na próbę (przy streamingu 10 s ciszy między fragmentami), najwyżej 2 ponowienia w łącznym limicie 45 s, fallback po wyczerpaniu ponowień. Przerwana próba kosztuje proporcjonalnie do tego, co zdążyła wygenerować.

      Awarie: co ponawiać i jak

      Czas odpowiedzi

      Koszt

      Obserwowalność

      Guardrails i wdrażanie zmian

      Co widzi użytkownik

      Sprawdź się

      Wdrażasz funkcję opartą na LLM-ie na produkcję. Co budujesz wokół samego wywołania modelu?

      Model traktuje się jak zawodną, wolną i drogą zależność zewnętrzną. Każde wywołanie ma timeout, a błędy przejściowe, czyli 429, przeciążenie i 5xx, ponawia się z wykładniczym backoffem i jitterem, w jednej warstwie. Akcje narzędzi mają klucze idempotencji. Fallback, najlepiej ten sam model na innej platformie, ma własne evale i circuit breaker. Czas i koszt obniżają streaming, krótsze wyjście, prompt caching, tańszy model do prostych kroków i batch offline. Każde wywołanie trafia do trace’a z tokenami, kosztem i wersją. Wyjście waliduje się w kodzie, a zmiany promptu i modelu wypuszcza się przez evale i canary.

      In English

      Treat the model as an unreliable, slow and expensive external dependency. Every call has a timeout, and transient errors (429, overload, 5xx) are retried with exponential backoff and jitter, in one layer only. Tool actions carry idempotency keys. The fallback, ideally the same model on another platform, gets its own evals and a circuit breaker. Streaming, shorter outputs, prompt caching, a cheaper model for simple steps and offline batch jobs cut latency and cost. Every call lands in a trace with tokens, cost and version. Outputs are validated in code, and prompt and model changes ship through evals and a canary.

      Pytania pogłębiające (5)
      Dostawca zwraca 529 od dziesięciu minut. Co widzi użytkownik?
      Po serii błędów circuit breaker przestaje wołać dostawcę i ruch idzie od razu do fallbacku, więc użytkownik dostaje odpowiedź modelu zapasowego bez czekania na kolejne ponowienia. Bez fallbacku: szybki, jasny komunikat, a zadania, które mogą poczekać, trafiają do kolejki. Gdy próbne requesty przechodzą, breaker stopniowo przywraca ruch.
      Czemu nie ponawiać każdego błędu?
      Błąd 400 czy 401 za drugim razem wyjdzie tak samo, a 429 z wyczerpanego limitu wydatków nie minie sam. Ślepe ponawianie mnoży ruch w najgorszym momencie: przy przeciążeniu każdy klient z trzema próbami potraja obciążenie. Stąd jitter, limit łącznego czasu i ponawianie w jednej warstwie.
      Jak obniżysz rachunek o połowę bez utraty jakości?
      Najpierw pomiar: koszt na ukończone zadanie z podziałem na wejście, wyjście i cache. Potem stały prefiks pod prompt caching, batch dla wszystkiego, co nie jest interaktywne, krótsze wyjście, tańszy model tam, gdzie evale nie pokazują różnicy, i cache wyników powtarzalnych zadań. Każdą zmianę sprawdź na evalach, bo tańszy model potrafi po cichu obniżyć jakość.
      Jak pogodzić streaming z walidacją JSON-a?
      Pełną walidację zrobisz dopiero po ostatnim tokenie. W interfejsie streamuj tekst albo parsuj strukturę przyrostowo i pokazuj pola, które są już kompletne. Tam, gdzie błąd jest kosztowny, na przykład przed zapisem albo akcją, buforuj i waliduj całość.
      Jak bezpiecznie przejść na nowszy model?
      Evale offline na zestawie z prawdziwych przypadków, porównanie kosztu i czasu, potem canary na kilku procentach ruchu z tymi samymi metrykami i gotowym rollbackiem. Prompt zwykle trzeba dostroić, bo nowy model inaczej rozumie te same instrukcje. Fallback na inny model testuj tak samo, bo to też zmiana modelu.

      Źródła

      Zgłoś błąd · Zaproponuj poprawkę