Галоўная / Артыкулы / Інжыніярыя контэкста для агентаў AI: выбір таго, што бачыць модель

Інжыніярыя контэкста для агентаў AI: выбір таго, што бачыць модель

Чаму агенты паслабляюцца, калі ў яных збільшваецца контекст, чым разлічаецца проектаванне контэксту ад формулювання запита, і простая схема для выбору таго, што бачыць кожны вызов моделі.

1782 слоў

АІ-агент, які добраўся хорашых рэзультатаў у першыя калькі, а пасля начынае ігнараваць інструкцыі, павтараць роботу або павержацца застарэлым фактам, зазвычай не мае проблемы з формулюванням. У яго є проблема з контэкстам: модель бачыць занадто многа, некалькі рэчаў або правыя рэчы не там, дзе трэба. Інжынерыя контэксту — это галузь, якая дапамагае точна выбраць тое, што модель атрымлівае прычымо да выконання задачы, тое значы не толькі запит, але і весь комплекс інструкцый, історыі, атрыманых дадзеных і ваказаў пра інструменты. У гэтым кярырантаве пояснюецца, чаму гэты комплекс становіць большую значымасць па мере росту агентоў, чатыры складнікі, якія вы можете кантролаваць, мінімальны процес асамблеі і моделі злома, на якія трэба зважаць.

Асновная ідея: маленькі, рэлевантны фрагмент

Мэтаем ніколі не ўсё, што магла б якось дапамогчы. Неабходна даўаць модэлю толькі тую частку інфармацыі, якая практычна дазволяе ўсунуць адпаведныя проблемы, а рэшту залишаць без увагі.

Аналагія з людзьмі чытра абгрунтуе гэта. Якшо папросіць новага інжынера вылечыць бяг у кодавой базе з мільйону ліній, сказаўшы «пачытай код і знайдзі яго», ён будзе перагружаны; адпаведны файл загубіцца сярод тысяч іншых. А якшо сказаць таму ж інжынеру «проблема, штоймаўшы, знаходзіцца ў модуле платэжаў, гэтыя тры файлы былі зменены ў празылетку, і гэта тое, што пробаваў пярэдні чалавек», то вылечыць проблему можна за калькі хвілін. Нічога не змянілася ў самам інжынеры, толькі інфармацыя, з якою ён працаваў, зменілася.

Модэлі паводзяцца аднойчы. Інжынерыя контэксту — гэта праця падачы саме тых трох файлов, а не цэлага репазітарыя.

Чаму сама формулавання больш не ўстаёць

Першыя прадактыкі ў работе з мовнымі моделямі былі спрямаваны на формулювання: як сформулюваць запиты і якія формулі развіваюць кращыя адпаведзі. Гэта і є інжынерыя запитоў, і для адной-едзінай запыткі гэта заўсёды мае значэнне.

Аднак агент не адпавядае на адную-едзіную запытку. Ён вядома цикл: чытае ўсё, што трэба, вызывае інструмент, атрымлівае рэзультат, выбирае наступную дзеянне і павторюе цэй процес, іноды дзесяткі разоў. Кожная ітерацыя дадае ўсё больш матэрыялу да таго, што ведае модель. У канцы канцоў накопічаны контэкст стае настолькі вялікім, што важлівыя деталі застаюцца незагляднымі, падобна да чалавека, які прасядзеў на зборах цэлы дзень і больш не можа прыгадаць, што было адлучана на першых зборах.

Антрапічны падход розглядае інжынерыю контэкста як проблему пошуку найкращага можлівага набора інформацыі для моделі ў кожны конкрэтны момент, а не стварэння ўніверсальнай інструкцыі разова. Гэта відображае змяну: інжынерыя запрошэнняў стосуецца слоў; інжынерыя контэкста — усього таго, што є калі модель адпавядае.

Інжынерыя запрошэнняў проты інжынерыі контэкста

Этыя два падходы перасягаюцься, але разніцацца па масштабе, типовым использованні і способах абякання:

  • Масштаб. Інжынерыя запрошэнняў формуе формулюванне адной інструкцыі. Інжынерыя контэкста караўнае цэлы вхідны матерыял: інструкцыі, паканальную беседу, запрашаныя факты і доступныя інструменты.
  • Дзе гэта дапамагае. Інжыніярство запроса падходзіць для ексклюзыўных запытанняў і задач. Інжыніярство контэкста мае важлівую ролю для багатыярусных агентаў, дзе інфармацыя, якая перадаецца между ўзламамі, настолькі ж важліва, як і сам запыт.
  • Тыповая памылка. У інжыніярстве запроса — гэта нечыстая або незрозумелая інструкцыя. У інжыніярстве контэкста — гэта падача занадто большай колькасці або некоректной інфармацыі, нават калі інструкцыя ўсё ж чыста зрозумелая.
  • Тыповая парадка. Слабы запрос можна выправіць парадзіванням. Проблему з контэкстам парадзіванням выправіць нельга; трэба змяніць тое, што запрашваецца, што застаецца і шта адкідаецца.
  • Кароткі дыягностычныя прамеры: якщо ваша метода выправлення заключаецца ў зміне слоў, то вы займаецеся інжыніерыяю запросаў. Якщо ваша метода выправлення зміняе тыя весткі, якія модель отрымае спачатку, то вы займаецеся інжыніерыяю контэксту. Чыбаць структураваны спосаб выбору таго шару, да каторага належыць адказка агента, можна ў статыі debugging AI agents by layer.

    Чатыры складнікі, якімі вы керуеце

    Контэкст кожнага агента складаецца з чатырох джэраў. Кожны з іх мае свой спосаб выкліквання проблем.

    Інструкцыі: апісанне задачы

    Это ўстановочны запрос системы, які апісвае, што і як павінен робіць агент. Якшы ён будзе занадта жорсткі, агент не сможа распрацаваць нічога за межами скрыпту. Якшы ён будзе занадта вольны, агент будзе імпровізаваць. Стараюцца, каб інструкцыі былі настаткі конкрэтнымі, каб направляць поведзенне, не намагаючыся заздалегідь перыябраць усі можлівыя ситуацыі.

    Адзыявленне: дапаможнік у даследаваннях

    Адзыявленне абарачаеся прыемамі збору зовнішняй інфармацыі па мэту пошуку дакументаў, запытанняў да базы дадзеных чытача файлаў. Некалькаспрабны адзыявленне ёсць галоўной прычынай таго, што системы AI з упэўненасцю выказваюць некалькісныя даны. Часта модель нічога не выдумвае; яй былі даны некалькісныя чы рэлевантныя факты, і яна разумна на іха паследавала. Удосконаленне таго, што адзыявляецца, часта дае больш для тачнасці, чым будзь-якія змены ў запытанні.

    Памяць: зошык

    Памяць абарачаеся тым, што агент заставляе сабе, як у рамках адной розмовы, так і між сэсіямі. Без механізма для стварэння апূরкі і выдалення старэй матырыялу памяць не застаецца корыстной. Яна стабільна расте, пакуль большая часть яе не становіцца шумам, які конкуруе з інфармацыяй, якая зараз мае значэнне.

    Інструменты: набор інструментаў

    Інструменты вказываюць на дзеянні, якіе можа выконваць агент, такія як пошук у інтэрнете, выкананне коду чырага адправка электранай пашты. Назва і апісанне кожнага інструмента таксама спадчыцваюць контэкст. Набор з дзесяці перакрываючыхся, практычна ідэнтычных інструментоў плутае модель так сама, як дзесяць неразлічных відвертакоў плутаюць новага працавальніка. Меншыя колькасці інструментаў з чыста выдзеленымі цэлямі спраблеваюць выбіранне і зменшуюць витраты.

    Мінімальны працэс складання контэксту

    Наступны псевдакод паказвае, як чатыры складовыя з’еднаюцца для адной вызову модэлю. Функцыі-паможнікі ўжо є месца для будзь-якага пошуку, ранжыравання і стварэння апісання, якое вы вжываеце, але структура паказвае, як рэальныя системы падходзяць да задачы.

    Ён працюе ў чатыро этапы. Першым ён адбірае інфармацыю шырока, прыймаючы певны «шум», з вялікім лімітом у 50 кандыдатаў. Другім ён ранжуе гэтых кандыдатаў і залишае толькі пяць найлепшых. Трэцім ён стыскае історыю размовы у апূরк, які не перакрочвае 500 еўранаў, замест таго каб праказваць яе цэлым. Нарэшце ён спецыяльна аранжуе элементы: спачатку інструкціі, а пасля — текущы запит, і скорачае рэзультат до дазволенага ліміту токенаў.

    def get_context_for_the_model(question, past_conversation, budget):
        # Step 1: Cast a wide net — search broadly, don't worry about noise yet
        possible_facts = search_everywhere(question, limit=50)
        # Step 2: Narrow it down - keep only the genuinely relevant ones
        best_facts = keep_most_relevant(possible_facts, top=5)
        # Step 3: Summarize old conversation instead of keeping all of it
        short_memory = summarize(past_conversation, max_length=500)
        # Step 4: Put the most important things first and last, not buried in the middle
        final_context = [
            job_description,      # instructions
            short_memory,         # memory
            *best_facts,          # retrieval
            question,             # what's being asked right now, last
        ]
        return trim_to_fit(final_context, budget)
    

    У гэтым прыкладзе ёсць два прыемныя звычкі, якія варта пераняць.

    Шукайте шырока, а потым сувора сякручваюце пошук. Шырокі адбор інфармацыі зменшае шансы праўільна не знайсці адпаведную дакументацыю; агрэсывны ранжыравання дапамагае залічыць фінальны контэкст маленькім. Выплыванне толькі першага падходу запалюе модель, а выплыванне толькі другага можа прызвесці да таго, што правильны матэрыял так і не будзе знайдзены.

    Пастаце тое, што мае значэнне, на краях. Разместіце найважлівейшы контэнт на пачатку або ў канцы вхідных дадзенняў, а не ў середзіне. Гэта не стылістычны выбар. Доследжэнняя даваўных вхідных дадзенняў не раз паказалі, што моделі менш надзеянна звертаюць увагу на інфармацыю, якая знаходзіцца ў середзіне давога контексту; гэты эфект часта называецца "загубленым у середзіне". Ступень сілы гэтага эфекту разніцяецца залежна ад моделі, таму працаваць трэба з вашай сабе наладзой, але правільная парада є простым спосабам у будзь-якім случае.

    За адаптаванне даеякі практычныя падыходы, якія вылучаюцца з той самай логікі. Заздалегідь выберыце, як будзе распадзіцца бюджет межа компанентамі, каб вялікія колькасці рэзультатаў пошуку не моглі таямніча замаскаваць інструкцыі. Пад час скорачэння спачатку адмахніцеся ад наіменш значных рэзультатаў пошуку, перш чым займацца інструкцыямі або текущым запитам. Таксама задокументавайце гэтычны сабраны контекст для кожнага вызову; калі агент паводзіцца некоректна, гэтыя записы зазвычай паказуюць прычыну.

    Што выходзіць з-пад кантролю, калі контекст не адбіраецца рэтельна

    Уключэнне всього, каб было безпечна

    Дадзенне кожнага можлівага значныя элемента здаецца адпаведальнасцю, але часта мае прыкладныя наследкі. Чым больш некаляканых матэрыялаў мусі працаваць модель, тым горэ яна справляецца з пошукам таго ўзнакомлення, яке мае значэнне. Гэта адпавядае чытанню стастроннічнага звярнення перад прымэнем рашэння, якое трывае пяць хвілін.

    Старыя даны

    Якщо няма нічога, што пераканалвацьвае, чы рэгружаваны кантэнт застаецца тачным, модель стварыць абавеснай адказ на чымсці, якае ўжо калісць не правдай. Метаданы прынадзейнасці, правілы выканчэння тэрміна чы паўтарная верыфікацыя для кантэнту, чутлівага да часу, всё гэта дапамагае.

    Спрывяжванне ключовага факту

    Нават калі процес рэгружавання знаходзіць абсолютна правильны факт, яго размешчэнне ў середзіне дужа дугог блока зростае статыстычную верагоднасць таго, што яго працягнуцца не зазначыць. Факт застаецца тым жа; змянілася толькі яго пазицыя, і рэзультат стае горшым.

    Занадта многі падобныя варыянты

    Якщо чалавек у вашай командзе не можа абавесна сказаць, який інструмент чы дакумент падходзіць у данай ситуацыі, модель таксама не павяршыць роботу. Аб’еднайце перакрытыя інструменты чы усуніце майже ідэнтычныя дакументы прытым, калі яны не падаюць у контэкст.

    Частыя запытанні

    Чы інжынерыя контэкста заменяе інжынерыю запытанняў?

    Няма. Чыстыя інструкцыі заставаюцца часткай задання. Інжыніярство контэкста — глобальная задача, якая іх абгрунтуе: падзець пра тое, што ўсё ж такі бачыць модель па-разна з самай інструкцыі.

    Чаму большая колькасць інфармацыі можа пагоршыць рэзультаты?

    Увага — глобальны ресурс, як для модэляў, так і для людзей. Чым больш матеріялу трэба працаваць, тым вышы рызык працягнуць увагу ад важлівай деталі, так сама як людзі страждаюць, калі трэба знайсці адну важлівую лінію ў дужа дзяўжынам дакументе.

    Чы роўныя большыя вікна контэкста спрацоўваюць проты гэтай проблемы?

    Яны дапамагаюць, задаючы прастор, але не усуваюць саму прычыну. Інфармацыя ў середзіне дужа дзяўжынных даных застаецца менш надзеянаю, а час адпаведзення і вартасцы вырастаюць з ростам об’ёму даных. Выбіранне таго, што павінна ўвайсці, застаецца значным нават у разы большых вікнаў.

    Ключовыя выводы

    • Спрытваць даныя, якія прымае модель, як спецыяльна структура, створаная для кожнага вызову, а не як просты лог з можлівасцю толькі дадзення новых запісаў.
    • Рэштычна кераваць усіма чатырамі складовымі: інструкцыямі, процесам выкарыстоўвання інформацыі, памяцюю і інструментамі — кожны з яных можа не працаваць сваім чынам.
    • Збираць максимальна інформацыю, агрэсіўна ранжаваць елементы, ствараць падсумкі практычнага досвяду і размешчаць важлівы контэнт на пачатку або ў канцы.
    • Калі робот паслабляеся працэсе виканання задач, перагледзіце, што яму было данае, прычаму перапісваючы тое, што яму было сказанае.
    • Большы прыемак даўае можлівасць зберагчы больш дакументаў, але не гарантуе їх захавання; ключовая задача застаецца — передаць толькі трэйцяныя файлы, а не весь кодавы база.