Trimiteți o cerere și după o secundă răspunsul începe să apară în terminal. Nu apare dintr-odată, ci se construiește: bucată cu bucată, ca și cum cineva l-ar tasta chiar acum. Uneori, înainte de asta, pe ecran stă afișat Thinking, iar răspunsul vine vizibil mai târziu, în schimb e mai bine gândit.
Toate acestea sunt consecințele unui singur mecanism. Să vedem cum funcționează un model lingvistic mare: ce face cu textul dumneavoastră, cu ce îi măsoară lungimea, de unde are cunoștințele și ce se întâmplă în secundele în care se gândește. Niciunul dintre aceste fapte nu e necesar ca să apăsați Enter. În schimb, luate împreună, ele schimbă vizibil ce anume așteptați de la răspuns.

Materialul este simplificat intenționat. Așa se citește repede și răspunde la întrebarea ce se întâmplă pe ecranul dumneavoastră. O analiză exactă nu există aici și nici nu poate exista - numai blocul transformer ar cere o lucrare separată.
Modelul lingvistic evaluează continuarea
Să începem cu subiectul. Un model lingvistic mare, cunoscut și sub denumirea LLM (large language model), nu este o aplicație cu ferestre și butoane și nici un chat. Este un mecanism care se apelează: primește textul conversației și returnează continuarea. Claude Code, chat-ul web, sugestiile din editor - toate acestea sunt învelișuri în jurul unui astfel de apel, iar învelișul diferă de la unul la altul.
Iar modelul știe să facă un singur lucru: pornind de la începutul textului, să estimeze ce continuare este mai probabilă. Nu să găsească răspunsul corect, ci tocmai să estimeze probabilitatea, și nu pentru o singură variantă, ci pentru fiecare variantă din dicționarul său.
Cel mai ușor se vede asta pe o frază scurtă. Continuați cu voce tare: "Cafeaua o beau fără..." Primul vă vine în minte "zahăr", apoi "lapte", dar "internet" nu se potrivește deloc, deși gramatical totul e în regulă. Ați estimat asta într-o fracțiune de secundă, fără să vă gândiți. Modelul face același lucru, doar formal și până la capăt: trece prin tot dicționarul și dă fiecărui candidat un număr.
Observați ce lipsește din schemă. Nicio variantă nu este marcată drept corectă: există doar continuări mai probabile și mai puțin probabile. Iar numerele acestea nu vin din numărarea de câte ori a apărut o anumită combinație în texte - așa funcționa o cu totul altă tehnologie, mult mai simplă, abandonată cu mult înainte de modelele actuale. Probabilitatea se calculează din tiparele fixate în interiorul modelului în timpul antrenării. De aceea se poate calcula și pentru o frază pe care nimeni n-a mai scris-o înaintea dumneavoastră.
Prin ce se deosebește un LLM de un chat și de un agent
Aceste trei cuvinte sunt adesea folosite ca sinonime, deși descriu straturi diferite ale sistemului.
- LLM - modelul lingvistic în sine. Primește contextul și generează următorul mesaj.
- Chat - interfața și programul din jurul LLM-ului. Păstrează istoricul, asamblează cererea, o trimite modelului și afișează răspunsul.
- Agent - un LLM cu un scop, un ciclu de lucru și instrumente. Poate cere aplicației să citească un fișier, să efectueze o căutare sau să execute un test, să vadă rezultatul și să aleagă pasul următor.
Pe scurt: LLM-ul propune o soluție, chat-ul organizează conversația, agentul leagă deciziile modelului de acțiuni în lumea exterioară.
Tokenuri, nu cuvinte
Schema de mai sus are nevoie de o corecție: cuvintele apar pe ea întregi doar ca să fie mai clar. De fapt, modelul împarte textul în tokenuri - bucăți din propriul dicționar. Un token poate fi un cuvânt întreg, o parte de cuvânt sau un semn de punctuație, iar spațiul ajunge de obicei în interiorul tokenului următor și nu se numără ca unitate separată.
Dicționarul se construiește dinainte, pe un set mare de texte, și se construiește treptat: algoritmul caută secvențe de caractere care apar des și le lipește în bucăți mai mari. Ce apărea des primește propriul token. De aceea, în dicționarul gata făcut stau laolaltă și cuvinte întregi, și fragmente de cuvinte.
Fiecare token din dicționar are propriul număr, iar textul intră în model deja sub formă de numere: mai întâi șirul este tăiat în bucăți, apoi fiecare bucată este înlocuită cu numărul ei. Înapoi, în text lizibil, răspunsul este transformat cu același dicționar.
De aici, două lucruri pe care merită să le țineți minte. Primul: fiecare familie de modele are propriul dicționar și taie același șir în mod diferit, iar estimări de tipul "un token înseamnă cam trei sferturi dintr-un cuvânt" sunt un reper grosier pentru engleză, nimic mai mult. Al doilea: o limbă care a apărut mai rar în textele sursă este tăiată mai mărunt. Un cuvânt românesc se desface frecvent în două-trei tokenuri acolo unde unul englezesc încape într-unul singur.
Toate acestea sunt mai ușor de văzut o dată decât de citit. Deschideți The Tokenizer Playground, lipiți acolo câteva dintre cererile dumneavoastră obișnuite, apoi același text în engleză - și vedeți imediat în ce bucăți se desface șirul și câte au ieșit. O singură precizare: tokenizerul de acolo aparține unui anumit model, iar la cel cu care lucrați dumneavoastră împărțirea va fi alta. Merită să mergeți acolo pentru fenomen, nu pentru un număr exact.
Consecința practică e neașteptată. Modelul nu vede litere, ci bucăți, iar întrebările despre litere îi reușesc vizibil mai prost decât cele despre sens. Cereți-i să numere câte litere "a" sunt într-un cuvânt lung, și răspunsul poate foarte bine să fie greșit. Nu pentru că sarcina e grea, ci pentru că, pentru model, cuvântul a sosit în două bucăți, iar litere separate în interiorul lor nu există.
Cum se construiește răspunsul din tokenuri
Acum să punem mecanismul cap la cap, și se va dovedi mai simplu decât ați crede. Modelul estimează variantele, una dintre ele este aleasă și adăugată la sfârșitul textului. Apoi totul începe de la capăt - cu același text, doar mai lung cu un token.
Răspunsul final nu stătea nicăieri pregătit și nu a fost scos de undeva - a fost construit în atâția pași câte tokenuri are. Nici nu se termină după un cronometru: la un moment dat, continuarea cea mai probabilă devine un token special cu sensul "aici e sfârșitul", iar generarea se oprește.
Din aceeași imagine mai rezultă un detaliu. Modelul nu poate șterge ce a scris: un token ajuns în text rămâne acolo și intră în condiția fiecărui pas următor. Se poate corecta exact cum o face un om într-o conversație - cu fraza următoare.
Iată însă o consecință care îi surprinde pe mulți: aceeași întrebare, pusă de două ori, poate primi două răspunsuri diferite. Alegerea de la fiecare pas nu cade neapărat pe varianta cea mai probabilă, iar un singur token diferit trage după el tot ce urmează. Cel mai des se schimbă doar formularea, dar uneori și soluția propusă.
Felul în care răspunsul apare treptat în fereastra Claude Code nu este un indicator de încărcare, ci chiar pașii generării: modelul trimite tokenurile pe măsură ce le alege, iar programul le afișează imediat pe ecran. De aceea un răspuns lung apare treptat, și nu dintr-odată, după o pauză.
De ce modelul este numit "mare"
Cuvântul "mare" nu descrie dimensiunea unui fișier care stă undeva. În spatele lui sunt două scări cu totul diferite, și merită să vi le imaginați pe amândouă cinstit.
Prima este volumul de text prin care a trecut modelul la antrenare: cărți, articole, documentație, forumuri, cod, toate în cantități pe care un om nu le-ar citi nici în câteva vieți. A doua este numărul de parametri. Un parametru este un singur număr din interiorul modelului, una dintre setările care s-au ajustat în timpul antrenării. Sunt miliarde. La modelele deschise, numărul acesta apare direct în nume: 7B, 14B, 70B, unde B înseamnă billion, miliard.
Și aici e un loc unde e ușor să greșiți. Numărul de parametri nu este un clasament al calității. Rezultatul depinde și de datele pe care a învățat modelul, și de arhitectura lui, și de sarcinile pentru care a fost ajustat, și de felul în care a fost comprimat ca să încapă undeva. Un model mai mic poate foarte bine să întreacă unul mai mare la o sarcină anume. Un număr mare în nume nu promite, în sine, nimic.
Și încă un lucru care, la o asemenea scară, apare parcă de la sine. Ca să continuați coerent o frază despre un test picat, nu ajunge să știți ce cuvinte stau de obicei alături. Trebuie să prindeți și cum sunt construite testele. Modelul a învățat să ghicească cuvinte, iar pe parcurs în parametrii lui s-a fixat și ceea ce descriu aceste cuvinte. De aici vine impresia că modelul e informat, deși mecanismul nu s-a schimbat nici măcar cu un pas.
De unde are modelul cunoștințe
Sursele sunt exact două, iar confuzia dintre ele costă scump.
Prima sunt parametrii. În ei s-au fixat tiparele învățate la antrenare. Nu e un catalog cu fișe în care fiecare înregistrare are sursa notată: cunoașterea e împrăștiată în foarte multe numere, iar un citat exact nu se poate scoate de acolo. De aceea modelul poate da ceva aproape corect: forma e bună, numele e cunoscut, dar un detaliu concret nu e cel real.
A doua este ceea ce se află chiar acum în conversație: cererea dumneavoastră, tot ce s-a spus înainte, conținutul fișierelor deschise, ieșirea comenzilor rulate. Sursa aceasta este precisă, dar de scurtă durată. Nu se mută în parametri, iar conversația următoare nu mai știe nimic despre ea.
Tot restul, ce ați vrea să numiți o sursă separată - fișierul de memorie, documentația găsită, răspunsul unui serviciu extern -, vine pe același drum: mai întâi intră în conversație și abia apoi influențează răspunsul. Modelul nu are o ușă proprie spre proiect sau spre internet.
Prima sursă are o dată, iar data are un nume - knowledge cutoff. Este un reper până la ce moment cunoștințele încorporate ale modelului sunt de obicei actuale. Despre o bibliotecă apărută după această dată, modelul știe doar cât i s-a pus în conversația curentă.
Precizarea contează aici mai mult decât data în sine. Cutoff nu înseamnă că până în acea zi modelul știe totul, iar după ea nimic. Lacune există și în interiorul perioadei: despre unele lucruri au fost puține texte, altundeva textele se contraziceau, iar unele pur și simplu nu au ajuns în datele de antrenare. Data pune o limită superioară, nu promite completitudine sub ea.
Și un lucru mic, dar util. Să aflați cutoff-ul întrebând chiar modelul nu e o idee prea bună: la întrebarea asta va răspunde tot prin generare, adică va alege ceva plauzibil. Data exactă se găsește în documentația versiunii concrete, iar la modele vecine din aceeași familie poate foarte bine să difere.
Ce înseamnă Thinking
Când pe ecran apare Thinking, modelul nu a trecut într-un alt regim de conștiință. Pur și simplu i s-a dat spațiu să se gândească înainte să înceapă să răspundă. Tehnic, este exact aceeași generare: mai întâi modelul scrie o ciornă pentru sine - analizează sarcina, cântărește variante, își aduce singur obiecții - și abia apoi dă textul final. Cât anume să se gândească, modelele actuale decid în mare parte singure: la o întrebare simplă ciorna e scurtă sau lipsește cu totul, la una încâlcită e mai lungă.
La ce folosește asta se vede pe un exemplu. Agentul caută cauza unui test care pică. Prima explicație plauzibilă arată spre clientul unui serviciu extern, dar testul vecin și textul erorii spun altceva: problema e la parsarea datelor. Având spațiu de rezervă, modelul apucă să observe contradicția și să schimbe direcția înainte să propună o modificare. Câștigul aici nu stă în lungimea raționamentului, ci în faptul că verificarea a schimbat pasul următor.
De altfel, prima explicație se dovedește destul de des greșită. E plauzibilă, dar tocmai plauzibilitatea a fost criteriul după care a ales-o mecanismul.
Acum despre momentele în care raționamentul suplimentar merită. Costă timp, iar să-l porniți pentru orice fleac nu are rost.
| De obicei ajunge un răspuns rapid | Merită să lăsați loc pentru raționament |
|---|---|
| explicarea unei bucăți de cod de pe ecran | găsirea cauzei unui test picat când sunt implicate mai multe fișiere |
| corectarea unei greșeli de tipar sau de formatare | compararea a două soluții, împreună cu limitările lor |
| rezumarea unui text pe care tocmai l-ați dat | planificarea unei refaceri în care pașii depind unii de alții |
Reperul e simplu: cu cât sarcina are mai multe ramificații și dependențe, cu atât e mai util să-i lăsați modelului loc să se desfășoare. La redenumirea unei variabile, veți verifica mai repede rezultatul gata decât ați citi raționamentul despre el.
Și o limită spusă cinstit. Raționamentul afișat nu este o înregistrare exactă a ce s-a petrecut înăuntru; adesea e o repovestire făcută pentru cititor. Un lanț lung și bine închegat poate porni foarte bine de la o premisă greșită și tocmai de aceea să pară mai de încredere decât este. Se întâmplă și invers: răspunsul a fost deja găsit, dar modelul continuă să se îndoiască, se învârte în cerc și se încurcă singur. Fenomenul are chiar și un nume - overthinking.
Rugămintea de a se gândi mai mult este o pârghie slabă: lungimea ciornei, în sine, nu îmbunătățește nimic. Mult mai bine funcționează un scop clar, limitele numite explicit și un semn clar după care se vede că sarcina e rezolvată. Atunci modelul are ce verifica în propriul raționament.
Ce nu poate face modelul
Lista e scurtă și e mai bine s-o știți dinainte decât s-o descoperiți pe o sarcină reală.
- Să garanteze că un fapt este corect. Mecanismul alege o continuare probabilă, nu verifică afirmația cu o sursă. Detaliile inventate, dar plauzibile, se numesc halucinații.
- Să nu depindă de formulare. Cuvintele puse în altă ordine sau o precizare adăugată schimbă răspunsul, pentru că totul e decis de textul aflat înaintea locului respectiv.
- Să învețe singur lucruri noi. Fără surse externe, cunoștințele încorporate nu se actualizează: despre lansarea de ieri a unei biblioteci, modelul știe doar ce i s-a arătat.
- Să se repete cuvânt cu cuvânt. Aceeași cerere poate da un rezultat diferit, iar asta este o proprietate a mecanismului, nu o defecțiune.
- Să fie liber de distorsiunile textelor sursă. Ce a fost descris acolo unilateral sau deloc se va reflecta și în răspunsuri.
Aproape tot ce a crescut în jurul modelelor este un răspuns la unul dintre punctele acestei liste. Căutarea și lucrul cu documentația au apărut pentru că cunoștințele încorporate se învechesc. Instrumentele și agenții - pentru că, singur, modelul știe doar să vorbească.
Ce explică asta în comportamentul agentului
Iată ce se vede din acest mecanism direct pe ecranul Claude Code:
- răspunsul apare bucată cu bucată, pentru că exact așa este creat. E un proces, nu un efect vizual;
- două cereri identice au primit răspunsuri diferite - așa și trebuie, generarea nu se repetă cuvânt cu cuvânt. Dacă aveți nevoie de rezultatul de dinainte, e mai sigur să reveniți la cel deja primit decât să întrebați din nou;
- Thinking dă spațiu pentru o ciornă, nu o garanție de corectitudine. La analiza unei sarcini cu mai mulți pași merită, la redenumirea unei variabile mai degrabă încurcă;
- cât timp agentul nu a citit fișierul, răspunsul despre acel fișier se sprijină pe tipare generale. Tot ce a intrat în conversație cântărește mai mult decât tot ce s-a fixat în parametri;
- despre versiunile recente ale bibliotecilor, modelul știe implicit puțin, iar cel mai simplu se corectează asta cu documentație pusă în conversație;
- dacă răspunsul a luat-o într-o direcție greșită, e mai util să adăugați ce lipsește decât să repetați cererea cu aceleași cuvinte. Mecanismul se bazează pe textul dinaintea răspunsului, nu pe insistență.
Înțelegerea mecanismului nu face modelul mai slab decât este. Doar explică la ce să vă așteptați de la el: nu la o carte de referință cu garanție, ci la un continuator de text foarte bun, căruia dumneavoastră îi dați începutul.
Video: aceeași mecanică în imagini
Canalul 3Blue1Brown are un clip scurt care adună esențialul într-o singură animație clară: tokenuri, probabilitățile cuvântului următor, atenția și de unde vin, de fapt, parametrii modelului. Se numește Large Language Models explained briefly.
Originalul este în engleză, dar clipul are mai multe piste audio traduse, care se comută din setările playerului. Dacă nu există pista în limba dorită, deschideți videoclipul direct pe YouTube: în playerul web alegerea e mai mare.
Canalul nu se oprește la acest clip. Tot acolo găsiți o serie întreagă despre rețele neuronale, transformere și attention - aceleași idei, doar mai detaliat și cu matematică. Dacă după articol veți vrea să înțelegeți nu "ce se întâmplă", ci "de ce funcționează asta, de fapt", de acolo merită să începeți.
GO TO FULL VERSION