Інжыніерыя запросаў чы контэкст, кантроль, цікл? Діагностика AI-агентаў па шарам.
Інжыніерыя запросаў, інжыніерыя контэкста, інжыніерыя кантролю і інжыніерыя ціклаў кожная неякі спосабом збываецца. Процедура, якая спачатку аналізуе следы, выявляе той шар, які зламаўся.
Калі агент AI пасягаець у рэальных умовах, каманды часта спарчуюцца пра слоўнік у замест на доказы: адны інжынеры хочуць кращы запит, іншыя звычайна карагуць контэкст, а трэціяя — інструменты для керавання. Інжыніерыя запитаў, контэкста, інструментаў і цыклаў не ёсць супернічаючымі падходамі; гэта чатыры шары, і кожны з іх пасягаець сваім уласным, адразу відзначальнымся спосабам. У гэтым кярыянцы раз’яснюецца кожны шар на прыкладзе маленькага кодаванага агента, а пасля прыводзіцца алгорытм, як спачатку выявіць, які шар на самай працэ пасягаець, перш чым змяніць які-небудзь код.
Чатыры шары агента AI ў стысласці
- Інжыніерыя запітаў формуе інструкцыі, якія даўаюцца модэлю.
- Інжыніерыя контэкста вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка вялікая частка в
- Інжынерыя кантролю стварае среду, у якой працюе модель: інструменты, памяц, файлы, правыя на доступ і механізмы вярнення.
- Інжынерыя цыклу проектуе цыкл, які падтрымлівае працю системы, контролюе ўласны прыгон і выявляе момент завершэння.
Найдорожэйшыя проблемы з агентамі выклікаюцца выправленнем каштоўнай з гэтых складоў.
Калі дэма працюе, а рэальная система — ні
Цяперашняя ситуацыя знаёмая. Агент выглядае бездоганна ў дэме. Чэрез калькі дней пасля запуску ён начынае цыклізаваць, выкорыстоўваючы токены, трапляецца забываць тое, што яму сказалі гадзіну раней, або зламваецца, калі інструмент вяртае неспадзяваны пакет дадзеных.
Команда дзельцяецца на групы. Адзін прапаняе перапісаць запит, іншы называе гэта проблемай контэксту, а трэці падозрюе прыстрой для фіксаціі. Без спяльнага спосабу выявлення падзеі, два дні на вылечэнне ператвараюцца на два тыдзены на перапісацю, таму што кожны патч падае на слой, які раней працаваў нормальна.
Гэта практычныя прычыны, чаму трэба трыважыць гэтыя чатыры тэрміны. Кожны з іх пазначае адзін конкрэтны момент, калі ўсё йдзе не так, і калі вы можете іх розразліцаваць, адлучэнне бяга прыемніка стае процэсам, а не гэмай з дагадкамі.
PACT: мнемонічны прыем для чатырох слоёў
Компактны спосаб прытрымліваць слоі ў галаве пад час інцыдэту — PACT: Prompt, Awareness, Control, Trajectory. Кожна слова паўтарае адну запытанне:
- Prompt: чы была задача чыста апісана?
- Awareness: чы модэль атрымала інфармацыю, якая яй патрэбна для гэтага крока?
- Контроль: чы можа час рэалізацыі выконваць тое, чаго прагне модель, безпечна і надзеяна?
- Траекторыя: чы паўтараючыся процес прыводзіць да канца, які можна параболіць?
Мета — не ствараць ўсё новыя тэрміны. Цэлі — зробіць межы між типамі неудач достатньма яснымі, каб ўспамінаць іх, калі ўспыхвае проблема.
Як з’явіліся шары і чаму важлівы порядак
Тэрміны з’явіліся прыблізна па порядку, калі кожны з агентаў атрымоўваў новую можлівасць:
- Інжынерыя запрошэнняў (прыблізна з 2022 по 2024 год) была першай навыком: формулюванне, прыклады, абмежэнні і шаблоны для канкрэтнага вызову модэлі.
- Інжыніерыя контэксту (прыблізна 2024–2025 гг.) стала ключовай, калі агенты пачалі адночасна обрабоцваць запрашаныя дакументы, історыю кансэртацый і ваказаннія інструментаў. Акцэнт перасунуўся з спосабу сформулювання запиту на тое, што на самай працэ паказвае модель. Компаніі Anthropic, LangChain і Chroma спадзяліся на папулярнасць такага падходу сярод спецыялістаў, а коментары Андрэя Карпатыя спадзяліся на ўключэнне гэтай тэмы ў шырэйшыя інжыніерыяныя дыскусіі.
- Інжыніерыя выкарыстання ресурсаў (пачатак 2026 г.) стала цэнтрам увагі, калі агенты пачалі мець доступ да файлавай системы, можлівасць выканання каманд у шэлі і можлівасць працы працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўнікаў працоўніка
- Інжыніерыя ціклаў (середина 2026 года) — гэта найновейшая канцэпцыя. Нават калі ўжо є система керавання, яшчэ трэба выбраць, што будзе рабіцца на кожнай ітерацыі і калі ўстаць: спазіраваць, дзеяць, пераканацца, павтарыць чы прынікнуць. IBM мае адпаведныя поясненні ўжо ў своіх матэрыялах, якщо хочаце іншага падходу.
Этыя даты паказваюць, калі ція тэрмінологія стала популярной, а не формальныя вехі; кроме таго, на момент напісання ця тэрмінологія ўсё ўсё формуюцца. Важлівым моментам є тое, што нічога не было заменена. Кожны новы слой дадавалі на базе пярэдньаго, таму што кожныя падышкі ў автонаміі вымагалі сабе сае кантролю.
Інжыніерыя запросаў: локальны контракт
Інжыніерыя запыткаў — это мастацтва формулювання, структурування і адгукнення да адной інструкцыі так, каб адпаведнае адпаведзенне было болей прыгаднае. Без яе вы отрымваете нечыстыя інструкцыі, нестабільныя форматы выходных даных і модель, якая вынужана здагадвацца, што вы мелі на увазе.
У агенте для програмавання запытка на перагляд коду можа выглядаць так:
SYSTEM: You are a code reviewer.
Given a diff, output ONLY valid JSON:
{"issues": [{"line": int,
"severity": "low|medium|high", "note": str}]}
No prose. No markdown fences.
If there are no issues, return {"issues": []}.
Этот запрос стварае локальны контракт. Ён прызначае ролю, апісвае трансфармацыю (разлік змян, спіс проблем), фіксуе формат выходных даных да самых імен поль і дазволеных значэнняў серьознасці, а таксама визначае сцэнарій пустых даных, каб пасляэтапная обработка ніколі не мусела разбірацца з прозайскім тэкстам чы розысквам ключоў.
Часта гаворыцца, што інжынерыя запросаў ўжо застарела. Гэта не так; гэта самы внутранні слой. Кожны процес обработкі контэкста ў канцэ наступае да модэлю з інструкцыяй, і слабая інструкцыя ў чыстай форме все рава дае слабыя рэзультаты, толькі тепер упакаваныя ў вражаючую інфраструктуру.
Інжынерыя контэкста: курэйцыя ў межах бюджэту
Інжыніерыя контэкста — это процэс выбору для кожнага запытку тых дакументаў, історыі, апісаў інструментаў і мэмарыяў, якія будуць прадставлены, а таксама, з тым жа розумам, тых, якія не будуць прадставлены. Калі гэта ігнаруецца, модель даўа адпаведзі на астарэлай інфармацыі, спыніваецца чераз нерэлевантныя выкарыстоўваныя фрагменты або тыраець фокус, бо вікно заполнена матэрыялам, дадзеным толькі на випадак.
Стваральнік контэкста для агента-працоўніка можа выкарыстоўваць кандыдатаў, переранжаваць іх і стыскаць історыю:
def build_context(query, full_history, kb):
relevant = retrieve(query, kb, top_k=8)
reranked = rerank(relevant, query)[:3]
summary = summarize_if_long(
full_history, max_tokens=800
)
return {
"docs": reranked,
"history": summary,
"query": query,
}
Це можна спрыяць як чырпак: процэс адзыскання выклікае шырокі «сет» з восьмі кандыдатаў, перыяркаванне залічва тры найболей рэлевантныя, а історыя кантактаў сумарызуецца да прыблізна 800 токенаў толькі тады, калі яна становіцца дужа дзьвігучай. Функцыя вяртае маленькі, структураваны пакет даных, а не сыр'ё. Ключовыя навыкі — адбір, ранжыраванне і стысненне, а не проста велічына інформацыі.
Самэй таму найпашыльнейшая неправильнасць, што інжыніроўка контэкста значыць падачу модэлю большай колькасці інформацыі, зазвычай ўсуперш цяперашняя. Большы контэкст часта містіць больш шуму: застарэлыя інструкцыі, павтараючыяся факты і суперсуперечлівыя доказы. Большая частка работы заключаецца у выборы таго, што трэба адмовіцца.
Інжыніроўка контэкста — гэта шырэй, чым RAG
Генераванне з падагоджэннем на адзысканы контэкст — адна з тэхнік у рамках інжынерыі контэкста, якая абараецца этапам адзыскання інформацыі. Прыемпляр практыкі RAG можа выявіць васьмыя фрагменты і пераранжаваць іх да трох, як паказана вышэй. Інжынерыя контэкста таксама включае стысненне історыі, форматаванне апісаў інструментаў, падтрымку стану важлівых заданняў, падачу рэзультатаў пераканання назад у модель і адлік, што трэба выключыць.
Агент для кодавання без жаднага хранілішча вектараў усё рава сталкніцца з рэальной проблемай контэкста, якую трэба рашыць. Статус Git, ачыненыя файлы, памылкі кампайляра, рэзультаты тэстаў, чыргавы план і лог пярэйшых дзеянняў — усё гэта павінна дастацца да моделі у вядомай для викорыстання форме.
Інжынерыя адпрацоўкі інформацыі: межа межы намеру і адпрацоўкі
Харчы ўскладнення ў системе — гэта нечасть, не адносна конкрэтнага модэлю: інструменты і доступ да файлаў, памяць, якая застаецца, правіла дазволаў, «піскувыя коробкі», аналіз дзеянняў, а таксама все, што выканаецца у разы абыякавасці. Без хорашых харчоў ускладнення вы отрымуеце агента, які добра разумее ситуацыю, але не можа на гэтым адразу дзеяць, або агента, які дзеяе, але не мае надзеянага спосабу вярнуцца да нормальнага стану, калі выклік інструмента выклікае абыякавасць.
Прыклад паказвача выкліку інструмента ілюструе гэю ідею:
def call_tool(tool_name, args, retries=2):
for attempt in range(retries + 1):
try:
result = TOOLS[tool_name](**args)
log_trace(tool_name, args, result, status="ok")
return result
except ToolError as e:
log_trace(tool_name, args, str(e), status="failed")
if attempt == retries:
return {"error": str(e), "recoverable": False}
args = repair_args(args, e)
Кэшэйдж не прагне рашыць задачу. Ён кантролюе граніцу межу тым, калі прасівае модэль, і тым, што робіць рэальная система. Кожная спроба фіксуецца з яе аргументамі, рэзультатамі і статусам. Працоўная невыконанасць спрыяе абмежанаму павторным запуску з пасправленымі аргументамі, а калі павторныя спробы заканчываюцца, ён вяртае структураваную памылку, пазначаную як нерэкаверабельную, такім чынам вызываючы аплычальнік отрымае даны, пра якія можа робіць выводы, а не эксцэпцыю, якая зупініць роботу.
Існуе спадчыннасць спытацца прыравняць кэшэйдж да будзь-каго фрэймворку агента, які вы інсталавалі. Фрэймворк з’яўляецца як каркас; кэшэйдж – это сукупнасць конкрэтных рашэнняў, якія вы прыменяеце на яго аднойчыну: што логуецца, што робіць пасля невыконанай вызову, які стан застаецца пасля збою, якія команды дазволеныя, і як рэзультаты выканання прадаюцца назад модэлі.
Інжынерыя ціклу: контракт завершэння
Інжынерыя цікла апішае работу кожнай ітерацыі, спосаб, якім агент выявляе, чыргуецься ён уперед, і, што найважлівейша, умовы для зупінкі. Яго типовая працоўная нядача — безмежны цікл: агент, який продовжае выклікваць інструменты і выкорыстоўваць токены, таму што ніхто ніколі не паведаміў яго, што ён завершыў або застряг.
Мінімальны кантролер выглядае так:
def run_loop(task, harness, max_iters=15, stall_limit=3):
state = init_state(task)
stalls = 0
for i in range(max_iters):
action = plan_next_step(state)
result = harness.call_tool(action.tool, action.args)
state = update_state(state, result)
if is_goal_met(state):
return state, "success"
if made_no_progress(state):
stalls += 1
if stalls >= stall_limit:
return state, "stalled — escalate"
else:
stalls = 0
return state, "max iterations reached"
Хутчэйш, тут застосаваны калькі лімітавання. max_iters абмежвае загальную колькасць ітерацый, is_goal_met дазваляе выйсці пасля досягнення меты, а лічылка застою фіксуе спадчыя ітерацыі без прыбылі, перазначаючыся кожны раз, калі прыбыль вяртаецца. Пасля stall_limit застойных крокаў цыкл вяртае адзінчы статус, які вымагае паднятня прыблуды, а не працавання без змян. Кожны шлях выйсця вяртае чыстае паводзе, што спакойна дазваляе класіфікацыю запускаў пасля ўсьго.
Цэнтральная ідея — контракт завершэння: чыстая мета, меркаваныя сігналы прыбылі, абмежаваныя праказы, бюджэты на час і токены, крок пераканання, а таксама чыстае правіла дзеяння, калі прыбыль застаецца. Па імплементацыям тых сабе ідэй у TypeScript, адзірніце bounded agentic loops для выкарыстоўвання інструментаў LLM.
Інжынерыя ціклу і інжынерыя кантролера часта плутаюцца. Кантролер вялічыць, што агент можа тыкнуцца, і як адмаўляюцца нештатныя ситуацыі на рэвэлі окремых інструментаў. Цікл знаходзіцца вышэй і адначасова вялічыць поведэнне на кожны крок, укладаючы ў сябе момент, калі павінна завершыцца вся робота.
Чатыры слоі па боку ад боку
- Prompt (P): адпавядае за інструкцыю. Тыповыя нештатныя ситуацыі: модель неправа расцёнівае намер або вяртае інфармацыю неправым форматам. Першы аспект, які трэба пераглядзець: сам выход.
- Context (A): адпавядае за стан, готавы для моделі. Тыповыя нештатныя ситуацыі: модель дзейнае на застарэлай, відсутней або відвлекаючай інфармацыі. Першы аспект, які трэба пераглядзець: кадры контэксту за кожны крок.
- Harness (C): адпавядае за выкананне і вяснаванне. Тыповыя нештатныя ситуацыі: помылкі пад час вызова інструментаў, слепыя праказы або немагчымасць вяснавання ситуацыі. Першы аспект, які трэба пераглядзець: неудачныя запісы ў логах інструментаў.
Разлік бага ў кантролеры і бага ў цыкле
Самая эфектыўная способа — гледзець, чы два разныя бага ззаўні выглядаюць ідэнтычна. Агент, застрялы ў цыкле з-за неяксавага кантролеры, і агент, застрялы з-за неяксавага адказвання інструменту, паказваюць аднаковыя сімптамы: ён продовжае працаваць, калькуляцыі продовжаюць растаць, і ніхто не разумее прычыны. Короткі чарткі разлучае іх ад іншых прычын неяксавасці.
1. Перагляньце лог вызоў інструменту
Вызовы, якія ўсе успешныя з правдападобнымі рэзультатамі, адночаса калі агент павтарае вызов аднаго і таго ж інструменту з майже незменнымі параметрамі, указваюць на цыкл.
2. Шукайце павтаральныя неяксавасці інструменту
Якщо якісь засобы знова і знова не функцыонуюць, а агент прагне ўсё тое ж, не змінюючы свага падходу, трэба падазроўваць систему керавання.
3. Пераканацца, што можа бачыць модель
Якщо модель, здаецца, забывае які-небудзь факт пасля часткі виконання задання, трэба пераглянуць стварэнне контексту: адсечкі, замену, стысненне або спосаб перадачы стану між крокамі.
4. Перш за ўсё пераканацца ў рэзультатах
Якщо засобы працавалі, контекст быў точны і цыкл завершыўся правільна, але адпаведзь яшчэ некоректная, трэба паглядзець на запрос.
Елементарная правіла
Багі ў цыкле крыюцца ў рашэнні пра тое, што будзе далей. Багі ў системе керавання крыюцца ў тым, што выходзіць з-пад кантролю, калі ўсё ламаецца. Багі ў контексте крыюцца ў тым, што можа бачыць модель. Багі ў запросе крыюцца ў тым, пра што вы прасілі.
Адпаведзьце, які з чатырох пытанняў паслужыць кераментам, перш чым чаго-небудзь правяць.
Аналіз прыкладу: рэвізор запрасоў прыўязкі, які не могаў зупыніцца
Уявіце команду, якая стварае агента для кодавання, які рэвізуе запрасы прыўязкі. Тэставанне праходзіць гладка. У працоўным режыме дзеякія рэвізіі трываюць больш чым 40 хвілін за аднам запрасам прыўязкі і ствараюць неспакоўны рахунак.
Першая тэорыя — запит занадта нечысты, і агент занадто даглыбна ўсё аналізуе. Запит перапішаны; нічога не змінілася. Другая тэорыя — контэкст: можа, агент на кожным кроцы перачытае весь репазітарый. Але логія паказвае іншае. Адзыскванне дакладна сфармавана, і запрашаюцься толькі тыя файлы, якія маюць значэнне.
Потым хтось адзёрна ўважна чытае лог выканання інструментоў. Агент паўтараючыся вызывае свой інструмент для адканання тэстаў, і кожны такі вызыв завершаецца без адхыленняў. Насамперад, тэставы комплект не працуе правільна з-за нестабільнага інтэграцыйнага тэста, які не мае стосунку да прагласу. Агент продовжае прабаваць выправіць гэтую проблему за дапамою несвязаных з нею змян у кодзе і паўтарачога адканання тэстаў, адколі нічога не паведамляе яго, што ён вжыў достатню колькасць спроб па выпанаванню гэтай падметы і трэба зупініцца, а таксама паведаміць вышэйшыя інстанцыі.
Гэта не проблема з запытам, не проблема з контэкстам і не проблема з інструментам; інструменты працавалі абсалютна так, як было запланавана. Це чыстая баг-петля. Пашаговы аналіз паказвае, як дасягнуць такога вывару.
Шаг 1: паўнастацьце, што інструменты працуюць
Успешныя выканання, зафіксаваныя ў логу, апраноцаваюць найпростыяяя проблемы з інструментамі, такія як команда, якая ніколі не выкананая, або адаптар, який паўтараючыся выклікае працэсы.
Шаг 2: параболіце стану між ітераціямі
Рэзультат тэста ўключаны ў контэкст агента, а выкарыстоўванне дакументаў адбываецца правільна, таму модэль не прыпускаеся паспаміну доказаў.
Шаг 3: перакананне ў збліжэнні
У рэпазітарыі відбываюцца змяны ў кожной ітерацыі, але сігнал пераканання, які мае значэнне, ніколі не павышаецца. Не існуе датчыка застою і няма ліміту па спробах дасягнуць таго ж падцялевай мэты.
Шаг 4: навучэнне кантролера выкрыты ўстою
Рашэннем ёсць невялікі фрагмент логіки кантролера, які параболіце «падпіс» прагрэсу між шагамі:
if progress_signature == previous_signature:
stagnant_steps += 1
else:
stagnant_steps = 0
if stagnant_steps >= 3:
escalate("no measurable progress")
stop()
progress_signature можа быть чым заваць, што адражае значымы прыступ працы, напрыклад, сукупнасць неудачных тэстаў плюс іх паведамленні пра адказы. Якщо ён не зменяецца, лічылка застою расте; пасля трохо застойных крокаў кантролер паднімае проблему з абясненнем і зупіняецца. Будзь-яя рэальная змяна перазначае лічылку.
Можна зайсці даўжэй і абмежыць колькість спроб для кожнай пазнакі неудачы, а не толькі загальную колькість ітерацый. Разлік важны: падзесят практычных ітерацый можа быць абсалютна нормальным, тады як падзесят спроб проты адной невыправнай неудачы тэста — глыбока трата часу. Рэальны спосаб выправлення — не робіць модэль менш упорнай, а даць кантролеру адзначэнне таго, калі настаў застой.
Аналіз прыкладу: абмежэнне, якое зникае з контэксту
Уявіце агента, які на пачатку міграцыі перакананы, што нічога не павінна нашкодзіць існуючым кліентам. Чэрез сорак ходоў дыялог стае сконцентраваным, і гэтыя абмежэнні зникаюць у падсумку. Тады агент пропануе змяну схемы, якая можа нашкодзіць.
Це выглядае як некоректныя міркуванні, але прычына крыўдзіцца інде. Пораўняйце контэкст, які модель фактычна отрымала на разныя ходы. Якщо абмежэнні было на пятым ходу, але ўтратылася на сораковым, то рашэнне лежыць у інжынерыі контэкста: зберагаць критычныя інварыянты окрема ад дыялогу, прымусіць падсумкі перадаваць явныя абмежэнні, і перастаць вважаць неапранутую історію ўсім джерелам правды.
Фраза «модель забыла» ніколі не ёсць повным діагназам. Корыстным є пытанне: што на самай працоўцы было данае модэлі.
Шары, а не замены
Кожная новая даспэктна базуецца на старэйшых, а не заменяе іх. Агент для вырабаткі паводзіць ясны запрос у рэтельна выбраным контэксте, запускае яго ў надзеяным сервісе і керуе всім цым за дапамою цялеспрямованага циклу. Парада тэрмінаў адбіваецца ў адпаведнасці да таго, што командам згодна часу было неабходна дадаць: яснейшыя інструкцыі, потым краща выбраная інфармацыя, потым среда выканання для модэлю, і нарэшце кантролер, які дазволяе гэтай средзе працаваць без прыгляду. Якщо вы вирашаеце, чыі рантайм, чыі фрэймворк, должен кераваць гэтым зовнішнім циклам, порэвануе рантаймовых сервісаў і складзеных фрэймворкаў паказвае ўсі перакіды.
Па PACT:
- Запрос: адзначыць інструкцыю.
Потым паспаравайце рашэнне з неудачай. Модэль, якая неправалява ясная задача, патрабуе негледзячай працы. Модэль, якой не хапае фактов, на якія яна завісіць, патрабуе працы з контэкстам. Рашэнні, якія не ператвараюцца на надзеяныя дзеянні, патрабуе працы з адаптаванням. Дзеянні, якія ўспехоўна выкананы, але загальны процес так і не даходзіць да канцэлі, патрабуе працы з петлямі.
Пашырэныя запытанні пра шары агента
Чы не ёсць інжынерыя адаптавання проста іншым названнем для фрэймворку агента?
Няма. Фрэймворк супліквае элементы для будавання. Комплект для выкарыстоўвання складаецца з рашэнняў, якія вы прымілі падчас ўскладнення іх: адносна працы інструменту ў разе збою, захаваны стан, логаванне, правыя доступу, а таксама спосаб, якмо рэзультаты вяртаюцца да модэлю.
Чы трэба інжынерыі цыклаў для асистэнта, які задае адна запытанне?
Не сапраўды. Інжынерыя цыклаў становіць значэнне тады, калі агент выконвае калькі дзеянняў па заданню і должен сам або за дапамогою коду кантролера рашыць, чы робота завершана. Бот для запытанняў і адказаў у адну тур працуе без або з мінімумам цыклаў, якія трэба проектаваць.
Кой шар трэба выучыць першым?
Пачніце з інжынерыі запытанняў і контэксту, пасля чаго перайдзіце да комплекту для выкарыстоўвання і цыклаў. Перш чым можаце дыбагаваць час выканання і код кантролера, трэба розразліць паслабленыя інструкцыі ад відсутніцы стану.
Чы адна бага можа распрастраńвацца на калькі шароў?
Так, і самэ гэта частаюць найцяжэйшымі кейсамі. Баг у контэксте можа сховаць сігнал пра прыбылі гэтапа ў цыкле, што тады выглядае як баг цыклу. Неабходна праследаваць прычыну абяронкі на всіх ўзлётах, а не проста ліквідаваць першы видны симптам.
Спіс пераконтрацыі для наступнага інцыдэнту з агентам
- Чатыры тэрміны описваюць механізмы кантролю, а не супернікаючыя тэндэнціі: інструкцыю, стан готовасці модэлю, выкананне і вяснаванне, а таксама павтаральны прыбылі з правілам зупінкі.
- Кожна расследаванне трэба пачынаць з аналізу логаў, а не з запытанняў: трэба запытацца, што бачыў модэль, што рабіў час выканання, што змянілася межы ітерацыямі і чаму кантролер выбраў продажчэй выканання.
- Успешныя вызовы інструментаў, якія павтараюцца з майже ідэнтычнымі аргументамі, указваюць на проблему ў цыкле; павтаральныя абяронкі з бездумным прабавамі павтарыць указваюць на проблему ў системе кантролю.
- Неабяжнае задаць цыклам чыстае апісанне стану застою, жадаўна па паслявісі абыякшання, а таксама шлях адгуклівання.
- Зберагаць стойкія абмежэнні за межамі компрэсаваемай історыі, каб ўпакоўкаванне не магла іх стырнуць.