Co to jest model dużego języka? Jak działają LLM, wyjaśnione bez szumu
Zrozum, co naprawdę dzieje się, gdy sztuczna inteligencja pisze tekst. Dowiedz się o tokenach, osadzaniu i uwadze w prostym języku, uruchom mały predyktor następnego słowa i zobacz, dlaczego te modele mogą być jednocześnie genialne i błędne.
- Model dużego języka to sieć neuronowa wytrenowana na ogromnych ilościach tekstu, aby przewidzieć, co będzie dalej.
- Działa na tokenach i wykorzystuje uwagę do sprawdzenia, które wcześniejsze tokeny mają największe znaczenie.
- Generuje odpowiedź po jednym żetonie na raz, wybierając spośród zestawu prawdopodobieństw.
- Może brzmieć pewnie, choć jest błędny, dlatego ważne wyniki wymagają sprawdzenia.
Narzędzia, które czatują, podsumowują i piszą kod, wydają się niemal magiczne, dopóki nie zobaczysz mechanizmu znajdującego się pod spodem. Model dużego języka, czyli LLM, to w istocie bardzo wyrafinowany system przewidywania następnego fragmentu tekstu. Ta jedna koncepcja wyjaśnia zarówno to, co te narzędzia sprawdzają się dobrze, jak i to, dlaczego zawodzą.
W tym przewodniku objaśniono główne koncepcje bez użycia matematyki, a następnie opracowano niewielki predyktor następnego słowa, dzięki któremu koncepcja stała się konkretna. Uruchomiliśmy ten kod w Pythonie 3.13 i wynik pochodzi z tego uruchomienia. Jest to prosta zabawka do liczenia, a nie sieć neuronowa, a prawdziwe LLM mają znacznie większe możliwości. Unikamy także podawania liczb dla konkretnych modeli, bo one szybko się zmieniają.
Co to jest model dużego języka?
LLM to rodzaj sztucznej inteligencji wyszkolonej do rozumienia i generowania ludzkiego języka. Rozważmy nazwę po słowie:
- Duży: ma ogromną liczbę regulowanych wartości wewnętrznych, zwanych parametrami, i uczy się z ogromnej ilości tekstu.
- Język: działa z tekstem, w tym z językiem naturalnym i kodem.
- Model: to system matematyczny, który wychwytuje wzorce z danych i wykorzystuje je do przewidywania.
Modele to silnik, a produkty takie jak asystenci czatu to samochód zbudowany wokół nich. Produkt często dodaje interfejs użytkownika, systemy bezpieczeństwa, wyszukiwanie i inne narzędzia.
Podstawowa idea: przewidywanie tego, co będzie dalej
Robisz to sam. Jeśli czytasz „stolica Francji”, w Twojej głowie od razu pojawia się „Paryż”. LLM robi coś porównywalnego, ale na znacznie większą skalę. Mając jakiś tekst, oblicza prawdopodobieństwo każdego kolejnego tokenu, wybiera jeden, dodaje go do tekstu i powtarza.
Nie ma bazy danych zawierających przechowywane odpowiedzi. Model przechowuje wzorce wyuczone podczas treningu w postaci liczb. Kiedy te wzorce pokrywają się z prawdą, otrzymasz poprawną odpowiedź. Jeśli tak się nie stanie, nadal możesz uzyskać płynną odpowiedź, a to istotna różnica w porównaniu z wyszukiwarką.
Małe działające demo
Aby zobaczyć przewidywanie następnego tokenu w najprostszej formie, ten skrypt zlicza, które słowo następuje po którym, w drobnym tekście. Następnie generuje nowy tekst na podstawie tych liczników. Statystycy nazywają to modelem bigramu.
import random
from collections import Counter, defaultdict
TEXT = """the cat sat on the mat . the dog sat on the rug .
the cat saw the dog . the dog saw the cat ."""
tokens = TEXT.split()
follows = defaultdict(Counter)
for current, following in zip(tokens, tokens[1:]):
follows[current][following] += 1
def probabilities(word):
counts = follows[word]
total = sum(counts.values())
return {w: round(n / total, 2) for w, n in counts.most_common()}
print(probabilities("the"))
print(probabilities("sat"))
# {'cat': 0.38, 'dog': 0.38, 'mat': 0.12, 'rug': 0.12}
# {'on': 1.0}
Wynik ten jest rozkładem prawdopodobieństwa. Po „the” model najprawdopodobniej bierze pod uwagę „kota” i „psa”. Teraz generujemy tekst poprzez wielokrotne próbkowanie na podstawie tych prawdopodobieństw:
def generate(start, length, seed):
rng = random.Random(seed)
words = [start]
for _ in range(length):
counts = follows[words[-1]]
words.append(rng.choices(list(counts), weights=counts.values())[0])
return " ".join(words)
print(generate("the", 6, seed=1))
print(generate("the", 6, seed=2))
print(generate("the", 6, seed=3))
# the cat . the cat saw the
# the rug . the cat . the
# the cat saw the dog . the
Zwróć uwagę na trzy rzeczy. Ten sam początek może dać inny tekst, ponieważ wybór jest losowy. Dane wyjściowe przypominają dane szkoleniowe, nawet w przypadku sekwencji, które nigdy się w nich nie pojawiły. I w ogóle nie ma zrozumienia, dlatego „dywan. kot” brzmi jak nonsens.
Zapytaj go o słowo, którego nigdy nie widział, a nie ma nic do zaoferowania: follows["elephant"] jest puste. Nasza zabawka sprawdza tylko jedno poprzednie słowo. Ogromny skok w rzeczywistych LLM wynika z uwzględnienia długich odcinków kontekstu i uczenia się na znacznie większej liczbie danych przy użyciu sieci neuronowej, a nie prostego liczenia.
Tokeny: jak czyta model
LLM nie czytają całych słów tak jak my. Tekst jest najpierw dzielony na tokeny, którymi może być słowo, część słowa lub znak interpunkcyjny. Każdy token jest odwzorowywany na liczbę, a model działa wyłącznie na liczbach.
Tokeny mają znaczenie w praktyce z dwóch powodów. Korzystanie z hostowanych modeli jest zwykle wyceniane za pomocą tokenów, a każdy model ma ograniczenie liczby, które może obsłużyć jednocześnie. Tokenizacja wyjaśnia również pewne słynne dziwne zachowanie. Ponieważ modele widzą raczej kawałki niż litery, zadania takie jak liczenie liter w słowie tradycyjnie były dla nich zaskakująco trudne.
Osadzenia: znaczenie jako liczby
Każdy token zamienia się w osadzoną, długą listę liczb, która umieszcza go w pewnego rodzaju przestrzeni znaczeń. Powiązane pojęcia są blisko siebie, więc „kot” i „kotek” zajmują bliskie pozycje, podczas gdy „kot” i „faktura” nie.
Ta sama idea leży u podstaw wyszukiwania semantycznego, w którym dokumenty można znaleźć na podstawie znaczenia, a nie dokładnych słów. Nasz przewodnik po bazach danych wektorów opisuje to zastosowanie.
Uwaga i transformator
Większość nowoczesnych LLM opiera się na architekturze transformatora, wprowadzonej przez badaczy Google w artykule z 2017 r. „Attention Is All You Need”. Jego kluczowym mechanizmem jest samouwaga.
Rozważmy takie zdanie: „Trofeum nie zmieściło się do walizki, bo było za duże”. Do czego odnosi się „to”? Wiesz, że to oznacza trofeum. Uwaga pozwala modelowi zważyć każdy wcześniejszy token podczas przetwarzania każdego nowego, dzięki czemu może powiązać „go” z najbardziej odpowiednimi słowami, nawet jeśli są one daleko od siebie.
Wcześniejsze podejścia przetwarzały tekst krok po kroku i miały tendencję do utraty kontroli nad odległymi słowami. Transformatory wspólnie analizują kontekst i większość tych prac mogą wykonywać równolegle na specjalistycznym sprzęcie, co sprawia, że szkolenie na tak dużej ilości tekstu jest praktyczne.
Jak szkoli się LLM
| Scena | Co się stanie |
|---|---|
| Zbieranie danych | Gromadzone i oczyszczane są duże ilości tekstu |
| Przed treningiem | Model wielokrotnie przewiduje kolejny token, a jego parametry są podsuwane, gdy jest błędny |
| Dostrajanie | Uczy się na przykładach pomocnych odpowiedzi, a do oceny odpowiedzi często wykorzystuje się opinie ludzi |
| Ocena | Zespoły testują go pod kątem jakości, bezpieczeństwa i przypadków awarii |
Trening wstępny daje modelowi szerokie umiejętności językowe, ale może po prostu kontynuować tekst, a nie odpowiadać na niego. Późniejsze etapy przekształcają go w przydatnego asystenta. Szkolenie dużych modeli wymaga znacznej mocy obliczeniowej i jest kosztowne. Korzystanie z gotowego modelu, znanego jako wnioskowanie, jest znacznie tańsze w przeliczeniu na żądanie.
Jak generuje tekst
- Twój monit jest dzielony na tokeny i konwertowany na osadzanie.
- Sieć je przetwarza, wykorzystując uwagę do powiązania ich ze sobą.
- Podaje prawdopodobieństwo dla każdego możliwego następnego żetonu.
- Wybierany jest jeden token i dodawany do kontekstu.
- Kroki od 2 do 4 powtarzaj aż do osiągnięcia warunku zatrzymania.
Dlatego podczas transmisji strumieniowej odpowiedzi zazwyczaj pojawiają się słowo po słowie. Tekst powstaje dosłownie po kolei. Temperatura kontroluje stopień przygód w kroku 4: niskie wartości faworyzują najbardziej prawdopodobne żetony, podczas gdy wyższe wartości pozwalają na większą różnorodność.
Wskazówka: Do ekstrakcji, klasyfikacji i innych powtarzalnych zadań używaj niskiej temperatury, jeśli jest to możliwe. W przypadku burzy mózgów przydatne może być wyższe ustawienie. Mimo to niska wartość nie gwarantuje identycznych odpowiedzi za każdym razem.
Warunki, które spełnisz
| Termin | Znaczenie |
|---|---|
| Podpowiedź | Dane wejściowe, które podajesz modelowi |
| Okno kontekstowe | Maksymalna liczba tokenów, które może uwzględnić jednocześnie |
| Parametry | Wartości wewnętrzne wyuczone podczas szkolenia |
| Wnioskowanie | Uruchamianie przeszkolonego modelu w celu uzyskania danych wyjściowych |
| Halucynacja | Pewne dane wyjściowe, które są fałszywe |
| Odcięcie wiedzy | Punkt, po którym kończą się dane szkoleniowe |
| SZARA | Pobieranie dokumentów w celu nadania modelowi dodatkowego kontekstu |
| Model z otwartą wagą | Model, którego parametry możesz pobrać i uruchomić samodzielnie |
Ograniczenia, które powinieneś znać
- Halucynacje. Modelka może wymyślać fakty, cytaty lub kodować funkcje. Ponieważ generuje prawdopodobny tekst, fałszywe stwierdzenia mogą wyglądać całkowicie wiarygodnie.
- Brak wiedzy. Jeśli produkt nie połączy go z wyszukiwarką lub innymi narzędziami, może nie wiedzieć o ostatnich wydarzeniach.
- Ograniczony kontekst. Jeśli rozmowa wykracza poza okno kontekstowe, wcześniejsze szczegóły mogą zostać pominięte lub podsumowane. Modelki również nie zapamiętują automatycznie przeszłych czatów, chyba że produkt dodaje taką funkcję.
- Odchylenie. Dane szkoleniowe odzwierciedlają ludzkie uprzedzenia, które mogą pojawić się w wynikach.
- Niespójność. To samo pytanie może dać różne odpowiedzi, co ma znaczenie, gdy tworzysz oprogramowanie na podstawie jednego.
- Zagrożenia bezpieczeństwa. Ukryte instrukcje w tekście mogą manipulować modelem, co jest problemem znanym jako natychmiastowe wstrzykiwanie.
Dobrze korzystaj z LLM
Traktuj LLM jako szybkiego, zdolnego asystenta, którego praca wymaga przeglądu. Kilka nawyków robi dużą różnicę:
- Wyrażaj się konkretnie. Jasne instrukcje, kontekst i przykłady dają lepsze wyniki. Nasz przewodnik po szybkiej inżynierii pokazuje, jak to zrobić.
- Podaj fakty. Jeśli odpowiedzi muszą pochodzić z twoich własnych dokumentów, użyj RAG zamiast polegać na pamięci.
- Sprawdź, co jest istotne. Sprawdź liczby, cytaty i twierdzenia prawne lub medyczne w oparciu o wiarygodne źródła.
- Przetestuj wygenerowany kod. Uruchom go i napisz dla niego testy, tak jak zrobiłbyś to dla kolegi. W naszym przewodniku narzędziach do przeglądu kodu AI znajdziesz pewną pomoc.
- Chroń wrażliwe dane. Przed udostępnieniem poufnych informacji za pomocą hostowanego narzędzia sprawdź zasady obowiązujące w Twojej organizacji.
Jeśli decydujesz, jak dostosować model do własnych potrzeb, nasze porównanie RAG z dostrajaniem i szybką inżynierią pomoże Ci w wyborze.
Podsumowanie
LLM to predyktor następnego tokenu wyszkolony na niezwykłą skalę, który jest bardziej użyteczny i bardziej omylny, niż sugeruje ten opis. Pamiętanie o mechanizmie pomoże ci dobrze go używać: jest mocny w języku i wzorach i wymaga twojego nadzoru nad faktami. Aby było to konkretne, uruchom powyższy mały skrypt z własnym tekstem, a następnie wypróbuj ten sam monit kilka razy w prawdziwym asystencie i porównaj odpowiedzi.
Najczęstsze pytania
Czym w prostych słowach jest model dużego języka?
Jest to system sztucznej inteligencji wytrenowany na ogromnych ilościach tekstu, aby przewidzieć, co będzie dalej. Powtarzając tę prognozę, może odpowiadać na pytania, pisać i podsumowywać.
Jaka jest różnica między AI a LLM?
Sztuczna inteligencja to szeroka dziedzina budowania inteligentnych systemów. LLM to jeden specyficzny typ modelu sztucznej inteligencji, skupiający się na przetwarzaniu i generowaniu języka.
Czy LLM rozumieją, co mówią?
Jest to przedmiotem dyskusji. Wychwytują bogate wzorce znaczeń i potrafią rozwiązać wiele problemów, ale nie doświadczają świata i mogą zawieść w sposób, jakiego człowiek by nie zrobił.
Dlaczego LLM zmyślają?
Generują prawdopodobny tekst, zamiast pobierać zweryfikowane fakty. Kiedy wzorce wskazują na wiarygodną, ale fałszywą odpowiedź, model może ją stwierdzić z pozorną pewnością.
Co to jest token w LLM?
Token to fragment tekstu przetwarzany przez model, taki jak słowo, część słowa lub znak interpunkcyjny. Limity i ceny są często mierzone w tokenach.
Ucz się dalej
Potrzebujesz pomocy przy testowaniu, WordPressie lub SEO?
Pomagamy zespołom dostarczać lepsze oprogramowanie i rozwijać ich witryny. Powiedz nam, nad czym pracujesz, a my zaproponujemy jasny następny krok.
Więcej poradników na testowanie, sztuczna inteligencja i nowoczesny rozwój
Podobał Ci się ten artykuł? Wybierz temat i przejdź bezpośrednio do naszych najnowszych tutoriali.
Wyjaśnienie halucynacji AI: dlaczego modele językowe tworzą rzeczy i jak je zmniejszyć
Wyjaśniono halucynacje AI: czym są, dlaczego powstają w modelach językowych, typowe typy, jak je zredukować za pomocą uziemień i podpowiedzi oraz pr…
Przeczytaj artykuł →DevOpsWyjaśnienie zmiennych środowiskowych: pliki .env, sekrety i konfiguracja wykonana prawidłowo
Zmienne środowiskowe wyjaśnione na przykładach Pythona, które przeprowadziliśmy: ich odczytywanie i ustawianie, dlaczego każda wartość jest ciągiem …
Przeczytaj artykuł →Tworzenie oprogramowaniaWyjaśnienie ograniczenia szybkości interfejsu API: algorytmy, nagłówki i obsługa błędów 429
Ograniczanie szybkości API wyjaśnione za pomocą przeprowadzonej przez nas symulacji: zasobnik tokenów, stałe okno, przesuwane okno, 429 odpowiedzi, …
Przeczytaj artykuł →Automatyzacja testówWyśmiewanie w Pythonie: unittest.mock, patch i błędy, które sprawiają, że testy kłamią
Wyśmiewanie w Pythonie za pomocą unittest.mock, przetestowane: Mock i zwracana wartość, efekt uboczny, łatanie tam, gdzie używana jest nazwa, specyf…
Przeczytaj artykuł →Testowanie oprogramowaniaWyjaśnienie zasięgu kodu: pokrycie linii i oddziału oraz co naprawdę oznacza 100%
Wyjaśnienie pokrycia kodu za pomocą prawdziwego pliku cover.py: pokrycie linii, gałęzi i warunków, przeczytanie raportu, dlaczego 100% pokrycia może…
Przeczytaj artykuł →Bazy danych i SQLDELETE vs TRUNCATE vs DROP w SQL: różnice, wycofywanie i kiedy używać każdego z nich
DELETE vs TRUNCATE vs DROP wyjaśnione za pomocą przetestowanego SQL: co każdy usuwa, wycofywanie, wyzwalacze, resetowanie tożsamości, prędkość i czy…
Przeczytaj artykuł →Bazy danych i SQLWyjaśnienie widoków SQL: tworzenie, używanie i unikanie pułapek wraz z przykładami
Widoki SQL wyjaśnione za pomocą zapytań, które uruchomiliśmy: tworzenie widoku, wyniki na żywo, ukrywanie kolumn, wydajność, widoki z możliwością ak…
Przeczytaj artykuł →Tworzenie oprogramowaniaInterfejs TypeScript a typ: rzeczywiste różnice, testowane za pomocą kompilatora
Interfejs TypeScript a typ, sprawdzony z prawdziwym kompilatorem: co oba mogą zrobić, co tylko jeden, łączenie deklaracji, rozszerzenia a przecięcia…
Przeczytaj artykuł →Tworzenie oprogramowaniaPython *args i **kwargs wyjaśnione: elastyczne funkcje z przejrzystymi przykładami
Python *args i **kwargs wyjaśnione za pomocą uruchomionego przez nas kodu: pakowanie i rozpakowywanie, kolejność parametrów, argumenty zawierające t…
Przeczytaj artykuł →Tworzenie oprogramowaniaFunkcje Lambda w Pythonie: składnia, rzeczywiste zastosowania i kiedy ich nie używać
Funkcje lambda w Pythonie wyjaśnione za pomocą uruchomionego przez nas kodu: składnia, sortowanie za pomocą klucza, mapa i filtr, domknięcia, pułapk…
Przeczytaj artykuł →Sztuczna inteligencjaKim są agenci AI? Jak one działają, dzięki prostej pętli agenta, którą możesz uruchomić
Kim są agenci AI? Prosty przewodnik po pętli agenta, narzędziach, pamięci i poręczach, z małą pętlą w Pythonie, którą uruchomiliśmy, prawdziwymi zag…
Przeczytaj artykuł →DevOpsMonitorowanie a obserwowalność: prawdziwa różnica z logami, wskaźnikami i śladami
Wyjaśnienie monitorowania a obserwowalności: znane i nieznane awarie, dzienniki, metryki i ślady, opis incydentu przy kasie, złote sygnały, OpenTele…
Przeczytaj artykuł →DevOpsWoluminy platformy Docker a mocowania powiązań: utrwalanie danych kontenera we właściwy sposób
Wyjaśniono woluminy Dockera a montowanie powiązań: dlaczego dane kontenera znikają, nazwane woluminy, montowanie powiązań, tmpfs, przykłady tworzeni…
Przeczytaj artykuł →Automatyzacja testówTDD vs BDD: kluczowe różnice, jedna funkcja zbudowana w obie strony i kiedy używać każdej z nich
TDD vs BDD wyjaśnione za pomocą jednej funkcji rabatowej zbudowanej w obie strony: refaktoryzacja czerwono-zielona z uruchomionym przez nas kodem, s…
Przeczytaj artykuł →Testowanie oprogramowaniaTestowanie akceptacyjne użytkownika (UAT): proces, lista kontrolna i rzeczywiste przykłady
Wyjaśniono testy akceptacyjne użytkownika: kto je przeprowadza, czym różni się od kontroli jakości, siedmioetapowy proces, szablon przypadku testowe…
Przeczytaj artykuł →Bazy danych i SQLWyjaśnienie wartości SQL NULL: IS NULL, COALESCE, NULLIF i pułapki, których należy unikać
Wartości SQL NULL wyjaśnione za pomocą zapytań, które wykonaliśmy: logika trójwartościowa, IS NULL, COALESCE, NULLIF, w jaki sposób agregacje, łącze…
Przeczytaj artykuł →Bazy danych i SQLInstrukcja SQL CASE WHEN: składnia, rzeczywiste przykłady i typowe błędy
SQL CASE WHEN wyjaśnione za pomocą zapytań, które uruchomiliśmy: proste i przeszukiwane formularze, kolejność warunków, elementy przestawne z SUM, s…
Przeczytaj artykuł →Tworzenie oprogramowaniaCo to jest JWT? Tokeny internetowe JSON wyjaśnione na przykładzie działania
Co to jest JWT? Wyjaśniono tokeny sieciowe JSON: trzy części, token zbudowany i zmodyfikowany w uruchomionym przez nas kodzie, JWT a sesje, pamięć m…
Przeczytaj artykuł →Tworzenie oprogramowaniaWyjaśnienie pętli zdarzeń JavaScript: stos wywołań, mikrozadania i liczniki czasu z przykładami
Pętla zdarzeń JavaScript wyjaśniona za pomocą uruchomionego przez nas kodu: stos wywołań, kolejki zadań i mikrozadań, dlaczego setTimeout 0 nie jest…
Przeczytaj artykuł →Tworzenie oprogramowaniaWyjaśnienie generatorów Pythona i wydajności: oszczędzaj pamięć dzięki prawdziwym przykładom
Generatory Pythona i wydajność wyjaśnione za pomocą uruchomionego przez nas kodu: sposób wstrzymywania i wznawiania, mierzone oszczędności pamięci, …
Przeczytaj artykuł →Sztuczna inteligencjaCzym są osady? Wyjaśnienie wektorów i podobieństwa cosinusa
Czym są osadzania? Prosty przewodnik po wektorach, podobieństwie cosinusów i wyszukiwaniu semantycznym, z małym przykładem, który przeprowadziliśmy,…
Przeczytaj artykuł →DevOpsWdrożenie niebiesko-zielone a kanaryjskie: różnice, kompromisy i sposób wyboru
Wyjaśniono wdrożenie Blue-Green vs Canary: sposób działania każdego z nich, koszty, ryzyko i wycofywanie zmian, przetestowane przez nas stabilne łąc…
Przeczytaj artykuł →Automatyzacja testówNiestabilne testy: co je powoduje i jak je naprawić na dobre
Niestabilne testy wyjaśnione w przeprowadzonych przez nas demonstracjach: główne przyczyny, sposób potwierdzenia i zdiagnozowania jednej z nich, odp…
Przeczytaj artykuł →Testowanie oprogramowaniaLoad Testing vs Stress Testing: Differences, Metrics and k6 Examples
Wyjaśniono testy obciążenia i testy warunków skrajnych: co dowodzi każdy z nich, testy szczytowe i nasiąkania, istotne metryki, dlaczego średnie wpr…
Przeczytaj artykuł →Testowanie oprogramowaniaPrzypadek testowy a scenariusz testowy: kluczowe różnice, przykłady i kiedy stosować każdy z nich
Wyjaśnienie przypadków testowych i scenariuszy testowych: jasne definicje, tabela obok siebie, jedna funkcja resetowania hasła zaczerpnięta ze scena…
Przeczytaj artykuł →Bazy danych i SQLOptymalizacja zapytań SQL: czytaj plany wykonania i napraw powolne zapytania z synchronizacją
Optymalizacja zapytań SQL przetestowana na milionie wierszy: przeczytaj plany wykonania, dodaj odpowiednie indeksy, napraw filtry niesargowalne, uży…
Przeczytaj artykuł →Bazy danych i SQLSQL UNION vs UNION ALL: różnice, przykłady i testowana wydajność
SQL UNION vs UNION ALL wyjaśnione na podstawie zapytań, które uruchomiliśmy: duplikaty, obie reguły są zgodne, prawdziwy błąd danych, zmierzona wyda…
Przeczytaj artykuł →Tworzenie oprogramowaniaSamouczek API pobierania JavaScript: GET, POST, obsługa błędów i limity czasu
Samouczek JavaScript Fetch API testowany na serwerze lokalnym: GET i POST, dlaczego 404 nie rzuca, pomocnik wielokrotnego użytku, ciągi zapytań, prz…
Przeczytaj artykuł →Tworzenie oprogramowaniaObsługa plików w Pythonie: odczyt, zapis, CSV, JSON i pathlib z przykładami
Obsługa plików w Pythonie wyjaśniona za pomocą uruchomionego przez nas kodu: tryby otwarte, czytanie dużych plików, CSV, JSON, pathlib, pliki binarn…
Przeczytaj artykuł →Tworzenie oprogramowaniaKlasy i obiekty Pythona: samouczek OOP z prawdziwymi przykładami
Klasy i obiekty Pythona objaśnione za pomocą uruchomionego przez nas kodu: __init__, metody, atrybuty klas i instancji, dziedziczenie, właściwości, …
Przeczytaj artykuł →Sztuczna inteligencjaCo to jest model dużego języka? Jak działają LLM, wyjaśnione bez szumu
Co to jest model dużego języka? LLM wyjaśnione prostym językiem: tokeny, osadzanie, uwaga, szkolenie, temperatura i okna kontekstowe, mała demonstra…
Przeczytaj artykuł →DevOpsPolecenia systemu Linux dla początkujących: niezbędny przewodnik po terminalu z przykładami
Polecenia systemu Linux dla początkujących, pogrupowane według zadań: nawigacja, pliki, przeglądanie logów, grep, potoki, uprawnienia, procesy i arc…
Przeczytaj artykuł →Automatyzacja testówSelenium kontra dramaturg: kluczowe różnice, porównanie kodu i wybór
Porównanie Selenium i Playwright: architektura, oczekiwanie, obsługa przeglądarki i języka, debugowanie, ten sam test w obu narzędziach, porady doty…
Przeczytaj artykuł →Testowanie oprogramowaniaPartycjonowanie równoważne: technika projektowania testów wyjaśniona na praktycznych przykładach
Wyjaśniono podział równoważny: jak znaleźć prawidłowe i nieprawidłowe partycje, sprawdzone przykłady dla grup wiekowych, hasła i kupony, przeprowadz…
Przeczytaj artykuł →Testowanie oprogramowaniaWażność a priorytet w testowaniu oprogramowania: różnice, macierz i rzeczywiste przykłady
Wyjaśniono ważność a priorytet w testowaniu oprogramowania: jasne definicje, czterokierunkowa macierz z przykładami, skale poziomów, kto ustawia każ…
Przeczytaj artykuł →Bazy danych i SQLSamouczek dotyczący podzapytań SQL: typy, skorelowane podzapytania i ISTNIEJĄ z przykładami
Samouczek dotyczący podzapytań SQL z zapytaniami, które wykonaliśmy: podzapytania skalarne, IN, FROM i SELECT, podzapytania skorelowane, EXISTS, puł…
Przeczytaj artykuł →Bazy danych i SQLWyjaśnienie transakcji SQL i ACID: COMMIT, ROLLBACK i poziomy izolacji
Transakcje SQL i ACID wyjaśnione za pomocą wykonanego przez nas przelewu bankowego: COMMIT, ROLLBACK, punkty zapisu, blokady, poziomy izolacji, brud…
Przeczytaj artykuł →Tworzenie oprogramowaniaGit merge vs rebase: różnice, przykłady i kiedy czego używać
Git merge vs rebase wyjaśnione na prawdziwym wyniku logu, z tabelą porównawczą, złotą zasadą rebase i bezpiecznym procesem pracy zespołu.
Przeczytaj artykuł →Tworzenie oprogramowaniaPython list comprehension: składnia, przykłady i kiedy jej unikać
Python list comprehension wyjaśnione: składnia, filtrowanie, if-else, zagnieżdżone pętle, zmierzone czasy i sytuacje, w których zwykła pętla for jes…
Przeczytaj artykuł →Bazy danych i SQLSQL JOIN – wyjaśnienie z przykładami (Inner, Left, Right, Full)
Zrozum złączenia SQL krok po kroku na przykładowych tabelach i zapytaniach: INNER, LEFT, RIGHT, FULL, CROSS i SELF, plus typowe błędy i wskazówki wy…
Przeczytaj artykuł →