Monitorowanie LLM w produkcji: metryki, jakość, koszt, bezpieczeństwo
Monitorowanie LLM w środowisku produkcyjnym: wskaźniki SLI dotyczące opóźnień, błędów, tokenów, trafności i bezpieczeństwa, a także alerty dotyczące obserwowalności, które wcześnie wykrywają stopniowy spadek jakości.
Źródła: LLM Monitoring in Production: Metrics, Quality, Cost, and Safety
To przewodnik pokazuje, jak przejść od surowców do działającego systemu w celu monitorowania LLM w produkcji: metryki, jakość, koszt i bezpieczeństwo. Skupia się na krokach operacyjnych, wyraźnych sprawdzeniach oraz kodzie, który można bez problemu dodać do repozytorium, nie musząc zgadywać intencji. Aby uzyskać ogólny obraz, zdefiniuj wprowadzenia, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Zdokumentuj zarówno prawidłowy przebieg procesu, jak i ścieżkę naprawczą. Próby ponownych działań, kontrola przez ludzi oraz obsługa wiadomości błędowych stanowią część produktu, a nie elementy dodawane później.
Aplikacja oparta na LLM to nie tylko wywołanie modelu
Aby zastosowanie LLM nie polegało jedynie na wywołaniu modelu, należy przed zmianą kodu zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy preferować małe, łatwe do przetestowania jednostki zamiast rozbudowanych skryptów. Gdy dany krok zawiedzie, powinien wskazywać na konkretną odpowiedzialność, a nie na skomplikowany łańcuch operacji. Należy śledzić opóźnienia, wskaźnik błędów, koszt tokenów, poziom trafności informacji oraz incydenty związane z bezpieczeństwem jako kluczowe wskaźniki wydajności.
Zacznij od standardowego monitorowania produkcji
Aby rozpocząć od normalnego monitorowania produkcji, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany etap oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten etap na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktuj tę fazę jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nazwij poszczególne elementy, zdefiniuj kryteria sukcesu i odrzuć ciche, częściowe ukończenie zadań. Śledź opóźnienia, wskaźnik błędów, koszt tokenów, trafność informacji oraz incydenty związane z bezpieczeństwem jako kluczowe wskaźniki wydajności.
Stack monitoringu, który naprawdę ma znaczenie
Dla stacku monitoringu, który naprawdę ma znaczenie, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy rejestrować czasy wykonywania oraz koszt tokenów lub zapytań obok wyników funkcjonalnych. Wczesna widoczność kosztów zapobiega niespodziewanym rachunkom, gdy ścieżka przechodzi z środowiska demonstracyjnego do współdzielonych środowisk. Należy śledzić opóźnienia, wskaźnik błędów, koszt tokenów, poziom trafności oraz incydenty związane z bezpieczeństwem jako kluczowe wskaźniki wydajności. Dla stacku monitoringu, który naprawdę ma znaczenie, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy udokumentować zarówno ścieżkę prawidłowego działania, jak i ścieżkę naprawczą. Próby ponownego wykonania, mechanizmy ludzkiej kontroli oraz obsługa wiadomości błędowych stanowią część produktu, a nie elementy dodawane później.
Koszt za żądanie to często niewłaściwa miara
Aby ustalić, że Koszt za żądanie to często niewłaściwa miara, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanej punktacji kontrolnej, bez konieczności zgadywania ukrytego stanu. Lepiej używać małych, testowalnych jednostek niż rozbudowanych skryptów. Gdy dany krok zawodzi, powinien wskazywać na konkretną odpowiedzialność, a nie na skomplikowany proces. Należy wykrywać zmiany w rozkładzie, a nie tylko bezpośrednie błędy. Powolny spadek jakości jest najdroższym rodzajem awarii.
Zapisuj wystarczająco dużo informacji kontekstowych, aby móc odtworzyć awarię
Aby mieć wystarczająco dużo kontekstu do odtworzenia błędu, przed modyfikacją kodu należy określić dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia. Operatorzy powinni móc ponownie uruchomić ten krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktuj tę fazę jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nazwij poszczególne elementy, zdefiniuj kryteria sukcesu i odrzuć ciche, częściowe ukończenie zadań. Ustaw alerty na zmiany w rozkładzie, a nie tylko na poważne błędy. Ciche pogorszenie jakości jest najdroższym rodzajem błędu.
trace_id
request_id
session_id
timestamp
application_version
prompt_template_id
prompt_template_version
retrieval_pipeline_version
tool_schema_version
requested_model
returned_model
generation_parameters
input_tokens
output_tokens
time_to_first_output
total_generation_time
total_request_time
retrieval_query
retrieval_filters
retrieved_document_ids
retrieved_document_versions
retrieval_scores
reranker_scores
tool_name
tool_status
tool_duration
tool_retry_count
tool_side_effect_id
input_guardrail_result
output_guardrail_result
policy_reason
quality_scores
human_review_status
user_feedback
task_outcome
Nie zamieniaj możliwości obserwacji na wyciek danych prywatnych
Aby nie przekształcić możliwości obserwacji w wyciek danych prywatnych, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy rejestrować czasy wykonywania oraz koszt tokenów lub zapytań obok wyników funkcjonalnych. Wczesna widoczność kosztów zapobiega niespodziewanym rachunkom, gdy ścieżka przechodzi z środowiska demonstracyjnego do współdzielonych środowisk. Należy wyświetlać alerty w przypadku zmian w rozkładzie, a nie tylko przy poważnych awariach. Powolny spadek jakości jest najdroższym rodzajem awarii. Aby nie przekształcić możliwości obserwacji w wyciek danych prywatnych, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy udokumentować zarówno ścieżkę prawidłowego działania, jak i ścieżkę naprawczą. Próby ponownego wykonania, kontrole ludzkie oraz obsługa wiadomości błędowych stanowią część produktu, a nie elementy dodawane później.
Jakość nie może być sprowadzona do jednego uniwersalnego wyniku
Ponieważ jakość nie może być sprowadzona do jednego uniwersalnego wyniku, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy preferować małe, testowalne jednostki zamiast rozbudowanych skryptów. Gdy dany krok zawiedzie, powinno to wskazywać na konkretną odpowiedzialność, a nie na skomplikowany proces. Włącz przykładowe ślady do zestawu oceny, aby nieoczekiwane sytuacje w produkcji stały się testami offline.
Wykorzystuj sędziów opartych na LLM, ale nie czcij ich
Dla sędziów LLM – nie czcijcie ich – zdefiniujcie dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktujcie ten etap jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nazwijcie pliki generowane, zdefiniujcie kryteria sukcesu i odrzućcie ciche, częściowe ukończenie zadań. Włączcie przykładowe ślady działania do zestawu oceny, aby niespodzianki w produkcji przekształciły się w testy offline.
Pobieranie i generowanie muszą być monitorowane oddzielnie
Aby monitorować proces wyszukiwania i generowania oddzielnie, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy rejestrować czasy wykonywania operacji oraz koszt tokenów lub zapytań obok wyników funkcjonalnych. Wczesna widoczność kosztów zapobiega niespodziewanym rachunkom, gdy proces przechodzi z środowiska demonstracyjnego do współdzielonych środowisk. Należy zmierzyć stopień odzyskiwania informacji na ustalonej grupie pytań przed dostosowywaniem promptów. Częste zmiany promptów rzadko poprawiają słabe wyniki wyszukiwania. Aby monitorować proces wyszukiwania i generowania oddzielnie, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy udokumentować zarówno optymalny przebieg procesu, jak i ścieżki naprawcze. Próby ponownego uruchomienia, kontrole ludzkie oraz obsługa błędów stanowią część produktu.
Nie później niż teraz.Nadzór agenta to nadzór działań
Ponieważ nadzór agenta polega na monitorowaniu działań, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Lepiej używać małych, testowalnych jednostek niż rozbudowanych skryptów. Gdy dany krok zawiedzie, powinno to wskazywać na konkretną odpowiedzialność, a nie na skomplikowaną strukturę przepływu. Utrzymuj stan grafu w prostej formie i z określonym typem. Wtórne struktury ukrywają informację o tym, który węzeł zapisał dane pole, i utrudniają kontynuację pracy po przerwach.
Komentarze użytkowników są przydatne, ale hałaśliwe
Aby opinie użytkowników były przydatne, ale nie zakłócały pracy, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktuj tę fazę jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nadaj nazwy poszczególnym elementom, zdefiniuj kryteria sukcesu i odrzucaj ciche, częściowe ukończenie zadań. Śledź opóźnienia, wskaźnik błędów, koszt tokenów, trafność informacji oraz incydenty związane z bezpieczeństwem jako kluczowe wskaźniki wydajności.
Nadzoruj poszczególne fragmenty, a nie tylko ogólne średnie
Dla fragmentów Monitor, a nie tylko średnich globalnych, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Zapisuj czas trwania oraz koszt tokenów lub zapytań obok wyników funkcjonalnych. Wczesna widoczność kosztów zapobiega niespodziewanym rachunkom, gdy ścieżka przechodzi z środowiska demonstracyjnego do współdzielonych środowisk. Rozdziel politykę dzielenia na fragmenty od polityki pobierania danych. Zmiana jednej z nich nie powinna zmuszać do przepisywania drugiej, gdy zmieniają się metryki jakości. Dla fragmentów Monitor, a nie tylko średnich globalnych, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Dokumentuj razem ścieżkę prawidłowego działania oraz ścieżkę naprawczą. Próby ponownych działań, kontrolne punkty ludzkie oraz obsługa wiadomości błędnych stanowią część produktu, a nie elementy dodawane później.
Alerty powinny prowadzić do podjęcia decyzji.
Alerty powinny prowadzić do podjęcia decyzji
Aby alerty faktycznie skutkowały decyzjami, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić dany krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu systemu. Lepiej są małe, łatwe do przetestowania jednostki niż rozbudowane skrypty. Gdy jakiś krok zawodzi, powinien wskazywać na konkretną odpowiedzialność, a nie na skomplikowany łańcuch operacji. Należy wysyłać alerty w przypadku zmian w rozkładzie, a nie tylko przy poważnych awariach. Powolny spadek jakości jest najdroższym rodzajem awarii.
Zdefiniuj cele poziomu usługi LLM
Aby określić cele poziomu usługi Define LLM, należy zdefiniować dane wejściowe, osobę odpowiedzialną za daną czynność oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić tę czynność na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktuj tę fazę jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nazwij poszczególne elementy, zdefiniuj kryteria sukcesu i odrzuć ciche, częściowe ukończenie zadania. Ustaw alerty na zmiany w rozkładzie, a nie tylko na poważne błędy. Ciche pogorszenie jakości jest najdroższym rodzajem błędu.
Buduj monitorowanie i ocenę jako jeden obieg informacji zwrotnych
Aby monitorowanie i ocena procesu budowy stanowiły jedną pętlę zwrotną, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany etap oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie uruchomić ten etap na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy rejestrować czasy wykonywania oraz koszt tokenów lub zapytań obok wyników funkcjonalnych. Wczesna widoczność kosztów zapobiega niespodziewanym rachunkom, gdy proces przechodzi z środowiska demonstracyjnego do współdzielonych środowisk. Należy wyświetlać alerty przy zmianach w rozkładzie, a nie tylko przy poważnych błędach. Powolny spadek jakości jest najdroższym rodzajem awarii. Aby monitorowanie i ocena procesu budowy stanowiły jedną pętlę zwrotną, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany etap oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie uruchomić ten etap na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy udokumentować zarówno prawidłowy przebieg procesu, jak i ścieżkę naprawczą. Próby ponownego wykonania, kontrole ludzkie oraz obsługa wiadomości błędowych stanowią część produktu, a nie elementy dodawane później.
lish.
Praktyczny plan wdrożenia
Aby stworzyć praktyczny plan wdrożenia, należy zdefiniować wymagane dane wejściowe, osobę odpowiedzialną za daną fazę oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić daną fazę na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu systemu. Należy preferować małe, łatwe do przetestowania jednostki nad rozbudowanymi skryptami. Gdy jakaś faza zawiedzie, powinno to wskazywać na konkretną odpowiedzialność, a nie na skomplikowaną strukturę procesów. Włącz przykładowe zapisy do zestawu oceny, aby nieoczekiwane sytuacje w produkcji mogły być traktowane jako testy offline.
Prawdziwy cel monitorowania LLM
Aby prawidłowo monitorować LLM, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany etap oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie uruchomić ten etap na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktuj tę fazę jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nazwij poszczególne elementy, zdefiniuj kryteria sukcesu i odrzuć przypadkowe, częściowe ukończenie zadań. Włącz przykładowe ślady działania do zestawu oceny, aby niespodzianki w produkcji mogły być testowane offline.
Lista kontrolna operacyjna
Dla listy kontrolnej operacyjnej należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany etap oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie uruchomić ten etap na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu.
Zachowaj konfigurację poza kodem aplikacji. Pliki środowiskowe, magazyny tajnych danych oraz flagi funkcjonalne powinny znajdować się w jednym miejscu, które operatorzy mogą sprawdzić bez konieczności analizy całej struktury.
Alerty dotyczące zmian w rozkładzie, a nie tylko poważnych awarii. Cichy spadek jakości to najdroższy typ awarii.
Napisz krótki przewodnik: jak rotować klucze, jak opróżniać kolejki, jak cofnąć ostatni proces pobierania danych.
Zdokumentuj zarówno prawidłowy przebieg działania, jak i ścieżkę odzyskiwania. Próby ponownych działań, kontrole ludzkie oraz obsługa wiadomości błędnych stanowią część produktu, a nie elementy dodawane później.
Alerty dotyczące zmian w rozkładzie, a nie tylko poważnych awarii. Cichy spadek jakości to najdroższy typ awarii.
Zanim wdrożysz nową architekturę, zamroź wersje oprogramowania, utwórz dokumentację kluczowych procesów oraz potwierdź kroki konieczne do cofnięcia zmian. Środowiska współdzielone wymagają ograniczeń szybkości, weryfikacji uprawnień oraz wyraźnego odpowiedzialnego za rotację kluczy. Wolisz nudną niezawodność od pomysłowych, jednorazowych demonstracji.
Dla notatki dotyczącej wzmocnienia bezpieczeństwa nr 0 należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Traktuj tę fazę jako umowę pomiędzy danymi wejściowymi a zweryfikowanymi wynikami. Nazwij poszczególne elementy, zdefiniuj kryteria sukcesu i odrzuć ciche, częściowe ukończenie zadania.
Dla notatki dotyczącej wzmocnienia bezpieczeństwa nr 1 należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie uruchomić ten krok od znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Przechowuj konfigurację poza kodem aplikacji. Pliki środowiskowe, magazyny tajnych danych oraz flagi funkcjonalne powinny znajdować się w jednym miejscu, które operatorzy mogą sprawdzić, nie musząc czytać całej struktury.
W odniesieniu do uwagi nr 2 dotyczącej wzmocnienia bezpieczeństwa, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie wykonać ten krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy preferować małe, łatwe do przetestowania jednostki zamiast rozbudowanych skryptów. Gdy dany krok zawiedzie, powinien wskazywać na konkretną odpowiedzialność, a nie na skomplikowany łańcuch operacji.
W odniesieniu do uwagi nr 3 dotyczącej wzmocnienia bezpieczeństwa, należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed zmianą kodu. Operatorzy powinni móc ponownie wykonać ten krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy rejestrować czasy wykonywania oraz koszt tokenów lub zapytań obok wyników funkcjonalnych. Wczesna widoczność kosztów zapobiega nieoczekiwanym rachunkom, gdy proces przechodzi z środowiska demonstracyjnego do wspólnych środowisk.
Dla uwagi dotyczącej wzmocnienia bezpieczeństwa nr 4 należy zdefiniować dane wejściowe, osobę odpowiedzialną za dany krok oraz kryteria zakończenia przed modyfikacją kodu. Operatorzy powinni móc ponownie wykonać ten krok na podstawie znanego punktu kontrolnego, bez konieczności zgadywania ukrytego stanu. Należy udokumentować zarówno prawidłowy przebieg procesu, jak i ścieżkę naprawczą. Próby ponowne, kontrola przez ludzi oraz obsługa wiadomości nieodebranych stanowią część produktu, a nie elementy dodawane później.
Literatura pokrewna
- Sześć metryk oceny RAG, które są ważne w produkcji — Recall@K, nDCG, MRR, wiarygodność, opóźnienie i koszt — jak debugować proces wyszukiwania, który wygląda lepiej na papierze, podczas gdy jakość odpowiedzi się pogarsza.