Практычныя нататкі: пакрокавы гід па стварэнні асабістага агентнага памочніка
Практычны разбор тэмы «пакрокавае стварэнне асабістага агентнага памочніка»: кантракты, праверкі і гатовыя фрагменты кода для каманд, якія ўкараняюць гэты падыход.
Крыніцы: A Step-by-Step Guide for Developing Your Personal Agentic System.
У гэтым карточку параграфе перакладзена схема працы, якая практычная ад сыр'ёў да готовай сістэмы для: «Пашагоўныя інструкцыі па стварэнню вашай персональной агентскай сістэмы». Акцэнт ставіцца на практычныя крокі, чыстае перакананне ў правільнасці дзействаў і код, які можна проста падключыць у рэпазітарый, не прабуючы здогадвацца пра мету.
Практычныя тыюторыі
У фазе практычных тыюторыяў неабходна з'явіць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння прычыні перад зменым коду. Аператары должны магчымае перадзваніць крок з вядомай точкі контролю, не прабуючы здагадвацца пра схованы стан. Конфігурацыю трэба залічыць праза код аплікацыі. Файлы сераўнавання, храненні секрэтных даных і флагі функцый должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядзець, не чытаяўшы весь граф. Пры канектах, якія выкарыстоўваюць грошы або зміняюць даны праўдзівай працы, неабходна людская апрацоўка. Підключэння ў час компілявання не значыць, што аплікацыя ўжо цэласна готовая для выверты.
Паўныя інструкцыі па стварэнню савама сістэмы агентных LLM з локальнымі базамі дадзеных, прызначанай для вашага заведамства.
Ў паўных інструкцыях неабходна апісаць этапы, вказаць даныя, якія трэба ввесты, адпаведальнага за кожны этап і крытэрыя завершэння працы перад змінайом коду. Аператары должны магчымае перадзванаць этап з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабходна адзначыць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не дадатковым элементам пасля яго стварэння. Калі наступны этап — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходны даныя з пераканальванням схемы, чым вольныя тэкстовыя апісанні.
Введэнне ў агентныя сістэмы.
Для этапы «Введэнне ў агентны падход» неабходна перад змянай коду вызначыць даныя, якія падаюць, власніка крока і крытэрыя завершэння. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выконваецца, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны працэс. Пры застосоўкі грошэй чы змяне дадзеных у працоўным рэжыме неабходна людская апрацоўка. Прыеднанне элементаў у час компіляцыі не ўзначае повнайсткі рэалізацыі бізнес-функцый.
Вывад 1: Ваш LLM — не пісьменнік; гэта CPU.
Для этапы Takeaway 1 Your LLM неабяжна прадзеўкаванне вхідных дадзеных, адпаведнага адпавядача за крок і крэтарыяў завершэння працы перад зменым коду. Аперацыйныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не прабуючы спадарацца пра схованы стан. Спрэчвайце гэтую стадыю як кантракт межа вхіднымі дадзенымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, прадзеўкавайце крэтарыяў успеху і адмовіцеся ад бяспрэчнага частковага завершэння. Калі наступны крок — гэта код або вызов інструмента, валідаваць выходныя рэзультаты за дапамою структураваных даных з валідацыяй схемы крашчэ, чым за дапамою свабоднага тэксту.
Takeaway 2: Вам не трэба ўжо мільярдаў параметраў; вам трэба спецыялізаваная «команда агентаў».
Для этапы Takeaway 2 You Don неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавай версіі ў спяльныя асяроддзя. Апраўдка чалавека неабяжна на тых этапах, дзе выконваюцца грошовыя расходы або зміняюцыся даны для працы. Працэс складання коду не ўзначае абоўсюднай готовасі продукту. Для этапы Takeaway 2 You Don неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры перадзеі коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Адначасова дакументаваць шлях успеху і шлях вярнення да нормы. Перапрыбуткі, апраўдка чалавека і обработка нераспакаваных паведамленняў ёсць часткай продукту, а не елементамі пазнейшага доўнерэшання.
Рэальная проблема: чалавек протыма машыны.
Калі вы працуеце над стадзіяй «Рэальная проблема: чалавек», спачатку запісайце умовы: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разы ў частковай нявыполненасці. Такі спіс контроля дапамагае залічваць змяны ў кодзе чыста. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, нявыполненасць трэба можна адназначна прызначыць, а не шукаць прычыну сярод заплутаных процэсаў. Зрабіце перапытку пасля дорогіх крокаў. Сістэма не должна зноў ставіць плату за той самы вызов LLM, калі аператар праканае пазнейшы вузел.
Чаму адны запіты не работаюць, а сістэмы з агентамі — так.
Калі працюеце над этапам «Пачаму адна запітанне не работае», спачатку запісайце угоду: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага неудачы. Такі спіс контроля дапамагае заліцьварыць пазнейшыя змены ў кодзе. Спрэцьвачайце гэты этап як угоду межа данымі і перакананымі выходамі. Дайце назвы элементам, задаце крытэрыя успеху і не падтрымайце тыхі частковыя завершэння. Зберагаюце у кешы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзесланне ідэнтычных прамаўляючых частак — частая прычына вітрачання рэсурсаў.
Што такое архітэктура агента?
Калі працуеце над стадзіяй «Што такое агент», спачатку запісайце умовы кантракту: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены ў кодзе. Запісвайце час выканання і кост токеноў або запытаў праза функцыйнае рэзультат. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Зробіце контрольную пазнаку пасля дорогіх крокаў. Сістэма вярнення не павінна зноў нарахоўваць косты той самай вызову LLM, калі аператар перапрыяўляе працу да наступнага элемента. Калі працуеце над стадзіяй «Што такое агент», спачатку запісайце умовы кантракту: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены ў кодзе. Дакументавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыяўленні, людзкі контроль і обработка некорэктных дадзеных ўжо ёсць часткай продукту, а не пазнейшым дапрацоўкам.
Прыемпл-заснованая генерацыя (RAG) — трубопрацес.
Этап працы практыкі Retrieval-Augmented Generation RAG работае наяўней, калі яго спрыяваць як мерыябельную структуру. Зафіксавайце адну ідэальную версію транскрыпцыі, адзін прыклад неудачы і запіс пра ўскрычванне працы, перш чым расшырваць сферу дзеяння. Валідзіце маленькія, тэставаныя елементы замест амаль неконтрольваных скрыптав. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную конкрэтную адпаведальнасць, а не на заплутаную структуру практыкі. Раздзеліце правілы формавання частак і правілы пошуку інфармацыі. Змена адных не павінна вымагаць перапісвання іншых, калі змянююцца паказчыкі якосці.
Адзінакі сістэм RAG
Задачы на стадыўцы RAG лепша рашаюцца, калі іх спрыяваць як мерыемую плошчу. Зафіксавайце адны ідэальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Спрыяйце цій стадыўцы як даговору межаў уводных дадзеных і перакананых выходных рэзультатаў. Дайце назвы артыфактам, задаць крытэрыя успеху і адмовіцеся ад тыхнай частковай, непрыкметной рэалізацыі. Раздзеліце правілы фрагментавання дадзеных ад правілаў ўзяць іх. Змена аднаго з іх не должна прымусіваць перапісванне другога, калі змянююцца паказнікі якосці.
У працэсе RAG неабходны чатыры крокі
Чатыры крокі ў неабходных этапах работаюць наякша, калі іх спрыяваць як мерыемую паверхню. Зберагчыце адна ідэальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Запісвайце час выканання і кост токена або запыту праза функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спяльныя сераўеры. Раздзеляйце політыку чанкавання ад політыкі выкарыстоўвання дадзеных. Змена адной з іх не должна прымусіваць перапісванне другой, калі зменяюцыся паказнікі якосці. Чатыры крокі ў неабходных этапах работаюць наякша, калі іх спрыяваць як мерыемую паверхню. Зберагчыце адна ідэальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Дакументавайце як успішны, так і вярнэчы паты. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Ранжыраванне і агрэгацыя чанкаў
Для класыфікацыі і агрэгацыі этапа неабяжна пазначыць вхідныя даны, адпаведальнага за шаг і крэтарыя выходу пры зміне коду. Аператары должны магчымаць перзапуск шага з вядомай точкі контролю, не прабуючы спадарацца прыватны стан. Лепш выбіраць маленькія, тэставаныя елементы замест амаль неконтрольваных скрыптав. Калі шаг не выконваецца, прычына нехацкага рэзультата должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Неабяжна працаваць з апраўданнем чалавека ў тых моментах, калі выконваюцца вітраты чы зміняюцыся даны для працы. Компіляцыйныя налашчэнні не ўзроўнаўцяюцься з пачатковым станом бізнес-процэсаў.
Пашчытны шаг – генераванне.
Для этапы «Паўнайшы крок» неабходна перад змянай коду візначыць параметры вхідных дадзеных, адпаведальнага за крок і крэтарыя завершэння. Аператары должны магчымае запускіць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій этапы як даговору межаў вхідных дадзеных і перакананых выходных рэзультатаў. Даць назвы артыфактам, візначыць крэтарыя успеху і адмовіцца ад тыхнага частковага завершэння без паведамлення. Заставіць людзкую апраўду для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны для працы. Компіляцыйны падключэння не ўзроўнаўваецца з павнайшым завершэнням бізнес-процэсаў.
Заданні, якія працуюць выключна эфектыва ўжоўвашчы гэтую лінейную схему.
У стадыі «Заданні, які працуюць чырплёва», перш чым зменшыць код, неабходна ясная дэфініцыя вхідных дадзеных, адпаведнага адпаведальніка за крок і крэтарыяў завершэння. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульнаныя сераверы. Апраўдка чалавека неабходна для тых крокаў, якія выкарыстоўваюць грошы або зменяюць даныя ў працоўный серавер. Конпіляцыйныя налашчэння не ўзначаюць павнае адпрацоўвання продукту. У стадыі «Заданні, які працуюць чырплёва», перш чым зменшыць код, неабходна ясная дэфініцыя вхідных дадзеных, адпаведнага адпаведальніка за крок і крэтарыяў завершэння. Аперацыйныя працавнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Дакументаваць як «шчаслівы» шлях, так і шлях вяснавання. Перапрыбуткі, апраўдка чалавека і апрацоўка нерабочых паведамленняў ёсць часткай продукту, а не дадатковым элементам пасля яго стварэння.
/p>
Глобальны ўзроумленні: алгорытм работы
Калі працуеце над стадзіяй глобальнага ўзроумлення, спачатку запісайце умовы: неабяжныя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі спіс контроля дапамагае заліцьваты змяны ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына нявыполнення павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Павторная адправка ідэнтычных даных — частая прычына зайвага навантажэння.
Стратэгія глобальнага ўзроумлення з двума крокамі
Калі працюеце над стадзіяй «Двухэтапная глобальная логіка», спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у случае частковага нявыпання. Такі спіс пераконтроўвае чыстасць пазнейшых змян у кодзе. Спрыятлівае ставленне да гэтай стадзіі як да контракту межа данымі і перакананымі выходамі. Дайце назвы элементам, задаце крытэрыя успеху і не падтрымвайце часткова завершэння без паведамлення. Зберагачвайце інструкцыі стабільных сістэмаў і схемы інструментаў у кэшы. Перадача тых сабе ідэнтычных даных яўляецца частым выклікам для рэсурсаў.
Перапісва запытоў
Калі працуеце над стадзіяй перапісвы запітаў, спачатку запішыце контракт: неабходныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і кост токеноў або запітаў разам з функцыональнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы. Зробіце контрольную пазнаку пасля дорогіх крокаў. Функцыя вярнення не должна знову ставіць плату за той самы вызов LLM, калі аператар прабуе зноў выканаць пазнейшы вузел. Калі працуеце над стадзіяй перапісвы запітаў, спачатку запішыце контракт: неабходныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпання. Такі спіс пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Дакументавайце як шлях успеху, так і шлях вярнення да нормы. Прабулі, людзкія контролі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам.
Локальнае і глобальнае разумаванне разам
Этап локальнага і глобальнага аналізу працюе наяўней, калі яго спрыяваць як мерыемую структуру. Запісаўце адна ідэальная транскрыпцыя, адзін прыклад неудачы і прыметку па адкату перш чым расшырваць масштаб. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Задаўце ліміт токенав на кожны рунг і на кожную сесыю. Інструменты-агенты агрэсіўна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.
Маленькія мовныя мадэлі выграюць.
Маленькія мовныя модэлі працуюць наяўней калі іх расследжваць як мерыемую паверхню. Запісаце адна ідэальная транскрыпцыю, адзін прыклад неудачы і прыметку па адвярненню працы, прычым расшырваючы сферу дзеяння. Расследжвайце гэты этап як кантракт межа вхіднымі дадзеннямі і паверыжанымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце крытэрыя успеху і адмовіцеся ад тыхоўскага частковага завершэння. Задаце бюджэт токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгія ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.
Установіце свой локальны модэль за дапамою LM Studio.
Этап «Створыце свой сцэнарый» працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна ідэальная транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і кост токеноў або запытаў па боку ад функцыйнаых рэзультатаў. Візуабельнасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя сераўы. Задазвольвайце бюджэт на токены на кожны раунд і на кожную сесію. Інструменты з агентным падходам агрэсіўна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмаверсіям ператварыцца на неспакойныя рахункі. Этап «Створыце свой сцэнарый» працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна ідэальная транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Дакументавайце як успішны, так і вярнэчны шляхы працы. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных запытаў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Бібліятэка LLMlight.
Для этапы The LLMlight Library неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Калі наступны крок — гэта код або вызов інструмента, лепш выбіраць структураваныя выходныя даны з пераканальваннем схэмы, замест вольнага фармата тэксту.
Стратэгія чакання
У стадыі стратэгіі чанкінгу неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння пры перадзеіснавленні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій этапы як кантракту межы вхіднымі данымі і паверканымі выходнымі рэзультатамі. Даўце назвы артыфактам, узначыце перагляды успеху і адмовіцеся ад бяспечнага частковага завершэння. Заставіце людзкую апраўду для тых крокаў, якія вітрачаюць грошы або зменяюць даны ў працэсе. Компіляцыйныя налашчанні не ўзначаюць павнае завершэння бізнес-працэсу.
Стратэгія пошуку — локальныя базы дадзеных.
Для этапы «Локальныя базы даных у стратэгіі пошуку» неабходна прадзеявлення вхідных дадзеных, адпаведальнага за шаг і крэтарыя для завершэння працы перад змінайом коду. Аператары должны магчымаць перзапуск шагу з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваць час выканання і кост токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмовай асяроддзя ў спакульнаныя сераўсы. Заставіць людзкую апрацоўку для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даныя у працэсе. Працэс складання коду не ўзроўнаважваеся з повнасцю бізнес-функцый. Для этапы «Локальныя базы даных у стратэгіі пошуку» неабходна прадзеявлення вхідных дадзеных, адпаведальнага за шаг і крэтарыя для завершэння працы перад змінайом коду. Аператары должны магчымаць перзапуск шагу з вядомай точкі контролю, не падозрываючы прыхованы стан. Дакументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных запытаў ёсць часткай продукту, а не чымсь пазнейшам.
Рэшт — польскі язык.
Стратэгіі вбудоўвання і ацэнкі
Калі працуеце над стадзіяй стратэгій ацэнкі вбудоўвання, спачатку запісайце умовы: неабходныя даныя, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс дапамагае заліцьваты змяны ў кодзе пазнейша. Валіце маленькія, тэставаныя елементы замест большых скрыптаў. Калі якісь крок не выйшоў, невыпанне павінна вказваць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Перад налаштаваннем запітоў пераканайцеся ў рывні вярнага адтворэння на фіксаванай сэтке запытаў. Частае зміненне запытоў рэдка калі-небудзь выправляе слабую сістэму адтворэння інформацыі.
Стратэгіі кантэксту
Калі працюеце на стадзіі стратэгій кантэксту, спачатку запісайце кантракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс пераконтроўвае, каб пазнейшыя змены коду былі чыстымі. Спрыятлівае ставленне да гэтай стадзіі як да кантракта межа данымі і перакананымі выходамі. Дайце назвы артыфактам, задаце перакананні на успех і адмовіцеся ад тыхоўага частковага завершэння. Зробіце перакананне пасля дорогіх крокаў. Програма не должна зноў выклікаць той самы календар LLM, калі аператар прабуе зноў запрацаваць з пазнейшым вузлом.
Оптымаўцаванне запрошэння
Калі працюеце над стадзіяй оптымізацыі запросу, спачатку запісайце угоду: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцьварыць пазнейшыя змены коду. Запісвайце час выканання і кост токеноў або запытача праза функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментоў. Перадача таго ж прамэра зноў і зноў — частая прычына вітрачання рэсурсоў. Калі працюеце над стадзіяй оптымізацыі запросу, спачатку запісайце угоду: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс контроля дапамагае заліцьварыць пазнейшыя змены коду. Дакументавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных запытаў ёсць часткай продукту, а не пазнейшым дапрацоўкам.
Вядомасць 1: Заванесіце адзін модэль і абмовіцеся простым чатам.
Этап «Завантажыць 1» працюе найэфектывней, калі яго розглядаць як вімерную паверхню. Запісаўце адна «золатая» транскрыпцыю, адын прыклад неудачы і прыметку па поверненню да попярэдня стану пры розшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Задаўце ліміт токенав на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.
# Install the library
pip install llmlight
from LLMlight import LLMlight
# Initialize the LLMlight client
client = LLMlight(model='google/gemma-4-26b-a4b-qat', endpoint="http://localhost:1234/v1/chat/completions")
# Ask a question
response = client.prompt('What is the capital of France?')
print(response)
# [LLMlight.LLM] [INFO ] Model : google/gemma-4-26b-a4b-qat
# [LLMlight.LLM] [INFO ] Context strategy : disabled
# [LLMlight.LLM] [INFO ] Retrieval method : naive_rag
# [LLMlight.LLM] [INFO ] Embedding : {'memory': 'bert', 'context': 'bert'}
# [LLMlight.LLM] [INFO ] Alpha (sig. test): None
# [LLMlight.LLM] [INFO ] Chunk config : {'method': 'chars', 'size': 1000, 'overlap': 200}
# [LLMlight.LLM] [INFO ] LLMlight initialised.
# [LLMlight.LLM] [INFO ] Creating response with google/gemma-4-26b-a4b-qat..
# [LLMlight.LLM] [INFO ] No context strategy applied.
# [LLMlight.LLM] [INFO ] No context is provided into the prompt.
# [LLMlight.LLM] [INFO ] Running model: google/gemma-4-26b-a4b-qat
# The capital of France is Paris.
Этап 2: Створыце локальную базу знанняў.
У задачы 2 «Стварыць стадыю» найэфектыўнейша практыка — спрыяць яго працы як меркаванай паверхні. Запісаць адна ідэальная версія, адзін прыклад неудачы і прыметку па адвярненню змян перш чым расшырваць масштаб задання. Спрыяць цій стадыўцы як даговору межаў вхідных дадзеных і перакананых выходных рэзультатаў. Даць назвы кожным элементам, задаць крытэрыя успеху і не падтрымляць тыхню частковую завершэннасць. Зберагаць стан графаў у простам і тыпаваным фармаце. Вярнутыя структуры дадзеных маскуюць інфармацыю пра тое, які вузел запісаў кожнае поле, і спакоююць продажчэнне працы пасля перарываў.
# Import library
from LLMlight import LLMlight
# Initialize model and memory
client = LLMlight(model='google/gemma-4-26b-a4b-qat', endpoint="http://localhost:1234/v1/chat/completions")
# Create (or load) database
client.memory_init(store_path='knowledge_base.db')
# Add a PDF file to the database (extracts and chunks text automatically)
url = 'https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf'
pdf_text = client.read_pdf(url)
# Write to db
client.memory_add(text=pdf_text)
# Show the chunks
client.memory_chunks(1)
# Store to disk (SQLite DB is persisted automatically)
client.memory_save()
# Query on the new knowledge
response = client.prompt(query='What are attention networks?', response_format='Summarize in 3 sentences.')
print(response)
Заданне 3: Разлікі у выходных рэзультатах па выкарыстоўванню методаў стратэгіі кантэксту.
Этап «Вправа 3: Разлікі» працюе найэфектывней, калі яго розглядаць як вімерную плошчу. Зафіксавце адны ідэальны прыклад працы, адну справу з бягам і прыметку па вярнэнню да пачатковага стану пры розшырэнні масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультат. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавайнага рэжыма ў спяльныя асяроддзя. Храніце стан графаў у простам і тыпаваным фармаце. Вкладзеныя блокі маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакшваюць продовжэнне працы пасля перарываў. Этап «Вправа 3: Разлікі» працюе найэфектывней, калі яго розглядаць як вімерную плошчу. Зафіксавце адны ідэальны прыклад працы, адну справу з бягам і прыметку па вярнэнню да пачатковага стану пры розшырэнні масштаба. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану адночасна. Перапрыбуткі, людзкія контрольны пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
from LLMlight import LLMlight
# Initialize with NO context strategy
client = LLMlight(model='google/gemma-4-26b-a4b-qat', retrieval_method='naive_rag', context_strategy=None, top_chunks=6, endpoint="http://localhost:1234/v1/chat/completions")
# Create (or load) database
client.memory_init(store_path='knowledge_base.db')
# Query on the new knowledge
response = client.prompt(query='What are attention networks?', response_format='Summarize in 2 sentence')
print(response)
# Based on the provided text, attention networks utilize mechanisms like self-attention
# to perform tasks such as reading comprehension, summarization, and machine translation
# by capturing the syntactic and semantic structures of sentences.
# They operate by computing attention weights on "values" using "queries" and "keys" through
# a softmax function, with common types being additive or dot-product multiplicative attention.
from LLMlight import LLMlight
# Initialize with CHUNK-WISE context strategy
client = LLMlight(model='google/gemma-4-26b-a4b-qat', retrieval_method='naive_rag', context_strategy='chunk-wise', top_chunks=6, endpoint="http://localhost:1234/v1/chat/completions")
# Create (or load) database
client.memory_init(store_path='knowledge_base.db')
# Query on the new knowledge
response = client.prompt(query='What are attention networks?', response_format='Summarize in 2 sentence')
# [LLMlight.LLM] [INFO ] Chunk wise analysis on 6 chunks of text.
# Processing chunk: 0%| | 0/6 [00:00<?, ?chunk/s][08-06-2026 22:11:53] [LLMlight.LLM] [INFO ] Working on text chunk 1/6
# Processing chunk: 17%|█▋ | 1/6 [00:54<04:31, 54.24s/chunk][08-06-2026 22:12:47] [LLMlight.LLM] [INFO ] Working on text chunk 2/6
# Processing chunk: 33%|███▎ | 2/6 [01:18<02:26, 36.66s/chunk][08-06-2026 22:13:12] [LLMlight.LLM] [INFO ] Working on text chunk 3/6
# Processing chunk: 50%|█████ | 3/6 [01:30<01:15, 25.33s/chunk][08-06-2026 22:13:23] [LLMlight.LLM] [INFO ] Working on text chunk 4/6
# Processing chunk: 67%|██████▋ | 4/6 [01:51<00:47, 23.81s/chunk][08-06-2026 22:13:45] [LLMlight.LLM] [INFO ] Working on text chunk 5/6
# Processing chunk: 83%|████████▎ | 5/6 [02:47<00:35, 35.13s/chunk][08-06-2026 22:14:40] [LLMlight.LLM] [INFO ] Working on text chunk 6/6
# Processing chunk: 100%|██████████| 6/6 [03:14<00:00, 32.48s/chunk]
# [LLMlight.LLM] [INFO ] Running model: google/gemma-4-26b-a4b-qat
print(response)
# The provided context does not contain a formal definition of "attention networks."
# It only describes the mathematical mechanism of attention, which uses queries, keys, and values to
# compute output weights through methods like scaled dot-product or additive attention.
from LLMlight import LLMlight
# Initialize with GLOBAL-REASONING context strategy
client = LLMlight(model='google/gemma-4-26b-a4b-qat', retrieval_method='naive_rag', context_strategy='global-reasoning', top_chunks=6)
# Create (or load) database
client.memory_init(store_path='knowledge_base.db')
# Query on the new knowledge
response = client.prompt(query='What are attention networks?', response_format='Summarize in 2 sentence')
# [LLMlight.LLM] [INFO ] Global-reasoning on 6 chunks of text.
# Processing chunk: 100%|██████████| 6/6 [03:14<00:00, 32.48s/chunk]
# [LLMlight.LLM] [INFO ] Running model: google/gemma-4-26b-a4b-qat
print(response)
# Based on the provided text, attention networks are computational mechanisms that use queries, keys,
# and values to determine weights via a scaled dot-product and a softmax function.
# These networks can enhance model interpretability and, when combined with feed-forward layers, achieve a computational
# complexity similar to separable convolutions.
Занятка 4: Створыце дыялог между двума агентамі на тэму, якая іх цікавіць.
Для заняткі 4 «Створыце сцэну» неабяжна практычна візначыць інпуты, адпаведальную особу за кожны крок і крытэрыі завершэння пры перадзеяванні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехацкага рэзультата должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач. Неабяжна працаваць з апраўданнем чалавека ў тых моментах, калі выконваюцца расходы або зменяюцыся даныя для працы. Працэс складання коду не ўзроўнаважваецца з абсягам бізнес-функцый.
# Initialize
from LLMlight import LLMlight
# temperature=0.1 Lower means a More factual debate
# temperature=1.0 Higher means more creative discussion
# top_chunks=10 Use more retrieved context
# embedding='bert' Strong semantic retrieval
# retrieval_method='naive_rag' Standard RAG retrieval
# ====================================================
# Agent A: Data Scientist
# ====================================================
agent_a = LLMlight(
model="google/gemma-4-26b-a4b-qat",
retrieval_method="naive_rag",
embedding="bert",
context_strategy=None,
top_chunks=5,
temperature=0.7,
)
# Set the database for Agent 1
agent_a.memory_init(store_path="agent_a.db")
# Add some background information database for agent 1
agent_a.memory_add("""
Large Language Models are one of the most important step we did in the field of AI
It helps the workload and the work easier and faster.
""")
agent_a.memory_add("""
Large Language Models use transformer architectures and are trained on
massive text corpora using self-supervised learning.
""")
# ====================================================
# Agent B: Farmer
# ====================================================
agent_b = LLMlight(
model="google/gemma-4-26b-a4b-qat",
retrieval_method="naive_rag",
embedding="bert",
context_strategy=None,
top_chunks=5,
temperature=0.7,
)
# Set the database for Agent 2
agent_b.memory_init(store_path="agent_b.db")
# Add some background information database for agent 2
agent_b.memory_add("""
The use of AI and machine learning consumes to much power and there is no need for this
new technology. The human work was good enough and there is no need to change that.
""")
agent_b.memory_add("""
Recent research shows that LLMs hallucinate and do not solve real world applications.
""")
# ====================================================
# Discussion Loop
# ====================================================
topic = "Discuss the importance of the use of Large Language Models and AI."
message = topic
for turn in range(5):
print(f"\n{'='*80}")
print(f"ROUND {turn+1}")
print(f"{'='*80}")
response_a = agent_a.prompt(
system='You are a Data Scientist.',
query=
f"""
Topic:
{message}
""",
response_format='Give your opinion in 1-2 paragraphs and ask a question to the other agent.',
)
print("\nAgent A:")
print(response_a)
response_b = agent_b.prompt(
system='You are a farmer.',
f"""
The Data Scientist said:
{response_a}
""",
response_format='Respond to the discussion in 1-2 paragraphs and ask a follow-up question.',
)
print("\nAgent B:")
print(response_b)
message = response_b
Знайомство з трэцім агентам: Модэратар
Для этапы «Адаптаванне трэцьяго агента» неабходна прадзеўжыць вводныя даныя, выклікача крока і крэтырыя завершэння пры перадзеўжанні коду. Аператары должны магчымае запускаваць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Спрыяйце цій этапы як дагавору межаў вводных даных і падтверджаных выходных рэзультаатаў. Даўце назвы артыфактам, прадзеўжыць перагляд успеху і адмовіцеся ад беззвучнага частковага завершэння. Заставіце людзкую апраўдку для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даныя ў працэсе. Компіляцыйныя налашчанні не ўзроўнаўцуюцца з пачатковым станом бізнесу.
from LLMlight import LLMlight
# ====================================================
# Agent A: Data Scientist
# ====================================================
agent_a = LLMlight(
model="google/gemma-4-26b-a4b-qat",
retrieval_method="naive_rag",
context_strategy=None,
top_chunks=5,
temperature=0.7,
)
agent_a.memory_init(store_path="agent_a.db")
agent_a.memory_add("""
Large Language Models are one of the most important step we did in the field of AI
It helps the workload and the work easier and faster.
Large Language Models use transformer architectures and are trained on
massive text corpora using self-supervised learning.
""")
# ====================================================
# Agent B: Farmer
# ====================================================
agent_b = LLMlight(
model="google/gemma-4-26b-a4b-qat",
retrieval_method="naive_rag",
context_strategy=None,
top_chunks=5,
temperature=0.7,
)
agent_b.memory_init(store_path="agent_b.db")
agent_b.memory_add("""
The use of AI and machine learning consumes to much power and there is no need for this
new technology. The human work was good enough and there is no need to change that.
Recent research shows that LLMs hallucinate and do not solve real world applications.
""")
# ====================================================
# Agent C: Moderator
# ====================================================
moderator = LLMlight(
model="openai/gpt-oss-20b",
retrieval_method="naive_rag",
context_strategy=None,
top_chunks=5,
temperature=0.3, # lower temperature for objective summaries
)
moderator.memory_init(store_path="moderator.db")
# ====================================================
# Shared discussion memory
# ====================================================
shared_memory = LLMlight(model="openai/gpt-oss-20b")
shared_memory.memory_init(store_path="discussion.db")
# ====================================================
# Discussion Loop
# ====================================================
topic = "Discuss the importance of the use of Large Language Models and AI."
message = topic
for turn in range(5):
print(f"\n{'='*80}")
print(f"ROUND {turn+1}")
print(f"{'='*80}")
# --------------------------------------------
# Agent A responds
# --------------------------------------------
response_a = agent_a.prompt(
system='You are a Data Scientist.',
query=
f"""
Current discussion:
{message}
""",
instructions='Provide your opinion and ask a question to the Farmer.',
response_format='Response can be maximum 1-2 paragraphs.'
)
print("\nData Scientist:")
print(response_a)
# --------------------------------------------
# Agent B responds
# --------------------------------------------
response_b = agent_b.prompt(
system='You are a Farmer.',
query=f"""
The Data Scientist said:
{response_a}
"""
instructions='Respond and ask a follow-up question.',
response_format='Response can be maximum 1-2 paragraphs.'
)
print("\nFarmer:")
print(response_b)
# --------------------------------------------
# Moderator summarizes
# --------------------------------------------
moderator_summary = moderator.prompt(
system='You are a neutral moderator.',
query=
f"""
Data Scientist:
{response_a}
Farmer:
{response_b}
Perform the following tasks:
1. Summarize the key arguments.
2. Identify agreements.
3. Identify disagreements.
4. Propose one question that helps both agents move toward consensus.
""",
response_format='Keep the output concise.'
)
print("\nModerator:")
print(moderator_summary)
# Store discussion history
shared_memory.memory_add(response_a)
shared_memory.memory_add(response_b)
shared_memory.memory_add(moderator_summary)
# Next round starts from moderator guidance
message = moderator_summary
# ====================================================
# Final consensus
# ====================================================
consensus = moderator.prompt(
system='You are a neutral moderator.',
query=
"""
Review the discussion and provide:
- Main conclusions
- Remaining disagreements
- Final consensus statement
""",
response_format='Keep it under 200 words.'
)
print("\nFINAL CONSENSUS")
print("=" * 80)
print(consensus)
Контроль размовы за дапамогою агента з оцэнкай.
Для этапы «Контроль размовы» неабяцо практычна апрацаваць вхідныя даны, абоўязкі віконавца крока і крэтынія выходу пры перадзеўцы коду. Віконавцы должны магчымае запускіць крок з вядомай точкі контролю без неабяцовага адгадвання захаванога стану. Запісваць час выканання і кост токенаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмавай версіі ў спяльныя асяроддзя. Апрацаваць людскія атэстаціі для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе. Компіляцыйныя налашчанні не ўзначаюць павнае адпрацоўванне продукту. Для этапы «Контроль размовы» неабяцо практычна апрацаваць вхідныя даны, абоўязкі віконавца крока і крэтынія выходу пры перадзеўцы коду. Віконавцы должны магчымае запускіць крок з вядомай точкі контролю без неабяцовага адгадвання захаванога стану. Документаваць як «шчаслівы» так і «восстанавочны» паты. Перапрыбуткі, людскія перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не
Паслягу — дапраўка коду.from LLMlight import LLMlight
# ====================================================
# Agent A: Data Scientist
# ====================================================
agent_a = LLMlight(
model="google/gemma-4-26b-a4b-qat",
retrieval_method="naive_rag",
context_strategy=None,
top_chunks=5,
temperature=0.7,
)
agent_a.memory_init(store_path="agent_a.db", overwrite=True)
# ====================================================
# Agent B: Farmer
# ====================================================
agent_b = LLMlight(
model="google/gemma-4-26b-a4b-qat",
retrieval_method="naive_rag",
context_strategy=None,
top_chunks=5,
temperature=0.7,
)
agent_b.memory_init(store_path="agent_b.db", overwrite=True)
# ====================================================
# Moderator Agent (keeps discussion structured)
# ====================================================
moderator = LLMlight(
model="openai/gpt-oss-20b",
retrieval_method="naive_rag",
context_strategy=None,
top_chunks=5,
temperature=0.3,
)
moderator.memory_init(store_path="moderator.db", overwrite=True)
# ====================================================
# Scoring Agent (decides convergence / stopping)
# ====================================================
scoring_agent = LLMlight(
model="liquid/lfm2-24b-a2b",
retrieval_method="naive_rag",
context_strategy=None,
top_chunks=5,
temperature=0.0, # deterministic scoring
)
scoring_agent.memory_init(store_path="scoring.db", overwrite=True)
# ====================================================
# Shared memory (optional logging)
# ====================================================
shared_memory = LLMlight(model="liquid/lfm2-24b-a2b")
shared_memory.memory_init(store_path="discussion.db", overwrite=True)
# ====================================================
# Discussion Loop with early stopping
# ====================================================
topic = "Discuss the importance of attention mechanisms in modern AI."
message = topic
MAX_ROUNDS = 5
AGREEMENT_THRESHOLD = 0.85 # stop if convergence is high enough
for turn in range(MAX_ROUNDS):
print(f"\n{'='*80}")
print(f"ROUND {turn+1}")
print(f"{'='*80}")
# --------------------------
# Agent A
# --------------------------
response_a = agent_a.prompt(
system='You are a Data Scientist.',
query=f"""
Topic:
{message}
""",
instructions='Ask a question.',
response_format='Respond in 1-2 paragraphs',
)
print("\nAgent A:")
print(response_a)
# --------------------------
# Agent B
# --------------------------
response_b = agent_b.prompt(
system='You are a Farmer.',
query=
f"""
Data Scientist said:
{response_a}
""",
instructions='continue the discussion with your own opinion.',
response_format='Respond in 1-2 paragraphs.',
)
print("\nAgent B:")
print(response_b)
# --------------------------
# Moderator summary
# --------------------------
moderator_summary = moderator.prompt(
system='You are a neutral moderator.',
query=f"""
Data Scientist:
{response_a}
Farmer:
{response_b}
""",
instructions=
"""
Summarize:
- agreements
- disagreements
- next question toward consensus
"""
)
print("\nModerator:")
print(moderator_summary)
# --------------------------
# Scoring Agent (convergence check)
# --------------------------
score_output = scoring_agent.prompt(
system='You are a scoring system.',
query=f"""
Data Scientist:
{response_a}
Farmer:
{response_b}
Moderator summary:
{moderator_summary}
""",
instructions='Evaluate agreement between the two agents.',
response_format=
"""
Return ONLY a number between 0 and 1:
- 1.0 = full agreement / consensus reached
- 0.0 = complete disagreement
""",
)
try:
score = float(score_output.strip())
except:
score = 0.0
print("\nAgreement Score:", score)
# --------------------------
# Store memory
# --------------------------
shared_memory.memory_add(response_a)
shared_memory.memory_add(response_b)
shared_memory.memory_add(moderator_summary)
# --------------------------
# Early stopping condition
# --------------------------
if score >= AGREEMENT_THRESHOLD:
print("\nConsensus reached early. Stopping discussion.")
break
# Next round context
message = moderator_summary
# ====================================================
# Final summary
# ====================================================
final_summary = shared_memory.prompt("""
Summarize the full discussion:
- final consensus
- key arguments
- remaining open points (if any)
""")
print("\nFINAL SUMMARY")
print("=" * 80)
print(final_summary)
# ========================
# ROUND 1
# ========================
# Agreement Score: 0.3
# ========================
# ROUND 2
# ========================
# Agreement Score: 0.7
# ========================
# ROUND 3
# ========================
# Agreement Score: 0.6
# ========================
# ROUND 4
# ========================
# Agreement Score: 0.8
# ========================
# ...
Хорашыя інструкцыі ўсё рашаюць.
Калі працуеце над этапам «Хорашыя інструкцыі ўсё рашаюць», спачатку запішыце умовы контракту: неабходныя даны, сігнал успеху і тое, што вядзець да частковага невыпання. Такі спіс контроля дапамагае залішыцца чыстым пад час пазнейшых змян у кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына невыпання павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Зробіце перапактовку пасля дорогіх крокаў. Сістэма не павінна знову сцягваць плата за той самы вызов LLM, калі аператар праказвае пазнейшы вузел.
response = client.prompt(
query="Explain attention mechanisms.",
instructions="""
Explain the concept for beginners.
Use exactly three paragraphs.
Include one real-world example.
""",
system="You are an experienced AI professor.",
context="some context", # This is autofilled too based on the database and RAG model.
response_format="markdown"
)
Вывары пры стварэнні мовных мадэляў
Калі працюеце на стадыі «Вывяскі перш чым ствараць мову», спачатку запісайце кантракт: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі спіс перакладзець пазнейшыя змены коду ў правільны направленні. Спрыяйце цій стадыі як кантракту межу данымі і перакананымі выходамі. Дайце назву рэзультатам, задаце крытэрыя успеху і не падтрымайце тыхі частковыя завершэння. Зберагаюце у кешы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадача тых самых прамэры ёсць частым выклікам зайвых рэсурсаў.
Заключэнне: Не спяшайцеся, дзейце структуравана
Калі працуеце над стадыяй «Заканчэнне», спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены коду адкрыта. Запісвайце час выканання і кост токена або запыту празаўсёды разам з рэзультатамі функцыйнасці. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Зробіце контрольную пазнаку пасля дорогіх крокаў. Сістэма вярнення не павінна знову нарахоўваць косты за той самы вызов LLM, калі аператар прабуе зноў выканаць пазнейшы вузел. Калі працуеце над стадыяй «Заканчэнне», спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага невыпання. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены коду адкрыта. Дакументавайце як «шчаслівы» шлях, так і шлях вярнення да нормальнасці. Прабулі, людзкія контролы і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Програмнае забезпечэнне
Этап прытчы працюе найкрашча, калі яго спрыяваць як мерым аб’ектам. Зафіксавайце адны ідэальны прымер працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Валідзіруйце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг дзеяння. Храніце стан графа ў простам і тыпаваным фармаце. Вкладзеныя структуры маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакоююць продовжэнне працы пасля перэрываў.
Апавясненні
Этап апавяснэння працюе найкрашча, калі яго спрыяваць як мерым аб’ектам. Зафіксавайце адны ідэальны прымер працы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння. Спрыявайце гэты этап як даговор межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаць крытэрыя успеху і адмовіцеся ад мовчанкавага частковага завершэння. Храніце стан графа ў простам і тыпаваным фармаце. Вкладзеныя структуры маскуюць інфармацыю пра тое, які вузел запісаў канкрэтны поле, і спакоююць продовжэнне працы пасля перэрываў.
Чэк-ліст аператыўнай працы
Этап чэк-ліста аператыўнай працы працюе наякша, калі яго спрыяваць як мерыемую структуру. Запісаўце адна ідэальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць сферу дзеяння.
Зберагаўце настройкі праза код аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжнай чытанняў усіх структураў.
Зберагаўце стан структуры у простам і тыпаваным фармаце. Вялікія структуры, якія знаходзяцца ўнутрошняй, маскуюць інфармацыю пра тое, калькі вузел запісаў калькі поль, і спакоююць працэс пасля перарываў.
Калі дозволяе бюджэт, дадзіце тэст на працясную працу, які пераглядае крытычны шлях у сістэме CI з вікорыстаннем фіксатыв, а не рэальных платных API.
Документаваўце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкія контралі і обработка некорэктных дадзеных ўжо ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Зберагаюце стан графа ў простам і тыпаваным фармаце. Вкладаныя структуры маскаюць інфармацію пра тое, які вузел запісаў якое поле, і спакошуюць працю пасля перэрываў.
Перш чым павышаць ранг стэка, заморажуйце версіі, зафіксавайце «золаты» транскрыпты для крытычных шляхоў і паказвайце крокі для вярнення да пачатковага стану. У спільных срэдах неабходны ліміты частоты запытоў, пераказкі ўсупрацавання рэсурсаў і чыста вялічына власніка для змены секрэтных даных. Валіце надзейнасць працы над крэатыўнымі, але разовымі дэманстрацыямі.
Прыметка для 24c6cd6fa849: не кладзіце ключы прадаўцаў у рэпазітарый, задаце максімальную кантытатыву токеноў на сесію і зберагаце транскрыпты празаўсёды разам з фіксатрамі для ацэнкі, каб пазнейшыя замены мадэляў заставаліся порównаннэй.
Этап 0 пры практыкаванні заходаў з абароны працюе наякша, калі яго расследжваць як мерыемую паверхню. Зберагуце адна «золатая» транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваць масштабы. Запісвайце часы выканання і вартасць токенаў або запытак па боку ад функцыйнальных рэзультатаў. Візуабельнасць вартасцей з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя.
Дакладнасць пры практыкаванні заходаў з абароны 0/872: змерыце час выканання, класію адказаў і вітраты токенаў для гэтага запісу, а пасля, на аднойчынку з фіксаваным наборам пытанняў, а не на аднойчынку з пераказамі, выявіце, чы хацеце застаўіць змяну.
Для этапа 1 пры практыкаванні заходаў з абароны перад змянай коду задаце вхідныя даны, адпаведальнага за крок і крытэрыяы завершэння. Аперацыйныя працавнікі должны магчымае перадзеяць крок з вядомай точкі контролю, не спадзяючыся на скрыты стан. Дакументавайце як «шчаслівы» так і «вярнэнневы» шляхі. Перапрыбуткі, людзкія контрольныя пункты і обработка неканальных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжасткі 1/872: звярніце увагу на час выканання, клас памылакі і колькасць вікорыстоўваных токенаў для гэтага зьязначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырэннях, выявіце, чы хачаце застаўіць змяну.
Калі працюеце над 2-й стадзіяй паўжасткі, спачатку запісайце контракт: неабходныя вхідныя даны, сігнал успеху і тое, што выканаецца у разе частковай памылкі. Такі спіс контролю дапамагае заставіць пасляэтапныя змяны ў кодзе чыстымі. Спрыятліва ставіцеся да гэтай стадзіі як да контракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць крытэрыяі успеху і адмовіцеся ад мовчанкавага частковага завершэння.
Дзеянне паўжасткі 2/872: звярніце увагу на час выканання, клас памылакі і колькасць вікорыстоўваных токенаў для гэтага зьязначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырэннях, выявіце, чы хачаце застаўіць змяну.
Этап 3 прынцыпа зміцнення работае наяўна, калі яго розглядаць як вімерную паверхню. Зафіксавайце адна ідэальная версія, адзін прыклад неудачы і запіс пра вярненне да пачатковага стану перш чым расшырваць сферу дзеяння. Зберагаюце настройкі пазырочна ад коду прыемліка. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыяй должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных.
Дакладнае выясненне 3/872: замерьце час выканання, класію паканаў і колькасць вікорыстоўваных токенав для гэтага прынцыпа, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на аднойчыне з пераказамі, вынікніце рашэння пра тое, чы хацяце застаўіць змену.
Для 4-го этапа прыткага зміцнення неабяжна практычна ваказка: перад змінайом код трэба чытаць параметры, адпавядаюшчага за крок адпаведальнага, і крэтыяры завершэння. Аперацыйныя працавнікі павінны магчымаць перапрыявленне кроку з вядомага пункта контролю, не прымуджаючыся вычысляць захаваны стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы павінна вказываць на адзін конкрэтны аспект, а не на заплутаны ланцоўкі задач.
Дзялейны пункт прыткага зміцнення 4/872: памерыць час выканання, класія ошыбак і колькасць вікорыстоўваных токенав для гэтай ваказкі, а пасля, на аднойчынных крэтыярах, вырашыць, чы робіць зміны, а не на аднойчынных спогадах.
Калі працуеце над 5-м падземам прыемкі з ударожэння, спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс контроля дапамагае заліцвачыць пазнейшыя змены коду. Запісвайце час выканання і вартась токенаў або запытак пад функцыйнальнымі рэзултатамі. Відразы вартасей з самага пачатку запобегае неспакою, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя.
Дзеянне 5/872 па прыемкі з ударожэння: вымерайце час выканання, класію памылак і вітрату токенаў для гэтай прыемкі, а потым выберайце, чы робіць змены на адной пазначанай базе пытанняў, а не на адной толькі прымітцы.
5-й падзем прыемкі з ударожэння работае лепей, калі яго спрыямаць як меравальную плошчу. Запісвайце адну ідэальную транскрыпцыю, адзін прыклад неудачы і прыемку для вярнення да пачатковага стану, перш чым расшырваць сферу дзеяння. Дакументавайце як успішны, так і вярнучыся шляхы. Перапрыбуткі, людзкія контралі і обработка неканальных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Дзеянне паўжасткі 6/872: звярнуце увагу на час выканання, класію памылак і колькасць выкорыстоўваных токенаў для гэтага зьязначэння, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы робіць змены.
Для 7-й стадзіі паўжасткі неабходна перад змянай коду задаць вхідныя даны, абавесцелюючага этапу і крэтырыя завершэння. Аперацыяныя працавнікі должны магчыма было перазапускаць этап з вядомай точкі контролю, не падозрываючы прыхованы стан. Штодзе гэтую стадзію трэба спрыятаць як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Назвіце артыфакты, задаць перакананні на успех і адмовіцеся ад беззвучнага частковага завершэння.
Дзеянне паўжасткі 7/872: звярнуце увагу на час выканання, класію памылак і колькасць выкорыстоўваных токенаў для гэтага зьязначэння, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы робіць змены.
Калі працуеце над 8-м стадзіям заўважэння па забезпечэнню безпекі, спачатку запісайце умовы кантракту: неабяжныя даны, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі спіс контроля дапамагае залічыць пазнейшыя змены ў кодзе адкрыта і прозрачна. Зберагайце настройкі парадульна ад коду прыемліка. Файлы сераўнавання, хранільнікі секрэтных даных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавіць аўдыт без неабяжнага чытання всіх элементаў.
Дзялей 8/872 па забезпечэнню безпекі: вы меравайце час выканання, класы каштоўкаў і вітрату токенав для гэтага заўважэння, а пасля выявляйце, чы хацяце застаўіць змену, спынюючыся на апранаванай сэтце пытанняў, а не на індывідуальных прыкладах.
8-я стадзія заўважэння па забезпечэнню безпекі працуе лепей, калі яе спрыямаць як меравальную плошчу. Зберагайце адны ідэальны прыклад працы, адзін прыклад неудачы і заўважэння па адкатаванні, прычаму расшыруючы сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптав. Калі якісь крок не выйшае, неудача должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок дзеянняў.
Дзеянне паўнейшага забезпечэння 9/872: звярніце увагу на час выканання, класыя ошыбакі і колькасць токенаў, выкорыстаных для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы хачаце застаўіць змяну.
Для 10-го этапа паўнейшага забезпечэння перад змянай коду неабходна візначыць вхідныя даны, адпаведальнага за этап і крэтырыя завершэння. Аперацыяныя працавнікі должны магчыма было перазапускаць этап з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісвайце час выканання і колькасць токенаў або вартасць запытку палягліва да рэзультатаў функцыянальнай працы. Візуабельнасць вартасцей з самага пачатку запобегае неспакойным рашчыткам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя.
Дзеянне паўнейшага забезпечэння 10/872: звярніце увагу на час выканання, класыя ошыбакі і колькасць токенаў, выкорыстаных для гэтага запісу, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы хачаце застаўіць змяну.
Калі працуеце над 11-й стадзіяю практык ударожэння, спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі спіс контроля дапамагае заліцьваты пазнейшыя змены коду.
Документавайце як «шчаслівы» шлях, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некорэктных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам.
Дакладнасць практык ударожэння 11/872: звярніце увагу на час выканання, класыя ошыбкі і вітрату токенав для гэтай практыкі, а потым вынікніце рашэнне пра тое, чы хацеце застаўіць змену, адпаведна фіксаванаму набору пытанняў, а не індывідуальным спостарожэнням.
12-я стадзія практык ударожэння працюе лепей, калі яе спрыямаць як меравальную плошчу. Запісайце адна «золатая» транскрыпцыю, адзін прыклад неяксамоства і запіску пра анулювання перад расшырэннем масштабаў. Спрыяйце гэтай стадзіі як контракту межа данымі і перакананымі выходамі. Дайце назвы артыфактам, задаце правілы пераканання успеху і адмовіцеся ад тыхоўскага частковага завершэння.
Дзеянне паўжырання 12/872: звярніце увагу на час выканання, класыя ошыбак і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырэннях, выявіце, чы хацяце застаўіць змены.
Для 13-й стадзіі паўжырання неабходна перад змянай коду чытко апісаць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аперацыяныя працавнікі павінны магчымае перадзванаць гэты крок з вядомага пункта контролю, не прымусваныя здагадвацца пра схованы стан. Канфігурацыю трэба зберагаць праз аддзел аплікацыйнага коду; файлы сяродавішча, хранілішча секрэтных дадзеных і флагі функцый павінны знаходзіцца ў адном месцы, якое працавнікі можуць пераглядаць, не чытаючы весь код.
Дзеянне паўжырання 13/872: звярніце увагу на час выканання, класыя ошыбак і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырэннях, выявіце, чы хацяце застаўіць змены.