Ұзын агент жауаптарын контекст терезесінде ұстау
Модель бір жолы оқи алатын көлемі шектеулі — оның контекст терезесі. Mythex агенті ұзақ жұмыс жасайды: көптеген файлдарды оқиды, командаларды іске қосады, шектеулі тапсырмаларды суб-агенттерге береді. Ұзақ жұмыстың үш жолмен бұзылғанын таптық: суб-агенттер модель барлық сұраныстарды қабылдамайтын деңгейге дейін өсті; суб-агент бос орны таусылды деп ойлап, ерте тоқтады; ал орыс, қытай және жапон мәтіндеріндегі токен санымыз қатты қате болды. Міне, нені өзгерттік.
Алдымен кейбір терминдер
- Токендер — модель оқитын бөліктер. Шектер мен шығындар таңбалар немесе сөздермен емес, токенмен есептеледі.
- Контекст терезесі — модель бір сұраныста оқи алатын ең көп көлем. Біз сонымен қатар әр сұраныс үшін өзіміздің төмендетілген бюджетімізді қоямыз, сонда шығындар мен жылдамдық ақылға қонымды болады.
- Құрал нәтижелері — агенттің құралдарынан қайтатын нәрсе: оқыған файлдың мазмұны, іске қосқан команданың шығысы. Ұзақ жұмыста олар жіберілетін деректердің көбін құрайды.
- Суб-агент — негізгі агент өзіндік тапсырма үшін іске қосатын көмекші, мысалы «осы тараулардың жазбаларымен салыстыр». Ол бір нұсқау алады, содан кейін көп құрал шақыруы арқылы өз бетінше жұмыс істейді.
1-мәселе: суб-агенттер модель бас тартқанша өсті
Агент әр қадамда модельге сол кезге дейінгі сөйлесуді жібереді. Ол тым үлкен болғанда, біздің код оны қысқартатын, бірақ тек пайдаланушы хабарламасының басында, сондықтан құрал шақыруы мен оның нәтижесі ешқашан бөлінбейтін. Ол бірінші хабарламаны сақтайтын, алдыңғы сөйлесу қысқартылғаны туралы ескертпе қосатын және ең жаңа толық бурылдарды сыйғызатын.
Суб-агентте тек бір пайдаланушы хабарламасы бар: оның нұсқауы. Кесетін орын жоқ. Сондықтан ол әр қадамда бүкіл тарихын жіберіп отырды, әр жолы өсе берді, сұраныс модель қабылдайтын көлемнен асып кеткенше — шамамен бір миллион токен. Осындай 8 суб-агентпен жүргізілген тестте 8-і де бас тартылды.
Түзету: алдымен ескі құрал нәтижелерін тазарту
Енді сұраныстар бюджетке үш қадаммен сәйкес келеді, әрқайсысы алдыңғысы жеткіліксіз болғанда ғана қолданылады:
- Ең ескі құрал нәтижелерін тазарту. Олардың мазмұны қысқа ескертпемен алмастырылады: нәтиже модель шегінде сөйлесуді ұстап тұру үшін тазартылды, ал қажет болса агент құралды қайта іске қоса алады. Бір сағат бұрын оқылған файл сұраныстағы ең үлкен және ең пайдасыз бөлік болуы жиі, ал файл әлі де қайта оқуға қолжетімді. Ең жаңа нәтижелер толық күйінде қалады.
- Толық пайдаланушы бурылдарын сақтау. Бұрынғыдай: бірінші хабарлама, ескертпе және ең жаңа толық бурылдар.
- Толық құрал айналымдарын сақтау. Бір ұзақ бурылдың — суб-агент үшін жалғыз түрдің — ішінде бірінші хабарламаны, ескертпені және «құрал шақыр, нәтиже ал» деген ең жаңа толық айналымдарды сақтау.
Бұл тек не жіберілетінін өзгертеді. Агенттің сақталған тарихы бәрін сақтайды. Сол тестте 8-ден 0-і бас тартылды және 8-і де аяқтады.
Тазарту партиялап, кэш жұмыс істей берсін
Модель провайдерлері сұраныстың басын, егер ол соңғысымен бірдей болса, қайта пайдалана алады — префикс кэші. Егер әр шақыруда тағы бір нәтижені тазартсақ, сұраныстың басы әр шақыруда өзгеріп, кэш ешқашан көмектеспейтін еді.
Сондықтан ең ескі нәтижелерді бір-бірлеп емес, төртеуден тазартамыз. Тазартылған бөлік бірнеше шақыру бойы бірдей қалады. Ескертпеден сәл ғана үлкен нәтижеге тиілмейді: оны тазарту аз ғана үнем береді, бірақ сұраныс басын бәрібір өзгертеді. Толық күйінде қалатын көлемді саны емес, өлшемі анықтайды: төрттен бір бюджетке сыятын ең жаңа нәтижелер қалады және әрқашан кемінде бір нәтиже. Ертерек нұсқада тұрақты алты толық нәтиже сақталатын, бұл қысқа команда шығысы үшін дұрыс болған, бірақ ұзақ файл оқулары кезінде ескі нәтижелерге бюджеттің көп бөлігін қалдырған.
Бас тартулар енді осыны көрсетеді
Модель жарамсыз деп қабылдамаған сұраныс енді қайта жіберілмейді; бірдей сұранысты қайта жіберу бірдей жауап береді. Сөйлесу модель үшін тым ұзақ болса, адам мынаны көреді: «Бұл сөйлесу модель бір рет оқи алатыныдан ұзарып кетті. Келесі қадам үшін жаңа чат бастаңыз — осы уақытқа дейін жасалғанның бәрі сақталады.» Бұл адамның шешетін нәрсесі, қызмет тоқтауы емес, сондықтан бізге бет (page) жібермейді.
2-мәселе: агент «орын үнемдеу» үшін тоқтады
Суб-агентке 40 ұзақ тарауды оқуды тапсырдық, ол 2-ден кейін тоқтап, орын үнемдегісі келетінін айтты. Ол 400 000 токендік бюджеттің шамамен 100 000 токенін қолданған еді.
Ол ескі нәтижелердің оған тазартылатынын білмеді. Сондықтан біз оған айттық. Агенттің нұсқаулығында енді мынадай ереже бар: сөйлесу модель қабылдайтыннан асып кетсе, ең ескі құрал нәтижелері тазартылады, ал ең жаңалары толық қалады — сондықтан ұзақ тапсырманы орын үнемдеу үшін тоқтатпаңыз, жалғастыра беріңіз, ал қажет болса тазартылған файлды қайта оқыңыз.
Модель көрмейтін түзету модельдің көзқарасы бойынша түзету емес. Механизм тек агент оған сенсе ғана көмектеседі.
3-мәселе: барлығын ағылшын тілі сияқты санау
Токендерді токенизаторды іске қоспай, таңбаларды төртке бөлу арқылы бағаладық. Бұл ағылшын тілі үшін жақсы ереже, бірақ басқа жазулар үшін олай емес: орысша шамамен 2,2 таңба бір токенге, қытай немесе жапон тілі шамамен бір таңбаға келеді.
Сондықтан орыс тарауларын оқып тұрған суб-агент шамамен 640 000 токенді сұраныс жіберді, ал біздің бағамыз бюджет 400 000-нан аз деп көрсетіп тұрды. Бағамыз модельдің қатаң шегінен асып кетуі де оңай еді.
Енді бағалау жазу жүйесіне қарай жүреді: қарапайым ASCII төрт таңба бір токенге, қытай, жапон және корей — бір таңбаға, ал қалған бәрі — кириллица, грек, араб, акцентті әріптер, эмодзи — екі таңбаға. Ол жоғары бағалауға бейім етіп жасалған. Бір орыс тарауында ол қазір 43 423 токенді бағалайды, ал өлшенгені шамамен 44 600; бұрын ол 25 023 деп көрсетті. Хабарлама ешқашан өзгермейтіндіктен, оның бағасы бір рет есептеліп, сақталады, әр қадамда қайта есептелмейді.
Біз не үйрендік
- Көлем нақты қайда екенін көріп, сонда қысқартыңыз. Агент жұмысында бұл пайдаланушы хабарламалары емес, құрал нәтижелері.
- Агентке өзінің қорғаныс шараларын айтыңыз. Әйтпесе ол енді қолданылмайтын шектерге қарап жоспарлайды.
- «Таңбаларды 4-ке бөлу» — ағылшын тіліндегі болжам. Көп тілді пайдаланушылар үшін токенді санайтын кез келген нәрсе жазу жүйесіне қарап санауы керек, немесе нақты токенизаторды пайдалануы керек.
- Кэшке назар аударыңыз. Әр шақыруда басы өзгеретін сұраныс көбірек шығындайды және баяу жұмыс істейді.
Егер өз қолданбаңызға AI мүмкіндіктерін қоссаңыз, LLM деген не және LLM API-лерін қалай пайдалану керек нұсқаулықтары контекст терезелері мен токендерді бастан түсіндіреді. Mythex-те суб-агенттердің қалай жұмыс істейтіні туралы көбірек суб-агенттер құжаттарында бар.