Praca z LLM to praca z upośledzonym asystentem

Po kilku miesiącach pracy z modelami językowymi mam w końcu porównanie, które mi pasuje. LLM to jak asystent, który jest genialny w jednej rzeczy, a upośledzony w dwóch innych: nie umie słuchać i niewiele rozumie z tego, co się do niego mówi.

Nie piszę tego, żeby dokopać modelom. Piszę, bo to najuczciwszy opis, jaki znam — i bo dopóki się tego nie zrozumie, człowiek ciągle daje się nabrać.

W czym jest dobry

Zacznijmy uczciwie. Generuje płynnie, szybko i z pewnością siebie. Zna ogrom wiedzy. Napisze skrypt, przetłumaczy, podsumuje, wymyśli dziesięć wariantów nagłówka. To jest realne i to działa. Gdyby to było wszystko, byłby idealnym pracownikiem.

Ale nie jest.

Nie umie słuchać

„Słuchanie" to nie jest jego mocna strona. Mówisz: „synchronizuj wiedzę między maszynami, ale niczego nie kasuj, używaj trybu bezpiecznego". A on — bo gdzieś w wzorcach widział, że sync to rsync z flagą --delete — robi dokładnie to, przed czym ostrzegałeś. Nie dlatego, że jest złośliwy. Dlatego, że nie „słucha" twojej intencji. On dopasowuje tokeny do kontekstu. Twoje „ale nie kasuj" to dla niego kilka dodatkowych tokenów, które statystycznie nie muszą wygrać z utartym schematem „sync = rsync –delete".

Niewiele rozumie

A „rozumienie" — tu jest najgorzej. Model nie ma modelu twojego świata. Ma rozkład prawdopodobieństwa następnego tokena. Więc nie „rozumie", że pusta kopia lokalna plus --delete równa się wyczyszczenie wspólnego magazynu. On widzi komendę pasującą do wzorca i ją wykonuje. Konsekwencje są poza jego horyzontem.

Dowód: synchronizacja wiedzy

Miałem to niedawno w czystej formie. Synchronizacja wiedzy między trzema maszynami — Mac, druga maszyna, VPS. Wszystko ustawione na tryb bezpieczny, „niczego nie kasujemy". I nagle VPS traci półtora tysiąca plików.

Śledztwo pokazało: agent na drugiej maszynie łączył się co trzy minuty i kasował pliki flagą --delete. Jego lokalna kopia była pusta, więc --delete wyczyścił wspólny magazyn. Przywróciłem z kopii — i po czterech minutach znowu wszystko zniknęło, bo tamten agent wrócił i wykasował jeszcze raz.

Czy to złośliwość? Nie. To dokładnie to upośledzenie: dostał instrukcję „synchronizuj", a w jego wzorcach „synchronizuj" oznacza „rsync –delete". Moje „ale bezpiecznie" przegrało z utartym schematem. Nie słuchał. Nie rozumiał.

Co z tym zrobić

Sedno, które kosztowało mnie sporo czasu, zanim dotarło: nie możesz powiedzieć raz i oczekiwać, że załapał. Musisz zakładać, że zrobi głupotę dokładnie w ten sposób, przed którym nie ostrzegłeś — bo nie ma modelu twojego świata, ma statystykę. Nadzór, bariery ochronne, weryfikacja — to nie dodatek, to połowa pracy.

To nie jest narzekanie. Kiedy to zrozumiesz, praca z LLM staje się wreszcie przewidywalna. Przestajesz się dziwić, że „przecież mu mówiłem", i zaczynasz projektować tak, żeby głupota nie miała gdzie wjechać.

Bo genialny i upośledzony asystent to wciąż najlepszy asystent, jakiego mieliśmy. Tylko trzeba go pilnować jak nikogo innego.