
DI agento atmintis: sesijos istorija dar nėra ilgalaikė atmintis

DI agento atmintį kurkite pagal tai, ką jis turi prisiminti ir kiek laiko. Vienam pokalbiui saugokite sesijos istoriją. Jei agentas turi tęsti nutrūkusį kelių žingsnių procesą, išsaugokite vykdymo būsenos kontrolinius taškus. Naudotojo nuostatas, kurios turi galioti naujuose pokalbiuose, laikykite atskirai nuo konkrečios sesijos.
Sesijos istorija gali išlikti tarp programos paleidimų, jei ją saugote patvarioje laikmenoje. Tačiau ji vis tiek priklauso tam pačiam pokalbiui: naujai gijai reikalingą nuostatą reikia atrinkti ir susieti su naudotoju, o ne perkelti visą ankstesnį dialogą į modelio kontekstą.
Sprendimų medis pagal poreikį
- Vienas pokalbis. Saugokite pranešimų istoriją pagal sesijos arba gijos identifikatorių. Nuspręskite, kuri jos dalis bus pateikiama modeliui per kitą užklausą.
- Proceso atkūrimas. Jei po pertrūkio reikia tęsti kelių žingsnių vykdymą, saugokite gijos būsenos kontrolinius taškus ir naudokite patvarią jų laikmeną.
- Keli serveriai. Jei kitą užklausą gali aptarnauti kitas procesas, visi procesai turi pasiekti tą pačią saugyklą ir naudoti teisingą pokalbio identifikatorių.
- Nuostatos tarp pokalbių. Aiškiai atrinktas naudotojo nuostatas laikykite atskirais įrašais, kuriuos galima rasti ir naujoje gijoje.
Vienam pokalbiui pakanka sesijos istorijos
Sesijoje laikykite pokalbiui tęsti reikalingus naudotojo, agento ir įrankių pranešimus. OpenAI Agents SDK sesijų dokumentacijoje nurodyta, kad prieš kiekvieną paleidimą įkeliama tos sesijos istorija, o po paleidimo išsaugomi nauji elementai; joje taip pat aprašytos failu, „Redis“ ar duomenų baze paremtos saugyklos. Jei istorija buvo tik proceso operatyviojoje atmintyje, tas pats sesijos identifikatorius po perkrovimo jos nesugrąžins.
Istorijos išsaugojimas ir jos pateikimas modeliui yra skirtingi sprendimai. Ilgesnį pokalbį galima laikyti saugykloje, o kitam atsakymui perduoti tik reikalingus naujausius pranešimus arba ankstesnės dalies santrauką. Rinkdamiesi ribą išsaugokite užduočiai svarbų naudotojo patikslinimą ir su juo susijusį įrankio rezultatą; vien mechaniškai nukirpus pradžią agentas gali prarasti atsakymui būtiną kontekstą.
Sesijos identifikatorius nusako, kurią istoriją tęsti, bet pats nenustato, kiek ilgai ją laikyti. Todėl pokalbio pabaiga, įrašų pašalinimas ir naujos sesijos pradžia turi būti apibrėžti programoje. Naujas pokalbis su tuo pačiu naudotoju nebūtinai turėtų paveldėti ankstesnio pokalbio pranešimus.
Nutrūkusiam procesui reikia vykdymo būsenos
Jei agentas vykdo kelių žingsnių užduotį, vien dialogo tekstas gali neparodyti, kuris žingsnis jau atliktas ir nuo kur tęsti. LangGraph išsaugojimo gairėse kontroliniai taškai apibrėžiami kaip konkrečios gijos būsenos momentinės kopijos, tinkamos darbui tęsti po pertrūkio; ten pat nurodyta, kad operatyviojoje atmintyje laikomi taškai prarandami procesui persikrovus.
Jei užduotį galima saugiai pradėti iš naujo, atskiro atkūrimo sluoksnio gali neprireikti. Jei būtina tęsti iš išsaugotos būsenos, pasirinkite patvarią kontrolinių taškų saugyklą ir atkurkite tą pačią giją. Kai užduotis keičia išorinę sistemą, pavyzdžiui, sukuria užsakymą, vien išsaugota agento būsena dar nepasako, ar veiksmas išorinėje sistemoje jau įvyko; pakartojimo taisyklę reikia numatyti atskirai.
Kontroliniai taškai taip pat turi savo gyvavimo trukmę. Net jei modeliui siunčiate trumpą kontekstą, senos būsenos kopijos gali likti saugykloje. Nuspręskite, kiek laiko leidžiate atkurti procesą ir kada jo taškus pašalinate.
Keliems serveriams reikia bendros saugyklos
Kai to paties pokalbio užklausos patenka į skirtingus serverius, vieno proceso atmintis jų nesujungia. Sesijų saugykla turi būti pasiekiama kiekvienam juos aptarnaujančiam procesui, o užklausa turi būti susieta su tuo pačiu pokalbio identifikatoriumi. Vietinis failas tinka tik tada, kai visi vykdymo procesai iš tiesų pasiekia tą pačią patikimą laikmeną.
Kiekvienam vykdymui pasirinkite vieną pokalbio tęstinumo mechanizmą. Naudojant OpenAI Agents SDK, vietinės sesijos tame pačiame paleidime negalima derinti su serverio valdoma conversation_id ar previous_response_id tąsa. Šis pasirinkimas lemia, kur laikoma pokalbio istorija ir kaip kitam vykdymui perduodamas tęstinumas.
Sesijos ID taip pat nėra leidimas skaityti duomenis. Prieš grąžindama istoriją programa turi susieti užklausą su prisijungusiu naudotoju ir patikrinti jo teisę pasiekti pasirinktą sesiją. Tai ypač svarbu bendroje saugykloje, kur skirtingų naudotojų pokalbiai laikomi greta.
Nuostatos tarp pokalbių laikomos atskirai
Jei naudotojas paprašo visuomet atsakyti lietuviškai, ši nuostata gali būti naudinga ir naujai pradėtoje gijoje. Laikykite ją kaip atskirą su naudotoju susietą įrašą, o naujam atsakymui paimkite tik aktualią informaciją. LangGraph atminties gairėse trumpalaikė atmintis siejama su gijos būsena ir kontrolinių taškų saugykla, o ilgalaikė – su atskira naudotojo ar programos duomenų saugykla tarp pokalbių.
Šis skirtumas išlieka net tada, kai abu įrašų tipai fiziškai laikomi toje pačioje duomenų bazėje. Gijos istorija atsako į klausimą, kas vyko konkrečiame pokalbyje; atskiras nuostatos įrašas nusako, kokią informaciją galima pritaikyti kitam pokalbiui. Jei naudotojas pakeičia nuostatą, senąjį įrašą atnaujinkite arba pašalinkite, kad agentas negautų dviejų nesuderinamų nurodymų.
Apribokite saugojimo trukmę ir modelio įvestį
Sesijai, kontroliniams taškams ir naudotojo nuostatoms nustatykite atskiras saugojimo taisykles. Pokalbio istorija gali būti šalinama pasibaigus sesijai, kontroliniai taškai – pasibaigus laikotarpiui, per kurį leidžiate atkurti vykdymą, o nuostata – ją pakeitus ar naudotojui paprašius ištrinti. Patvari saugykla savaime nenustato nė vieno iš šių terminų.
Į ilgalaikę saugyklą kelkite aiškiai atrinktą nuostatą ar faktą, o ne visą pokalbį dėl galimo būsimo poreikio. Įraše verta išlaikyti jo kilmę ir galiojimą, kad vėliau būtų galima spręsti, ar jis vis dar tinka. Prieš perduodami įrašą modeliui, apribokite paiešką pagal naudotoją ir dabartinę užduotį: saugykloje esantys duomenys neturi automatiškai tapti kiekvieno atsakymo kontekstu.
Taip pat skaitykite:
Susiję straipsniai


„Zapier Agents“ ar „n8n“: patogumas kainuoja su kiekvienu veiksmu

„Horizon Delegate“ dirba atsijungus: užduotis lieka virtualiame darbalaukyje

Claude Code ar GitHub Copilot: 7 156 užduotys paneigia vieną nugalėtoją

„Cloudflare Workers“ ar „AWS Lambda“: šaltas paleidimas keičia pasirinkimą

Kaip testuoti DI agentą: galutinis rezultatas svarbesnis už gražų atsakymą
Prenumeruokite mūsų naujienlaiškį
Gaukite naujausias Web3, DI ir kriptovaliutų naujienas tiesiai į savo el. pašto dėžutę.