Промпт, кантэкст, абвязка, цыкл: чатыры ўзроўні AI-агента
Промпт, кантэкст, абвязка і цыкл — чатыры ўзроўні кожнага AI-агента, ад промпт-інжынерыі ўгару, і чаму кожны з’явіўся, бо ніжэйшага не хапіла.
Часта пачатковая запытанне: якшо мадэль для чату — гэта проста перадача слоў увін і слоў назад, то як агенты ШЫ бронююць рэйсы чыстае пішуць код? Адпаведзь настаеяцца чатырамі слоямі, і кожны з іх існуе таму, што слой, які знаходзіцца ніжэй, сам па сабе не можа поясніць, як функцыонуе агент. Короткая аналогія, якая ўсе гэта пояснюе: чыраклівы запрос без кантэксту — цэла гарна рэч, сказаная у порожній кімнаце. Чыраклівы кантэкст без правільнага падтрымкі — цэла ідэальная план, але без можлівасці ўжыцця. Полны падтрымкі без чыткага алгорытму — цэна кваліфікаваны працавальнік, які все рава чакае, калі хтось будзе продаваць: «цяпер наступны задачэ».
Першы слой: запрос
У даным случае едынай елемент працы — адзін вхідны даны. Мадэль нічога не памятае з перыяда да запуску, таму запрос павінен мячыць у сабе все неабяжнае: ролю, кантэкст, інструкцыі, прыклады і фармат выходных даных, усё гэта аб’еднанае ў аднаму звесці. Калі рэзультаты не задовольняюць, ключова спроможнасць — з’ясавіць, які элемент не працуе, а не перапісваць усё занова.
Набор абразоў досыць вялікі:
- Запросы без прыкладоў (Zero-shot prompting) запытваюць безпосерэдна, спадзяючыся, што мадэль зрозумее.
- Запросы з калькамі прыкладоў (Few-shot prompting) падаюць два-тры прыклады вхідных/выходных даных, і мадэль шукае патэрны сярод іх.
- Метод «ланцуга разумовых крокаў» (Chain-of-thought) прасіць мадэль спачатку рассуждаваць па кроках, што можа значна дапамогчы ў матэматыцы, логіцы і задачах з калькамі.
- Запросы з вказаннем ролі, такія як «ты — старшы рэдактар» або «ты — скептычны рэвізор», змінююць тон і ступень строгасці ў адпаведным запросе.
Усё гэта выражаецца ў хорашых інструкціях, падобных чыстаму электранаўнаму пісьму, і яны адпавядаюць на аднай вузкай запытанні: якія словы трэба выкарыстоўваць зараз для гэтага запіту? Рэчышча напісаны запрос для падсумку даследжэння можа даць чысты і структураваны рэзультат без зайвага тэксту.
Слабасць праблэмы прыкметна ў дадатковых запытаннях. Калі у той жа чат запытаць пра ўжо згаданы раней пункт, мадэль можа ўсё гэта праціснуць і адпаведзець на адначасова трохі іншае запытанне. Яна не памятае кантэкст, у якім знаходзіцца. Хорашыя заповедзі выявляюцца неабходнымі, але недастатнімі, і чагосць, што знаходзіцца даўней у ланцугу запытанняў, не хапае.
Чаму проста не продовжыць ствараць лепшыя запіты? Таму што інжынерыя запітоў была створана для однакратных задач: запытаць, адпаведзець, готава. Калі мета — гэта працэс, які выконваецца за многа крокаў, памятае падзеі, выкарыстоўвае інструменты або працюе без таго, каб чалавек пісаў кожную інструкцыю, хітрыя фразы перастаюць быць вузькім месцам. Вузькім месцам стае все, што ўсунуто навакол. Запыты застаюцься важлівымі. Яны проста перастаюць быць ўсім у цікавай історыі.
Другі слой: кантэкст
Ёнтальнай елементай працы — гэта тое, што застаецца ў вікні модэлі на кожны крок. Вікно ёсць павярненым, тады як доступная інфармацыя — ні, таму куратура становіцца неабходнаю. Без яе важлівыя дэталі занурваюцца пад застарэлыя рэзультаты працы інструментоў і старыя фрагменты размовы, а увага модэлі падупае. Куратор выбірае, што застацца, стыскае тое, што ўжо корыстна, але вялікае па розмеру, і адкідае рэшту. Ключовая навык — знанне таго, што трэба адкінуць, а не спроба пакаваць больш інфармацыі.
Камера, у якой знаходзіцца мадэль, мае назву: кантэкст. Цэў значыць усё, што мадэль бачыць пад час конкрэтнага вызову, не толькі запіт: інструкцыі сістэмы, запрашаныя дакументы, апісанні інструментаў, історыя размовы, дзейнае памяць і ранейшыя рэзультаты інструментаў. Інжыніерыя кантэкста можа быць апісана як кераванне тым, што бачыць мадэль, каб пасягнуць лепшага рэзультата. Формулюванне запіта стосуецца выбору слоў. Інжыніерыя кантэкста стосуецца таго, што мадэль знае самэ працэсам.
Падобна аналагія з будаваннем дапамагае. Калі запрашаць кантрактара на адзін дзень, можна даць ягоўцу чыста сформульаваны заведчык працы, але без плану паверхоў, історыі дазволаў і запісаў апранаўкі з вчора, такія формулюванні не спасуць сітуацыю. Кантрактар з упэўненасцю зрабіць не тое. Гэта адпавядае вышэйшаму непадарку: модэль не была дурной, а проста недастаткова інформаваная. Большасць непадаркоў агентаў — гэта непадаркі ў зв’язку з кантэкстам, а не непадаркі самай модэлі. Модэль працуе чыста, але ніхто не падаў план паверхоў.
Явным рашэннем ў такім случае ёсьць падача ў мадэль усіх дадзеных: цэлага спілкування, кожнага дакумента, кожнай пакульнай взаімадзеі. Чым больш маёмся інфармацыі, тым лепшыя адказы. Прафесіялі з’явілі працоўны прыем, калі такое выклікаецца, і далі яму назву — «распад кантэксту». Нават мадэлі з вялікімі об’ёмамі дадзеных значна паслабляюць, калі ў ўсё большым колькасці падае толькі часткова значыцьвы матэрыял. У мадэлі не заканчываецца прастор; сігнал тоне ў шуме, а нерэлевантныя дэталі пачынаюць спрыймаліся як важлівыя. Лепшым кераваннем ёсьць падача толькі правільнага папкі, а не цэлага шафы з дакументамі. Адпаведна дысцыпліна ў адной фразе — цэлэвы выбір у працэ падачы дадзеных: адліквідаванне таго, што патрабуецца, і, не менш важліва, выбір таго, што застаецца занятым.
Нават у разыяўленай паўнаста кімнаце быстра з’яўляецца другая стэна. Бездоганны кантэкст дае чудоўны план наступных дзеянняў, а потым модэль проста зупіняецца. Яна не можа ачыніць файл, запрацаваць код чы пераканацца, чы план спрацаваў. Гэта як будавальнік з ідэальным планам падлогі, але без рук.
Трэція складовая: крэйт
Цяпер елементам работы ёсць сама машына. Простая модэль вырабляе толькі тэкст. Крэйт ператварае яе на аб’ект, які можа дзеяць, пераканацца у сваёй працы чы вярнуцца да нормы пасля абыяковасці, праз тры фазы:
- Збір: скарыстацца тым, што трэба.
- Дзеянне: запрацаваць модэль, вызваць інструменты чы падагентаў.
- Перакананне: пераканацца ў рэзультатах праз тэсты чы суддзю.
У разыяковасці весь цыкл прабуецца знову з аднавёраным кантэкстам. Самэ гэта і адразняе вызыванне API ад запрацоўкі агента.
Практычны формул: агент = мадэль + прыжак. Усе, што аб’яднаецца з модэлью, лячыцца прыжакам, тыябо код, настройкі і логіка выканання. Гэта включае інструменты, якія можна вызваць, памяць, якую можна чытаць і запісваць, ліміты дазволеных дзеянняў, механізмы керавання, якія выбіраюць наступны крок, і стан, які перазіходзіць за межы сесіі.
Сама слова падходзіць. Каньчык ёсць сілы, але без прыжака ён не можа працаваць у ферме, бо рэмені і водзы направляюць яго первісную сілу ў корыстную працу. Заменіце каньчыка на модэль: у яе ёсць інтэлект, але без інструментаў, памяці, захоўніх мер і механізмаў керавання гэты інтэлект не мае куды пайсці.
Адзін момент можа перакантавіць вярніцу. Рэмень не робіць мадэль розумней. Як толькі заменіць мадэль на крашчую, рэмень застаецца тым жа, адколькі ён ўсьмо компонент, які можна падключыць, а не галоўны элемент. Ёго ролю складае структура: хытрая мадэль, якая не мае саўстанней стану, стае адным з компонентаў замкнутай сістэмы, якая выконвае дзеянні, перакантравляе рэзультаты і працуе завтра адразу там, дзе заканчылася сёння.
Гэта таксама пояснюе, што значыць, калі AI здаецца памятае што-небудзь між сесіямі. Мадэль не памятае. Сістэма зберагае гэта гдзе-небудзь і пазней вяртае гэта знанне. Кожны вызов модэлі пачынаецца з нуля, а сістэма імітуюць прынудную спадчынасць, выкарыстоўваючы вчорашнія нотаткі, сённяшній спіс задач і стан файловай сістэмы, перадаючы ўсё гэта як кантэкст пры тым, як мадэль пачынае працаваць. Таму інжынерыя кантэкста і інжынерыя сістэмы з’еднаны ўжо, таму што сама сістэма адлучвае, які кантэкст будзе сформаваны практычна ў кожны вызов.
Чэтырый слой: цікл
Модэль з інструментамі і памяцюючымі можлівасцямі здаецца вершынай. Што ўсё ўжо можа патрабаваць агент? Сігнал жыцця. Інжынерыя цікла — гэта найнэўжоўшы слой, які ўсё яшчэ называецца так, калі людзі яго ствараюць.
Ўж тут гэты прыем. Нават з абым прыстроем захоплення, каму-небудзь все равно трэба сядзець за клавіатуру і выбіраць, што будзе рабіць агент: запісваць запіт, прачытаць рэзультат, выбраць наступны запіт, парадкаваць. Гэта чалавек, які участвуе ў процэсе, адна па адной, завжды.
Інжынерыя цыклу заменяе ручны обмён інформацыяй на сістэму, якая сама керуе цыклам: думае, дзеяе, аналізуе тое, што адбылося, выбірае наступны крок, зноў працюе, без таго, каб чалавек занова запісваў інструкцыі. Гэта супамінае разлік межаў керавання автомабілем і стварэння функціі круіз-контролю. Чалавек больш не натыкае на газ кожную секунду, але ужо візначыў, што значыць швальнасць і зупінка.
Конкрэтны прыклад дапамагае зразумець працэс. Агент, які атрымуе задачу на вылечэнне бага, чытае апошнюе паведамленне, стварае план, правяе код і запускае набор тэстаў. Тэсты яшчэ не праходзяць, таму ён корэгуе свой падход, зноў правяе код і запускае тэсты. Лячы толькі тады, калі тэсты праходзяць, альбо калі ён спробаваў достатню колькасць разоў і вырашыў, што застраг, ён вяртаецца да чалавека. Кожны з гэтых цыкламаў ёсць петля, і ніхто не пісаў у межах яе „спробаваць зноў“.
Што можа пайсці не так? Петля, якая працуе без нагляду, таксама можа павтарыць той самы бяг, але шырэй, і ніхто гэта не зазначае якое-ткі час. Таму адпаведныя праекты включаюць у петлю механізм ацэнкі: контрольны пункт, іноды другую мадэль, якая выступае у ролі судды, якая оцінюе рэзультат па практычным крытэрыям. Лячы петля можа счыць задачу завершанай толькі пасля таго, як праця праходзіць пераканаюча. Калі ніхто не стэжы за кожным крокам, перакананне перастае быць неабавязковым і стае часткай апісання задачы петлі.
Усе чатыры разам
Інструкцыі — гэта калі ўжо раз сказаць каму-небудзь, што робіць. Кантэкст — гэта перакананне, што правы папка ужо ў ўжо на столе, перш чым ён пачне. Крэпліця дае ўжо рукі, інструменты і памяць, якая застаецца нават пасля выходных. Цыкл означае, што больш не трэба стаяць за ўжо плячым: ён працуе, пераканаецца ў своем выніку, пракушае знову, калі ён некарэктны, і прыходзіць да вас толькі тады, калі все справды завершана.
Чатыры запітанні, якія стояць адна пад другой, і кожна з іх не адпаведзена на пытанні пярэднім. Разам яны ствараюць тое, што люды зараз проста называюць агентам, нібы гэта было бяспадзейнае і завжды будзе так проста. Аднак так не было. Кожны слой стаў зрозумелым толькі таму, што хтось продовжаў спытацца, чаму, пакуль не сталаўся відкрывацца ліміты пярэдньага слоя.