
← Tagasi blogisse
Lucas AI süsteemi disain: kihilised viiped, leksikaalne otsing, seansimälu, token eelarved ja eel-lendav klassifikaator piiratud portfelli vestlus pinnal.
See sait on portfell, kuid Lucas AI pind on tahtlikult ehitatud nagu väike toode: spetsiaalne /{locale}/ai kogemus, ettearvatav kulutus ja vastused, mis jäävad esimeses isikus ainult struktureeritud kontekstist - mitte üldine assistent veebimastaabiga ambitsioonidega.
See postitus on tehniline sügav sukeldumine sellesse, kuidas see süsteem on ühendatud: mis pannakse kokku iga päringu jaoks, miks see on kihiline selliselt ja millised piirangud on tahtlikud.
Staatilised portfellid vastavad ühekordsetele küsimustele hästi ja ebaõnnestuvad sügavuses. Järgnevate küsimuste vastused (“kuidas sa selle ulatuse määrasid?”, “milline viru oli selle rolli jaoks?”) kas kaovad PDF-idesse või sunnivad inimest sekkuma.
Naivsed vestlusintegratsioonid parandavad interaktsioonimudelit, kuid loovad uusi tõrkeid: piiramatu kontekst, leiutatud tööandjad, vaikne ulatuse laienemine ja iga küsimus, mis on seotud suurima mudeliga, mida te olete üles seadnud. Portfell ei vaja avatud maailma vestlusbotti; sellele on vaja kitsast liidest koos auditeeritava faktibaasiga.
Lucas AI asub selles lõhes: piiratud UX, piiratud teadmised, selged piirid selle kohta, mida “Lucas” võib väita.
Lõpust lõpuni on saatmine ikka veel POST /api/chat JSONiga (message, locale, valikuline sessionSummary / recentTurns). Marsruut omab poliitikat ja kulutust; brauser omab transkriptsiooni UI-d ja klient-poolsed püsivust (sessionStorage).
Kihid, täpsuse järjekorras:
llama-3.1-8b-instant vaikimisi), mitte-voog, max_tokens: 5, temperature: 0, ühe sõna otsus: OFF_TOPIC vs jätka. Kui OFF_TOPIC, API tagastab mock SSE koos lokaliseeritud keeldumisega, nii et kliendi tee vastab normaalsele voolule. Klassifikaatori vea või aegumise korral käitaja avab ja käivitab põhimudeli - odavad väravad ei tohiks tellida legitiimset liiklust. Hostid võivad määrata CHAT_SKIP_CLASSIFIER, et see kõne täielikult ära jätta, kui koormustesti või kui poole võrra teenusepakkuja kõnede vähendamine on väärt, et kaotada kiirtee.buildChatPrompt koostab süsteemi sõnum; põhimudel saab süsteemi + praeguse kasutaja sõnum (mitte mitme sõnumiga vestluse transkriptsiooni traadil).POST …/v1/chat/completions (vaikimisi llama-3.3-70b-versatile Groqil, ülekirjutamine GROQ_MODEL), vastus proksitud kui SSE kliendile. max_tokens on piiratud CHAT_MAX_TOKENS (256–8192, vaikimisi 2048) seob UX-i ühiku majandusega.sessionStorage-is; iga päring võib lisada kärbitud kokkuvõtte ja viilu hiljutisi pöördeid, nii et server jätkab järjepidevust ilma vestlust salvestamata serveripoolselt.Disain väldib “saada kõik alati”. Täieliku struktureeritud profiili sissekirjutamine igale päringule skaleerub halvasti: token maksumus kasvab koos korpusega, ebarelevantsed küsimused maksavad ebarelevantsed faktid ja te lähenete teenusepakkuja piiridele, kui profiil kasvab.
Selle asemel:
systemPrompt (corePromptText.ts) — stabiilsed reeglid: esimene isik, läbipaistvus (“ei kirjuta reaalajas”), maandumise reeglid, kestuse matemaatika reeglid, lokaliseerimise käitumine. Hoitakse minimal ja fikseeritud, nii et prefiksi vahemälu (kus pakkuja deduubleerib avamisteksti) on võimalus aidata.CONTEXT fragmendid — lisatakse pärast jagatud prefiksit, selgelt piiritletud (--- CONTEXT (canonical / FAQ) ---, seansimälu, toodud väljavõtted) ja suletud --- End CONTEXT fragments --- pluss Visitor locale: … rida, nii et mudel vastab saidikeeles.On olemas kaks erinevat “marsruutimise” ideed virnas; nende segamine kaotab disaini.
Heuristiline kavatsus (routeIntent in router.ts) ei ole LLM-kõne. See on märksõna- ja regex-põhine klassifitseerimine jämedatesse ämbriteks (recruiter, engineering, project, blog, portfolio_meta, navigation_contact, conversational, general). See kavatsus ainult mõjutab leksikaalset tükkide hindamist - latentsus jääb tasaseks, maksumus on null.
Näited:
navigation_contact — suurendab kontakti-adjacent käitumist kaudselt läbi tükkide publikud.portfolio_meta — suurendab portfolio_* domeene selectChunks-is.recruiter — suurendab duration, strengths, rekruiteri märgistatud tükke.conversational — väldib üle-fetchimist rasketest kogemustest.“RAG” viitab sageli embeddingitele ja vektor andmebaasile. See implementatsioon ei kasuta neid. Otsing on leksikaalne: tokeniseerida kasutaja sõnum sõnasetteks, hinnata iga tükki märksõna tabamuste + alajaotuse ülekatte järgi tükitekstis, lisada kavatsuspõhiseid tõukeid (nt rekruiteri publikatsioonimärgid, portfolio_meta tõukab portfolio_* domeene), sorteerida, seejärel võtta parimad tükid alla kõvade piiride.
Lucas AI on parim lugeda kui tootepinda spetsifikatsiooniga: lucasPersonalContext objekt ja tuletatud tükid on leping, süsteem on seadus, token eelarved on valvur, ja klassifikaator pluss off-topic voo tee määratlevad mida toode keeldub olemast.
Kui te ehitate midagi sarnast, on hoob mitte suurim üldine mudel - see on otsustamine, mis siseneb viibale iga pöörde jaoks ja seda mõõdetakse. Portfell ei vaja lõpmatut konteksti; sellele on vaja ausaid, piiratud vastuseid - ja arhitektuuri, mis on piisavalt igav, et neid hoida.
Kokkuvõttes on Lucas AI süsteem ehitatud spetsiaalselt selleks, et pakkuda tõhusaid ja täpseid vastuseid piiratud ulatuses. Selle disain põhineb mitmel põhikäsitul: kihilised viiped, leksikaalne otsing, seansimälu ja token eelarved. Süsteem on üles ehitatud olema auditeeritav, et tagada vastuste kvaliteet ja usaldusväärsus.