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

Мінімальная платформа эксперыментаў для AI-агентаў: A/B-тэсты і ценявыя запускі

Як вырашыць, ці павінна версія агента B замяніць A: вызначэнні канвеераў, лакальнае размеркаванне, падзеі паказу, трасы, ацэнка ў пясочніцы, ценявыя запускі і абмежаванні.

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

Крыніцы: A minimum viable experimentation platform for AI agents

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

Уявіце сабе агента падтрымкі кляўэнта, складанага з гэтых элементаў:

agent runtime
memory and retrieval
system prompt
model
tools
guardrails
application logic

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

Далей прыводзіцца падсумак мінімальной платформы, на якую можна было б з адчувам довер'я паслацца для адпаведзення на досыта простае запітанне:

should version B replace version A?

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

Што на самай працы ёсьць B

Першая проблема ўсё тыя ж. Спачатку эксперымент заявляе:

A = agent-v17
B = agent-v18

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

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

pipeline:
  name: support-agent
  version: 18

components:

  runtime:
    artifact: agent-runtime@sha256:...

  memory:
    artifact: memory-service@sha256:...
    configuration:
      strategy: hybrid
      top_k: 8

  model:
    route: support
    model: provider/model-x

  prompt:
    artifact: sha256:...

  tools:
    - artifact: customer-lookup@sha256:...
    - artifact: refund-tool@sha256:...

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

model X vs model Y

Іншы можа парабяляць:

memory top_k=5 vs top_k=8

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

Заданне не павінна стаць залежнасцю продакшэна

Далей выступае пытанне: хто будзе аплікаваць A, а хто — B. Апэлююшчыя дызайны перэдбачаюць, калі кожны запіт прасіць центральную службу эксперыментавання пра неабяжлівы параметр. Гэта вцягвае платформу для эксперыментавання ў бюджэт доступнасці і затрымкі самай аплікацыі, што ёсць паслядкамі для сістэмы, чый галоўны мета — зьвежчэнне даных.

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

Для MVP дастатнека калькі елементаў аб’ектування наэнтыпнасці:

request
user
session
workflow_instance

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

workflow_instance = migration-8291
variant           = B
pipeline          = agent-v18

І ён перавозіцца разам з працэсам работы кожны раз, калі гэты працэсс пачынаецца занова.

Прадзел не аднаковы з экспанзіяй

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

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

ASSIGNMENT
user-18271 → B

EXPOSURE
memory-v2 retrieval started

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

assigned          10,428
exposed            8,912
exposure rate      85.46%

Калі A і B паказваюць неспадзевана разнае колькасць экспазыі, гэта разніца трэба адразу зважыць.

Апошнія проблема выступае, калі заданыя методы лечэння не ўжо тые, якія фактычна выкарыстоўваюцца. Напрыклад, B выбірае мадэль Y, мадэль Y вяртае код 503, і шлюз пераходзіць на мадэль X. Запіс выглядае так:

assigned_variant = B
realized_model   = X
fallback_reason  = provider_unavailable

і выконанне застаецца ў B.

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

Трэйсінг адказвае на пытанне, што сталося

Рэзультат эксперыменту паведамляе, чыніцца лі кацэнне зменілася, але не адказвае на пытанне, чаму. Для адказу на пытанне «чаму» OpenTelemetry ёсць розумным выборам, а не новым протакалам трэйсінгу. Слой эксперыментавання павінен толькі дадаць дзеякі дапаможны кантэкст кожнаму перыоду выканання задачы:

experiment.id
experiment.version
experiment.variant
experiment.assignment_id

pipeline.id
pipeline.version

execution.purpose

Пасля гэтаго апрэчыцца сумарны рэзультат, напрыклад:

B has a lower task completion rate

можа стаць значная болей корыстным запітам:

show failed B traces

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

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

assignment
exposure
outcome
feedback
evaluation

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

Адлайн-ацэнка выконвае той самы працэс

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

prompt
expected answer

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

scenario:
  id: duplicate-charge-001

input:
  message: >
    I was charged twice for order 9811.

environment:
  fixture: duplicate-charge-customer

expected:
  refund_count: 1
  ticket_status: resolved

limits:
  max_turns: 15
  max_tool_calls: 20
  max_cost: 0.50

Тады той самый сценарый буда працаваць проты пайплейн A і B, можаба кілька разоў, адколькі вікантэйзыяееніе агентаў ёсць стацыбарным, і два запускі однакоўскія конфыгурацыя можаць прыйслаць разнымі траекторыямі з таго жачынковога стану. MVP вікорыстваеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяеяе

REPLAY_DIVERGED

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

Выкананне у тэневым рэжыме заполняе прасвет

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

latency
cost
tool usage
model fallbacks
guardrail failures
judge scores
trajectory differences

Перш чым будзь-яны ўжываннік пабачыць рэзультат працы.

Мадэлі тыпу Shadow runs не можу паказаць, чы B павышае найважлівейшы рэзультат, адколькі ўжываннікі ніколі не бачаць B і таму не можу на яго адказаць. Яны служыць проміжнам этапам: рэалістычныя даны і рэальна праця програмы, без жадных рызыкаў, якія ёсць у жывых эксперыментах.

Не кожная пераканальніца трэбуе суддзі з LLM

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

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

refund_count == 1
ticket_status == resolved

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

Другі тып — гэты, які базуецца на модэлі, і ўжоўся для атрыбутаў, якія не паддаюцца паставеўкам:

helpfulness
clarity
tone
quality of explanation

Суддзя-LLM дапамагае ў гэтым, але суддзя становіцца ўсьмо толькі ўтэрмінованым компонентам, а ніколі не стае ананімным істочнікам правды:

evaluator
evaluator version
judge model
judge prompt
rubric

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

Статыстыка, зменшаная

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

A/B allocation
binary metrics
continuous metrics
95% confidence intervals
sample ratio mismatch detection
fixed-horizon analysis

Этага колькасць даст на адпаведзеныя на багатыя практычныя запітанні, а падсумак рэзультата можа выглядаць так:

Experiment
support-agent-v18

Randomization
user

Primary metric
ticket resolution

A       81.4%
B       85.1%

Difference
+3.7 percentage points

95% CI
[...]

Experiment health
SRM PASS

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

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

4 model calls

У:

47 model calls

І адказ можа застацца HTTP 200, нават калі ёсць правільны адказ. Таму патрэбны верхнія межы:

max cost / execution
max tokens / execution
max agent turns
max tool calls
max variant spend / hour

Застосаванне вакцыны можа зупініць гэты працэс або запобiec дальнейшаму вплыву варыанту віруса. У справаздачы па здароў’ю тады можа быць напісана:

Variant B

SRM                PASS
Error rate         PASS
Cost / request     +312%

Circuit breaker    TRIPPED
New exposure       PAUSED

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

Болей сложныя методы можаць чакаць: CUPED, последовныя тэсты, эксперыменты з контрольнай групай, шары эксперыmentаў, кластэрная рандамізацыя, адаптатываная распадзелка і іншыя. Мадэль дадзеных павінна заліць месца для іх, але першая версія павінна толькі правільна адрабатваць простыя эксперыменты тыпу A/B.

Што ствараць першым

Пасля таго, як большая частка пунктав, якія можна адклаць, была выдалена, платформа стала керованай. Яй патрэбны службы кіравання, якія будуць хаваць:

  • рэйстры эксперыментаў
  • рэйстры каналоў обработкі
  • рэйстры набораў дадзеных
  • рэйстры ацэнкачаў
  • вызначэнні метрык

На верхнім роўні знаходзіцца SDK, які завантажуе настройкі эксперымента і дэтэрміністычна ўпрацоўвае іх на стороне кліента. Патрабуецца шлях для прыймання дадзеных для:

assignment
exposure
outcome
feedback
evaluation

Таксі OpenTelemetry таксама прыемляюцца. Разумныя варыянты зберагчаў — PostgreSQL для стану кантрольнай плоскі, NATS JetStream або Kafka для запісаў падзей, ClickHouse для аналізу эксперыментаў і таксі, а таксама об’ектны зберагчык, суманентны з S3, для вялікіх файлаў. Офлайн-з’эквалайзер выкарыстоўвае набор дадзеных для працы з A і B у сераўнах, якія можна перазначыць.

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

what was randomized
what treatment was assigned
what treatment actually ran
what pipeline version produced the execution
what outcome was measured
how that outcome was evaluated

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

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

Разам гэтыя элементы дапамагаюць стварыць MVP, які можа надзеянна адказваць на тры запытанні:

What exactly did we run?
What happened when we ran it?
Did assigning users to B improve the outcome we care about?

Усе іншае можа раставаць або ўзьвышвацца навакола гэтага.