Практычныя прытамулкі: пасляэтапныя інструкцыі для стварэння вашага персональнага агенту.
Практычныя прытамулкі: пасляэтапныя інструкцыі для стварэння вашага персональнага агенту: контракты, перакантрольваннія та блокі коду для команд, якіе викорыстоўваюць гэты патэрн.
У гэтым карточку параграфе перакладзена схема працы, яка практычная ад сыр'ёў да готовай системы для: «Пашагоўныя інструкцыі па стварэнню вашай персональной агентскай системы». Акцэнт ставіцца на практычныя крокі, чыстае перакананне ў правильнасці дзействаў і код, які можна проста падключыць у репазітарый, не прабуючы здогадвацца пра мету.
Практычныя тыюторыі
У фазе практычных тыюторыяў неабходна з'явіць вхідныя даны, адпаведальнага за крок і критэрыя завершэння прычыні перад зменым коду. Аператары должны магчымае перадзваніць крок з вядомай точкі контролю, не прабуючы здагадвацца пра схованы стан. Конфігурацыю трэба залічыць праза код аплікацыі. Файлы сераўнавання, храненні секрэтных данных і флагі функций должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядзець, не чытаяўшы весь граф. Пры канектах, якія выкарыстоўваюць грошы або зміняюць даны праўдзівай роботы, неабходна людская апрацоўка. Підключэння ў час компілявання не значыць, што аплікацыя ўжо цэласна готовая для выверты.
Паўныя інструкцыі па стварэнню савама системы агентных 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: звярніце увагу на час выканання, класыя ошибак і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазырэннях, выявіце, чы хацяце застаўіць змены.