Галоўная / Артыкулы / Практычныя прытамкі: Я створыў агента для практычнага выправлення дакументаў з ай-тэ. Ось усі спосабы, якімі ён абмануў.

Практычныя прытамкі: Я створыў агента для практычнага выправлення дакументаў з ай-тэ. Ось усі спосабы, якімі ён абмануў.

Практычныя прытамулкі: Я створыў агента для выправлення дакументаў за дапамогай AI. Цікава, якімі спосабамі ён абмануў: кантракты, чекі, а таксама месцы для вставкі коду для команд, якія выкарыстоўваюць гэты патэрн.

1489 слоў

Існавайце гэта як перапрацоўаны варыянт ідэй з артыкула “Я створыў АІ-агента для практычнай правакі дакументаў. Ось усі спосабы, якімі ён спачатку сам сябе ахваліў.” для працавальнікаў: чыстыя этапы, аранжаваныя блакі коду і прыметкі з восстанавлення, якія застаюцца пасля перадачы. Этап “Апглэв” найкраща працюе, калі яго розглядаць як вимерную плошчу. Запісаўце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметку з вярненням да пачатковага стану, прычым расшырюючы сферу дзеяння. Храніце настройкі параду ўнутры коду прыемленае. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцыяй должны знаходзіцца ў аднам месцы, куды працавальнікі можуць адбавляць контроль, не чытаючы весь структураны код.

- print(tqdm.__version__, sys.version, sys.platform)
+ print(tqdm.__version__, sys.version, sys.platform)

Як усе гэта вяліся разам

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

Першы раунд: tqdm — прадзея, якая нічога не выправіла

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

Found 9 Markdown file(s). Starting audit...

Auditing: .github\ISSUE_TEMPLATE\bug.md
  Generating repair for snippet #1
  Verifying generated repair for snippet #1
  Publishing verified repair(s)...
  VERIFIED REPAIR: Branch published
- print(tqdm.__version__, sys.version, sys.platform)
+ print(tqdm.__version__, sys.version, sys.platform)

Цяжба 2: клік — неудача, якая павтарылася шасць разоў

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

Auditing: docs\advanced.md
  Generating repair for snippet #2
  Verifying generated repair for snippet #2
  [Reflection Loop 2/3] Revising repair for snippet #2
  ...
  [Reflection Loop 3/3] Revising repair for snippet #3
  NOT PUBLISHED: Generated repair failed verification:
    ModuleNotFoundError: No module named 'click'

Знаходжэнне асалёвай прычыны — з Докерам, ручная работа

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

command.extend(["-v", f"{project_dir}:/workspace", "-w", "/workspace", "-e", "PYTHONPATH=/workspace"])
docker run --rm -v "C:\temp\click_test:/workspace" -w /workspace -e PYTHONPATH=/workspace python:3.10-slim python -c "import click"
# ModuleNotFoundError: No module named 'click'

docker run --rm -v "C:\temp\click_test:/workspace" -w /workspace -e PYTHONPATH=/workspace/src python:3.10-slim python -c "import click; print(click.__version__)"
# import works... but:
# importlib.metadata.PackageNotFoundError: No package metadata was found for click

Рашэнне: хавайце здогадкі, дазвольце pip выканаць свою роботу

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

Павторны запуск процэсу з усталяванымі паследнімі змянамі

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

@cli.result_callback()
def process_pipeline(processors, fin):
- iterator = (x.rstrip("\r\n") for x in input)
+ iterator = (x.rstrip("\r\n") for x in fin)

Што бы вы сказалі людзі, яка тэстуе такога агента AI

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

Якое ў настоючы час становішча

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

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

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

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

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

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

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

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

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

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

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

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

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