Галоўная / Артыкулы / Практычныя прытамулкі: як pi разрабатвае агента, які можа працаваць дзяўно.

Практычныя прытамулкі: як pi разрабатвае агента, які можа працаваць дзяўно.

Практычныя прыказкі: як pi разрабатвае агента, який можа працаваць дзяўно, — кантракты, перакрычанні та слоты для коду для команд, якія викорыстоўваюць гэты патэрн.

2793 слоў

Існавайце гэта як перапрацоўаны варыянт ідэй з статті “Як pi праектуе агента, які можа працаваць дзялейна”, адпрацоўваны для аператараў: чыстыя этапы, аранжаваныя блакі коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы.

AI

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

Спецыфікацыя з 3,446 ліній робіць “чы можа ён продаваць працу з таго месца, дзе зупініўся” першай абмежэнням для всего часу выканання

Этап спефікацыі з 3 446 лініямі працюе наўжоўды лепш, калі яго розглядаць як вимерную паверхню. Запісаўце адна «золатая» версія транскрыпцыі, адзін прыклад неудачы і запіс пра вярнэнне да поперадньага стану пры расшырэнні масштаба. Разглядзайце гэты этап як кантракт межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задачы. Храніце стан графа як плоскі і з адначытаемымі дадзеннямі. Вкладаныя блокі дадзеных маскуюць інфармацыю пра тое, який вузел запісаў кожнае поле, і спакшуюць возз'яднанне пасля перарываў.

«Проста запісаць паведамленні» недастатня

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

Запісайце намер, а потым дзейвайце

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

Чатыры слоі стану сесіі

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

tree (shared, append-only)          lanes
a ── b ── c ── d                    main            → d   (op log: …)
      └── e ── f                    slack:171943…   → f   (op log: …)

global facts: name = "Refactor auth", label(b) = "checkpoint-1"

Тры відменнасці операцый

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

Контекст расте толькі ў канцы

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

R   step_attempt          request in flight, context ends at user message U
    session.appendMessage(M)   caller resolves here
R   write_deferred         full payload, provisioned id
E   assistant message A    provider cached [.., U, A]
E   message M               checkpoint applies the write; tail append

Переплненне мае толькі адну можлівасць

Калі проект Overflow мае толькі адзін этап, перад змянайом код неабходна ясная дэфініцыя вхідных даных, адпаведальнага за этап адпаведальнага і крэтарыяў выходу. Аператары должны магчыма было перазапускаць этап з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабходна аддзеўнаваць дакументацыю як пра стандартны ход задачы, так і пра шляхі ўсунення праблем. Перапрыбуткі, людзкія пераказы і обработка некоректных паведамленняў ёсць часткай продукту, а не дадатковым элементам пасляўпрацоўкі. Неабходна людзкая аправарэнне для тых крокоў, якія выкалічваюць грошы або змянююць даныя у працэсе виробніцтва. Компіляцыйныя налашчэнні не ўзроўнаваны з повнасцю функціоналу продукту. Калі проект Overflow мае толькі адзін этап, перад змянайом код неабходна ясная дэфініцыя вхідных даных, адпаведальнага за этап адпаведальнага і крэтарыяў выходу. Аператары должны магчыма было перазапускаць этап з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце таму, каб гэты этап выступаў як контракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы всім элементам, задаць крэтарыяў успеху і не прабывайце прыймаць часткова завершаныя рэзультаты без паведамлення.

function isRecoverableLength(message: AssistantMessage, desiredMaxOutput: number): boolean {
  if (message.stopReason !== "length") return false;
  if (desiredMaxOutput > 0 && message.usage.output >= desiredMaxOutput) return false;
  return true;
}

Пяць пунктав збою ў рамках адной вызову інструмента

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

E   assistant message, calls c1, c2
X1  before before_tool                nothing durable for c1
H   before_tool(c1)
X2  decision made, nothing written    same as X1
R   tool_started(c1)
X3  tool executing
H   after_tool(c1)
X4  hook interrupted                  same durable state as X3
E   tool result c1
X5  result durable                    c1 finished

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

Калі працуеце з стадыяй «A – павернутая смуга», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі список пераконтролюе чыстасць пазнейшых змян у кодзе. Зберагаюце канфігурацыю пазней да коду прыемлівача. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аудыт без неабяжлівага чытання всей структуры. Ставяце контрольны пункт пасля дорогіх крокаў. Продовжэнне работы не должна занова ставіць плату за той самы вызов LLM, калі аператар перапрыяўляе роботу да пазнейшага вузла.

Спачатку запісваецца бухгалтерскі ўчёт, а правільнасць вылагоджваецца пазней

Калі працуеце на стадыю «Запіс у кнігу рахункоў», спачатку запісайце контракт: неабходныя даны, сигнал успеху і тое, што выканаецца у разе частковай няудачы. Такі список пераканаецца дапамагае залічваць пазнейшыя змены коду чыста.

Конкурэнціі рашаюцца толькі двума способамі

Процесы рашингу працуюць наякша, калі іх розглядаць як вимерную паверхню. Зафіксавце адны «золаты» прыклад работы, адну справу з бягамі та прыметкі па поверненню да пачатковага стану пры перадзеяванні масштаба. Запісваўце часы выканання і косты токеноў або запытак праза функцыйнае рэзультат. Відкрытыя данні пра косты з’являюцца рана, таму не будзе неспакою з рахункамі, калі процес перейдзе з дэма-сераверу ў спяльныя среды. Храніце стан графаў у простам і типаваным формате. Вкладзеныя блокі маскуюць інфармацыю пра тое, який вузел запісаў якое поле, і спакшваюць продажчэнне роботы пасля перарываў.

Перакананне ў відновленні сама сябе

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

Тэставанне праз брутальную перыябрацію кожнай точкі зламу

Этап тэставання па методе брутальнай сілы працуе наяўна, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідеальны прымер роботы, адзін кейс неудачы і прыметкі па адвярненню змян пры расшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вяснавання ситуацыі. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є часткай продукту, а не наступным этапам дорабачання. Храніце стан графаў у простам і типаваным формате. Вярнутыя структуры данных маскуюць інфармацыю пра тое, який вузел запісаў кожнае поле, і спакоююць працэс пасля перарываў. Этап тэставання па методе брутальнай сілы працуе наяўна, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідеальны прымер роботы, адзін кейс неудачы і прыметкі па адвярненню змян пры расшырэнні масштаба. Спрыявайце гэты этап як кантракт між вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задайце критэрыя успеху і адмовіцеся ад мовчанкавага частковага завершэння.

Косцы

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

Заключнэ

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

Чек-ліст для эксплуатацыі

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

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

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

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

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

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

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

Прыметка для 58b36f32f593: не кладзіце ключы прадаўца ў репазітарый, задаце верхнюю межу токеноў на сесію і зберагачыце транскрыпты празаўсёды разам з фікстурамі для ацэнкі, каб пазнейшыя замены моделяў заставаліся порównанневымі.

Калі працуеце над пунктом 0 з ударжання безпекі, спачатку запісайце умовы: неабходныя даннэ, сігнал успеху і тое, што выходзіць на падчасныя абыекты. Такі чэк-ліст дапамагае заставаць пазнейшыя змены коду чыстымі. Дасведчывайце як «шчаслівы» шлях, так і шлях вяснавання разам. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў — гэта частка продукту, а не пазнейшая дапрацоўка.

Дзеянне паўжасткі 0/778: звярніце увагу на час выканання, клас памылкі і колькасць токенаў, выкарыстоўваных для гэтай змяны, а пасля, на аднойчынных пытаннях, а не на аналагіях, адначынна рашыце, чы хацеце застаўіць гэту змяну.

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

Дзеянне паўжасткі 1/778: звярніце увагу на час выканання, клас памылкі і колькасць токенаў, выкарыстоўваных для гэтай змяны, а пасля, на аднойчынных пытаннях, а не на аналагіях, адначынна рашыце, чы хацеце застаўіць гэту змяну.

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

Дзялейчык практыкі зміцнення 2/778: вы мераваеце час выканання, класыя ошибакі і витрату токенав для гэтай практыкі, а потым выявляеце, чы рашацься застаўіць змяну на адной пазначанай сэткі пытанняў, а не на адной лячбе.

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

Дзеянне 3/778 практыкы забезпечэння безпекі: замерайце час выканання, класы каштоўкаў і витраты токенав для гэтай практыкі, а потым вырашайце, чы робіць змены на адной основе фіксаванага набору пытанняў, а не на адной лячбе.

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

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

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

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

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

Дзеянні забезпечэння безпекі 6/778: вымерыце час выканання, класію памылак і колькасць выкорыстоўваных токенав для гэтай змены, а пасля выберыце, чы робіць яе, на адной пазначанай сэткі пытанняў, а не на адной лячбе.

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

Дзеянне паўжырання 7/778: зважыце час выканання, класію адказаў і колькасць токенаў, выкорыстаных для гэтага запісу, а пасля вырашыце, чы рашыцца застаўіць змяну на аднойчы назначанай сэткі пытанняў, а не на адзінокых прыкладах.

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

Дзеянне паўжырання 8/778: зважыце час выканання, класію адказаў і колькасць токенаў, выкорыстаных для гэтага запісу, а пасля вырашыце, чы рашыцца застаўіць змяну на аднойчы назначанай сэткі пытанняў, а не на адзінокых прыкладах.