Przejdź do głównej zawartości

9 postów z tagiem "Book Review"

Recenzje książek technicznych i branżowych.

Wyświetl wszystkie tagi

Generative AI Design Patterns #5: LLM-as-Judge, Reflection, Dependency Injection i Prompt Optimization, czyli ewaluator jest specyfikacją

· 17 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Rozdział 6 „Generative AI Design Patterns" opisuje cztery wzorce niezawodności: LLM-as-Judge, Reflection, Dependency Injection i Prompt Optimization. Wszystkie opierają się na ewaluatorze, więc to on decyduje, co system uzna za dobry wynik. Sprawdziłem dwa z tych wzorców na Qwen3.8-27B na stacji z RTX 5090. Jedna runda samokrytyki tym samym modelem podniosła wynik na 60 zadaniach kalendarzowych z 42 do 45. Krytyk przepuścił jednak połowę błędów, a jedną poprawną odpowiedź zepsuł. Automatyczny test, który mówił tylko „źle", podniósł wynik do 54, a poprawnych odpowiedzi z założenia nie ruszał. W Prompt Optimization obaj sędziowie wybrali prompt lepszy od bazowego, co zgadza się z autorami. Sędzia z ogólną rubryką ocenił jednak wyżej od bazowego także prompt, który ani razu nie podał numeru zgłoszenia.

Generative AI Design Patterns #4: Chain of Thought, Tree of Thoughts, Adapter Tuning i Evol-Instruct, czyli który brak naprawia które narzędzie

· 19 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Rozdział 5 „Generative AI Design Patterns" opisuje cztery sposoby rozszerzania tego, co model potrafi: Chain of Thought, Tree of Thoughts, Adapter Tuning i Evol-Instruct. Każdy naprawia inny brak, a najczęstszy błąd to dostrajanie modelu, gdy brakuje mu faktu. Autorzy sami datują Chain of Thought i radzą co pół roku sprawdzać, czy jest jeszcze potrzebny. Sprawdziłem to na 20 nowych zadaniach i czterech lokalnych modelach, w tym na Qwen3.8-27B na RTX 5090. Wynik zgadza się z tą częścią tezy autorów, którą da się sprawdzić lokalnie. Dopisek „rozwiąż krok po kroku" podniósł wyniki modeli bez trybu myślenia lub z wyłączonym myśleniem z 1 do 9, z 4 do 16 i z 6 do 19 na 20, a Qwen3.8 z włączonym myśleniem osiągnął bez dopisku te same 19. U większych modeli błędy, które zostały, to głównie poprawnie rozpisane kroki ze źle policzonymi datami.

Generative AI Design Patterns #3: HyDE, reranking, Trustworthy Generation i Deep Search, czyli podobieństwo to nie trafność

· 35 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Rozdział 4 „Generative AI Design Patterns" dokłada do RAG-a cztery wzorce: przepisywanie zapytania (w tym HyDE), przetwarzanie pobranych fragmentów z rerankingiem, sygnalizowanie wiarygodności odpowiedzi i iteracyjne wyszukiwanie. Sprawdziłem wszystkie cztery na fikcyjnej polskiej instrukcji serwisowej i lokalnych modelach. Najmocniej potwierdziło się zastrzeżenie, które autorzy sami stawiają przy HyDE: w domenie, której model nie zna, hipotetyczna odpowiedź jest zmyślona, a wyszukiwanie po niej trafiło właściwy fragment w 10 przypadkach na 20 zamiast w 17. Reranking poprawił kolejność, ale lepszy okazał się wolny sędzia-LLM niż wyspecjalizowany reranker. Pętla Deep Search z promptem z książki w trzech pytaniach na pięć kończyła pracę po pierwszym kroku z odpowiedzią niepełną, bo jej ewaluator uznawał „brakuje informacji" za odpowiedź kompletną.

Generative AI Design Patterns #2: Basic RAG, Semantic Indexing i Indexing at Scale, czyli co psuje się przed modelem

· 32 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Rozdział 3 „Generative AI Design Patterns" buduje RAG w trzech krokach: wyszukiwanie po słowach, wyszukiwanie po znaczeniu i metadane, które pozwalają bazie przetrwać wzrost. Sprawdziłem wszystkie trzy na polskiej instrukcji serwisowej i lokalnych modelach. Dwie tezy książki potwierdziły się w formie mocniejszej, niż je zapisano: surowe BM25 w języku fleksyjnym trafia na pierwszej pozycji 2 z 10 zapytań, a usunięcie starych biuletynów z bazy zmieniło poprawną odpowiedź na błędną. Trzecia teza okazała się zależna od modelu. bge-m3 bez BM25 rozróżnił 24 z 24 kodów części różniących się jednym znakiem, gdy kod był zapisany tak jak w katalogu, a naiwna hybryda wypadła od niego gorzej.

Generative AI Design Patterns #1b: Style Transfer, Reverse Neutralization i Content Optimization, czyli styl bez gwarancji

· 25 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Pozostałe trzy wzorce z rozdziału 2 „Generative AI Design Patterns" kontrolują styl tam, gdzie nie da się go zapisać gramatyką: Style Transfer uczy stylu na przykładach, Reverse Neutralization wytwarza przykłady, gdy ich nie ma, a Content Optimization w ogóle rezygnuje z opisu stylu i dostraja model pod ocenę ewaluatora. Wszystkie trzy dają prawdopodobieństwo, nie gwarancję, a w dwóch z nich o jakości decyduje sprawdzian, którego łatwo nie docenić. Sprawdziłem oba sprawdziany na lokalnych modelach. Sędzia-LLM zapytany „które ogłoszenie jest lepsze" wybierał dłuższą wersję w 15 na 16 porównań, także wtedy, gdy miała błędny fakt, a przy równej długości trafność nie miała dla niego znaczenia. Neutralizacja z Reverse Neutralization zmieniła sens w 10 z 12 wyjść, a automatyczna kontrola faktów oznaczyła jedno.

Generative AI Design Patterns #1a: Logits Masking i Grammar, czyli gwarancja formy, nie treści

· 23 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Pierwsze dwa wzorce z „Generative AI Design Patterns" — Logits Masking i Grammar — odpowiadają na najczęstszy problem z modelem w produkcji: nie trzyma formatu. Oba działają tak samo: zerują prawdopodobieństwo tokenów, które łamią regułę, więc gwarantują kształt odpowiedzi. Autorzy uczciwie dodają, że kształt to nie treść, i radzą zostawić modelowi furtkę Unknown. Sprawdziłem to na dwóch lokalnych modelach na CPU. Furtka jest potrzebna, ale nie działa tak, jak się zakłada: w moim teście faktura w złotówkach ze schematem bez PLN wychodziła u Qwena 30B jako USD w 10 na 10 prób, także wtedy, gdy model miał do dyspozycji UNKNOWN i instrukcję, kiedy go użyć.

Generative AI Design Patterns (Lakshmanan, Hapke): recenzja i mapa 32 wzorców

· 9 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

„Generative AI Design Patterns" Valliappy Lakshmanana i Hannesa Hapkego (O'Reilly) katalogizuje 32 wzorce projektowania aplikacji na modelach generatywnych: od maskowania logitów, przez RAG i agentów, po guardrails. Przeczytałem całość z jednym pytaniem przy każdym wzorcu: czy odpowiada na trwałą własność modeli, czy obchodzi brak funkcji w API z 2025 roku. Mój werdykt: część katalogu się zestarzeje, ale kryteria wyboru zostaną, bo autorzy przy większości wzorców piszą, kiedy go nie stosować, a przy kilku podpierają to liczbami. Ten wpis to recenzja i mapa serii — w dziesięciu kolejnych rozbieram wzorce grupami.

Czysty Kod – Robert C. Martin: notatki z lektury

· 2 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

„Czysty Kod. Podręcznik dobrego programisty" Roberta C. Martina (Uncle Boba) to jedna z tych książek, które programista powinien przeczytać przynajmniej raz — a potem wracać do nich za każdym razem, gdy trafi na kod, który budzi wątpliwości.

Zebrałem z niej szczegółowe notatki z każdego rozdziału: kluczowe zasady, przykłady kodu przed i po refaktoryzacji oraz praktyczne wnioski gotowe do zastosowania od zaraz.

Dlaczego warto pisać własne narzędzia? Przegląd Black Hat Python (Wydanie II)

· 4 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Od Script Kiddie do Profesjonalisty. W przedmowie do drugiego wydania "Black Hat Python", Charlie Miller (znany z głośnego ataku na Jeepa Cherokee) stawia sprawę jasno: różnica między "script kiddies" a profesjonalnymi hakerami polega na tym, że ci pierwsi używają cudzych narzędzi, a ci drudzy potrafią napisać własne.