Галоўная / Артыкулы

Практычныя прытамулкі: Адкалянэне надзеяных агентаў AI: Стварэнне аптаемага адзыначэння

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

Выдавец: REACTAPP.TOP10 хв чытання2302 слоў

Крыніцы: Engineering Reliable AI Agents: Building Production Evaluation Pipelines That Scale

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

Архітэктура для адналежнага кантролю: інжынерыя плоскага прастору ацэнкі для автонамных сістэм

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

Час выканання агента — керуе екзекуцыяй

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

Слой выканання інструмента — адпавядае за дэтэрміністычныя пабочныя эфекты

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

Роўень тэлеметрыі — керуе канонічным рэкордам выканання

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

Шар ацэнкі — адпаведальны за перакананне ў правільнай працы

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

Рэпазітарый адзыначэння — Власнік інстытуцыйнай памяці

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

Завершэнне.

План карыстоўвання — адпавядае за кераванне выданнем

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

Стварэнне каналу ацэнкі

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

dataset:
  id: refund-policy-v2

input:
  query: "Refund my cancelled subscription."

expected_tools:
  - customer.lookup
   - refund.policy

forbidden_tools:
  - payment.capture

constraints:
  max_latency_ms: 3000
  max_tool_calls: 3

success:
  task_completed: true
{ "trace_id": "9ab3...",
"span": "tool.crm.lookup",
"latency_ms": 214,
"tokens_input": 684,
"retry_count": 0,
"status": "success"
}

Тэставанне працы ў цэлым жыцёвым цыкле разработкі програмнага забавляння

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

Локальная разработка

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

Запросы прыемкі

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

name: Agent Evaluation
on:
  pull_request:
jobs:
  evaluate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Replay Evaluation Suite
        run: deepeval test run evaluation/
      - name: Fail on Regression
        run: promptfoo eval --config promptfooconfig.yaml

Этапы рэалізацыі

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

Продакцыя

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

Метрыкі, якія дзейсна маюць значэнне

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

Сучасны ландшафт інструментаў

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

Спісак перапрацоўкі да выходу у працэю

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

Архітэктура

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

Візуабельнасць

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

Ацэнка

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

Безпека

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

Надзеямасць

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

Заключанне

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

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

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

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

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

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

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

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

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

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