Ustrukturyzowane Wyjście z LLM: JSON Schema Wyjaśnione

Poproś model o odpowiedź w JSON i w większości przypadków json.loads() działa bez problemu. Problemy zaczynają się tam, gdzie kosztują cię sesję debugowania: jednoliniowy komentarz w środku obiektu, markdown code fence owijający całość, klucz zapisany jako userEmail, gdy kod oczekuje user_email. Bardziej rygorystyczny prompt (“odpowiedz WYŁĄCZNIE obiektem JSON, bez żadnego innego tekstu”) sprawia, że takie przypadki są rzadsze. Nie eliminuje ich całkowicie, bo model nadal może zignorować prośbę. Ustrukturyzowane wyjście usuwa prośbę z równania: przekazujesz API JSON Schema, który ogranicza samplowanie tokenów samego modelu tak, że odpowiedź musi do niego pasować. ...

6 listopada 2026 · 8 min · 1583 słów · SpaghettiCoder

Jak Zbudować LLM Eval: Testowanie Promptów Jak Kodu

Czemu “wygląda dobrze” nie jest testem dla prompta Dopracowujesz treść prompta, który klasyfikuje zgłoszenia, sprawdzasz go na trzech przykładach otwartych w notatniku i wdrażasz. Tydzień później reklamacje dotyczące rozliczeń, które wcześniej trafiały do właściwej kolejki, zaczynają trafiać do “pytania”. Nie te trzy przypadki, które sprawdziłeś, ale te pozostałe czterysta, których nie sprawdziłeś. Nic się nie wywala. Nie ma żadnego stack trace’u. Prompt przeczytany na głos wciąż brzmi dobrze. Code review i kilka ręcznych sprawdzeń tego nie wychwytuje, bo ten sam prompt na tym samym wejściu nie zwraca dwa razy tego samego tekstu. Nie możesz porównać dwóch przebiegów bit po bicie i nazwać różnicę bugiem, tak jak przy czystej funkcji. Co możesz sprawdzić, to czy każda odpowiedź ma właściwości, na których ci zależy: właściwą kategorię, podsumowanie poniżej limitu długości, żadnego pola, którego źródło nigdy nie wspominało. Eval uruchamia te sprawdzenia na zbiorze prawdziwych danych wejściowych przy każdej zmianie prompta albo modelu, więc regresja wychodzi na jaw w twoim terminalu, a nie w zgłoszeniu klienta. ...

30 października 2026 · 7 min · 1476 słów · SpaghettiCoder

Function Calling i Tool Use w LLM Wyjaśnione

Co function calling naprawdę robi w LLM Zapytaj model “jaka jest teraz pogoda w Austin” bez żadnego połączenia ze światem zewnętrznym, a masz dwie opcje: powie, że nie wie, albo coś zmyśli. Function calling daje mu trzecią opcję. Model opisuje, czego potrzebuje, przekazuje ten opis twojemu kodowi i czeka na prawdziwą odpowiedź, zanim sam odpowie. Nazwa jest trochę myląca. Model niczego nie wywołuje. Zwraca blok ustrukturyzowanych danych mówiący, jaki tool chce użyć i z jakimi argumentami, a twoja aplikacja decyduje, czy go uruchomić i co zrobić z wynikiem. “Tool use” to dokładniejszy termin, ten używany w dokumentacji Anthropic; OpenAI i Google zwykle mówią function calling. Mechanizm jest ten sam pod obiema nazwami. Model tworzy tylko żądanie, nigdy sam efekt. ...

22 października 2026 · 7 min · 1331 słów · SpaghettiCoder

Czym Są Embeddingi i Wyszukiwanie Wektorowe

Wpisz “szczeniak” w systemie, który porównuje tylko słowa kluczowe, i dokument o szkoleniu psów się nie pojawi, choć każdy, kto przeczytałby oba teksty, uznałby je za ściśle powiązane. Wyszukiwanie po słowach kluczowych porównuje ciągi znaków. Nie wie, że “szczeniak” i “pies” znaczą prawie to samo. Embeddingi rozwiązują właśnie ten problem. Zamieniają fragment tekstu w listę liczb, wektor, umieszczony tak, że tekst o podobnym znaczeniu trafia blisko innego tekstu o podobnym znaczeniu, niezależnie od użytych słów. ...

15 października 2026 · 7 min · 1346 słów · SpaghettiCoder

Czym Jest Model System One i Kiedy Go Użyć

Sporo produkcyjnego ruchu LLM sprowadza się do jednego słowa. Eskalować to zgłoszenie czy nie. Spam czy nie spam. Który z sześciu handlerów ma obsłużyć zdarzenie. Żeby dostać to jedno słowo, wysyłasz cały prompt do ogólnoprzeznaczeniowego modelu, czekasz, aż zdekoduje odpowiedź token po tokenie, i wyciągasz obiekt JSON z wyniku. Płacisz cenę i opóźnienie generowania tekstu, a to, co dostajesz, to decyzja mieszcząca się w enumie. “Model system one” to nazwa, jaką TypeSafe AI nadało modelowi zbudowanemu pod ten drugi kształt: bierze fragment stanu plus zestaw typowanych pytań i zwraca odpowiedź na każde z nich w jednym przebiegu, bez generowania tekstu. Termin pożycza podział Daniela Kahnemana na szybkie, automatyczne myślenie “System 1” i powolne, świadome rozumowanie “System 2”. Jev, implementacja TypeSafe, jest tu przykładem roboczym. Nazwa należy do dostawcy, ale sam pomysł jest starszy: jeśli output ogranicza się do znanego zbioru odpowiedzi, model może jedną z nich wybrać zamiast napisać. Pytanie dla twojego systemu brzmi, czy ten kształt pasuje do prawdziwego wąskiego gardła. ...

23 września 2026 · 6 min · 1096 słów · SpaghettiCoder

Jak Działają Agenci CLI do Kodowania i Jak Wybrać Jednego

Poproś agenta CLI do kodowania o naprawienie failującego testu, a nie odpowie ci sugestią. Odczyta wynik testu, otworzy plik, zmieni linijkę, uruchomi test ponownie i zgłosi się z powrotem, dopiero gdy przejdzie. Ta pętla jest produktem, nie okno czatu. Model wewnątrz pętli przyciąga najwięcej uwagi i to też ta część, która zmienia się najszybciej: dostawcy podmieniają go co kilka miesięcy, a wielu agentów pozwala go samemu wybrać. To, co zostaje na miejscu, to harness owinięty wokół modelu — do jakich narzędzi ma dostęp, jak zarządza kontekstem, co może uruchomić bez pytania i gdzie te komendy się wykonują. Dwaj agenci na tym samym modelu mogą zachowywać się zupełnie inaczej właśnie przez to. Harness to jest to, co naprawdę wybierasz. ...

23 września 2026 · 7 min · 1412 słów · SpaghettiCoder

Jak Uruchomić LLM Lokalnie z Ollama

Każde wywołanie hostowanego API LLM wysyła Twój prompt na cudzy serwer i obciąża Cię opłatą za token. Zerwij połączenie z siecią, a przestanie odpowiadać. Ollama usuwa oba te problemy: pobiera model o otwartych wagach na Twoją maszynę i udostępnia go przez API REST na localhost:11434. Jeden plik binarny pełni rolę menedżera modeli, klienta czatu i serwera. Co Ollama robi naprawdę Ollama opakowuje llama.cpp i podobne silniki wnioskowania, więc nigdy nie musisz dotykać flagi kompilatora ani ścieżki do biblioteki CUDA. ollama pull llama3.2 pobiera skwantyzowany plik modelu (format GGUF) z własnego rejestru Ollama, a nie z Hugging Face, choć potrafi też importować pliki GGUF stamtąd. Uruchomienie modelu przekazuje te wagi do serwera działającego w tle, który ładuje je do RAM-u (lub VRAM-u, jeśli znajdzie kompatybilną GPU), trzyma je w pamięci przez kilka minut po ostatnim zapytaniu, żeby kolejne było szybkie, i zwalnia pamięć, kiedy zapytania przestają napływać. ...

19 września 2026 · 6 min · 1272 słów · SpaghettiCoder

Czym Jest RAG: Retrieval-Augmented Generation Wyjaśnione

Zapytaj ogólny LLM o politykę zwrotów w twojej firmie albo o to, co było w zgłoszeniach supportu w zeszłym tygodniu, a usłyszysz albo “nie wiem”, albo coś wiarygodnie brzmiącego, ale zmyślonego. Jego wiedza kończy się tam, gdzie kończyły się dane treningowe. Nigdy nie widział twoich dokumentów i nie może w trakcie rozmowy ich sprawdzić. Retrieval-augmented generation (RAG) naprawia dokładnie to: zanim model odpowie, osobny krok znajduje odpowiedni fragment w twoich danych i przekazuje go modelowi jako część prompta. ...

12 września 2026 · 7 min · 1332 słów · SpaghettiCoder