Przejdź do głównej zawartości

14 postów z tagiem "AI"

Sztuczna inteligencja i jej zastosowania.

Wyświetl wszystkie tagi

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

· 18 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

· 17 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

· 15 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

· 15 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.

Managed Agents: rozdzielenie mózgu od rąk agenta i co z tego wynika dla bezpieczeństwa

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

W poprzednim wpisie o katalogu Claude Customize skończyłem na przyznaniu, że moje własne rekomendacje są polityką na papierze — katalog nie ma etapu zatwierdzania, więc egzekwowanie zostaje po stronie procesu. Managed Agents, platforma Anthropic do uruchamiania agentów po stronie serwera, jest odpowiedzią na dokładnie ten problem: allowlista sieciowa, bramka akceptacyjna na wywołanie narzędzia i vault na poświadczenia są tam prymitywami API, a nie zapisem w regulaminie. Haczyk polega na tym, że wszystkie dziewięć funkcji, które o tym decydują, ma status Beta.

Claude Customize w firmie: skille, konektory i wtyczki to trzy różne modele ryzyka

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

Panel Customize w Claude wygląda jak jeden sklep z rozszerzeniami, ale kryje trzy zupełnie różne mechanizmy: Skills, Connectors i Plugins. Różnią się tym, co faktycznie dostają — instrukcje, token OAuth czy jedno i drugie naraz — a więc także tym, co może pójść nie tak. Traktowanie ich jako jednej kategorii „wtyczek" jest najczęstszym błędem przy pisaniu polityki bezpieczeństwa dla asystentów AI. Do tego dochodzi czwarty element, którego w katalogu nie widać: Scheduled tasks, czyli ten sam agent uruchamiany cyklicznie, bez człowieka przy klawiaturze.

Claude Code za darmo: OpenRouter + NVIDIA Nemotron zamiast API Anthropica

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

Claude Code da się uruchomić za darmo, przeciwko realnemu modelowi klasy 30B z obsługą narzędzi, bez pisania linijki kodu proxy. OpenRouter wystawia endpoint kompatybilny z Anthropic Messages API pod https://openrouter.ai/api, a w jego katalogu są darmowe modele NVIDIA Nemotron, które wprost wspierają wywołania narzędzi. Wystarczą trzy zmienne środowiskowe. W tym wpisie: jak to skonfigurować bezpiecznie (klucz API nigdy nie ląduje tam, gdzie nie powinien), jak wybrać między dwoma wariantami Nemotrona i jak zrobić z tego jeden skrót powłokowy, który działa dokładnie jak claude --resume.

AI jako dżin: dlaczego modele hakują reguły, a nie kod

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

Bruce Schneier od lat powtarza, że hacking nie dotyczy kodu, tylko reguł — kodeks podatkowy, regulamin programu lojalnościowego i procedura głosowania to też algorytmy z wejściem i wyjściem, a luka prawna to podatność. Nowe w jego tegorocznym wystąpieniu na DEF CON jest to, kto tych luk szuka: nie księgowy, tylko model, który optymalizuje cel i nie ma pojęcia o niepisanych normach. Poniżej: mechanika reward hackingu, taksonomia „dżinów", przesunięcie priorytetu z poufności na integralność — i osobno to, co z tej narracji jest realnym wnioskiem inżynierskim, a co ładną metaforą.

Jakość lokalnych LLM: siedem modeli, dwa trudne pytania i wzorzec „brzmi jak ekspert, zmyśla konkrety”

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

Prędkość i jakość lokalnych modeli językowych nie korelują ze sobą w żaden użyteczny sposób. Najszybszy z siedmiu testowanych modeli — 25 tokenów na sekundę — wypadł merytorycznie najgorzej. Najlepszy jakościowo generował 7 tokenów na sekundę. A wspólny mianownik prawie wszystkich odpowiedzi to jeden powtarzalny wzorzec: poprawna struktura i trafny kierunek, przy zmyślonych konkretach — nazwach funkcji API, składni komend, definicjach statystycznych. To jest różnica między „brzmi jak ekspert” a „można wkleić i uruchomić”.