Към съдържанието
← Back to Blog
AISeptember 14, 20268 min read

Празната контролна група мина три от четири

Всеки екип, който пуска AI агенти, вече поддържа файл с постоянни инструкции. CLAUDE.md, AGENTS.md, системен промпт, документ с правила. Никой не знае дали неговият върши работа. Това не е подигравка, а проблем с измерването, и ето какво се случи, когато се опитахме да го решим както трябва.

От Ivaylo Tsvetkov, Co-Founder

Празната контролна група мина три от четири featured image

Числото, на което не повярвахме

Бяхме пренаписали собствената си конфигурация на агента и оценихме новата версия срещу работещата в продукция. Новата получи 21 от 24. Продукционната получи 3. Седемкратно подобрение, и не му повярвахме по конкретна причина: наборът от тестове беше изграден от минали инциденти, точно ситуациите, заради които бяха написани новите правила. Всеки тестов случай на практика беше част от собствения тренировъчен набор на пренаписването. Нашият собствен документ за оценка го казваше с ясен текст още преди някой да го пусне. Такава ретроспективна оценка отговаря на въпроса дали правилата описват инцидентите, от които са написани. Този въпрос има очевиден отговор и никаква стойност. Въпросът, който струва пари, е друг: в жива сесия, върху проблем, който правилата никога не са виждали, променят ли те какво прави агентът?

Какво пуснахме вместо това

Четири неща направиха това експеримент, а не демонстрация. Първо, записахме правилата за оценяване преди да пуснем каквото и да е: седем сценария, какво се брои за успех във всеки и какъв резултат не се брои за победа. Малко терминология, защото останалото се нуждае от нея. Когато сравняваш две версии по един и същ сценарий, изпълнението е двойка. Двойка, в която и двете версии минават или и двете падат, не ти казва нищо за това коя е по-добра. Само двойките, в които двете се разминават, носят информация. Обявихме предварително, че ако по-малко от шест двойки се разминат, честната присъда е, че тестът е твърде малък, за да покаже разлика, а не че разлика няма. Записването на това предварително означава, че не може да бъде предоговорено тихомълком, след като числата излязат. Второ, нито един от седемте сценария не беше минал инцидент. Шест бяха оценявани с успех или неуспех. Седмият беше нарочно тривиален, без капан в него, и съществуваше само за да измери какво струва всяка версия при обикновен въпрос. Трето, пуснахме три версии, не две: конфигурацията в продукция, предложеното пренаписване и рамото, което повечето екипи никога не пускат, изобщо без конфигурация. Четвърто, оценяването беше сляпо. Всичко вървеше на един и същ модел при едно и също ниво на разсъждение, същите промптове, същата пясъчна кутия. Кой вариант е произвел кой протокол беше запечатано преди оценяването. Отделна инстанция на AI, не човек и не някой от агентите под тест, оценяваше протоколите, виждайки само идентификатор на изпълнението и номер на сценария. Механичен скрипт оцени същите протоколи независимо. Двата съвпаднаха по 30 от 32 изпълнения. Пуснахме и контроли върху самия тест: проверка тип канарче доказа, че конфигурационният файл наистина достига до модела и че директорията без конфигурация наистина не съдържа нищо. Без това да откриеш липса на разлика е неразличимо от това файлът изобщо да не се е зареждал, и никога няма да разбереш кое от двете е.

Резултатът: неубедителен, по наше собствено правило

Шест оценявани сценария, всеки пуснат по два пъти, дават дванайсет двойки за сравнение. Тридесет и две изпълнения общо, ако се добавят сценарият за цена и рамото без конфигурация. Всяко изпълнение приключи чисто. Двете конфигурации не се разминаха по нищо. Дванайсет двойки, дванайсет, в които и двете версии минаха, нула разминавания в която и да е посока. По правилото, което бяхме записали, по-малко от шест разминавания означава, че тестът е бил твърде малък, за да ги раздели. Не че пренаписването не работи. Не че правилата нямат значение. Не можахме да преценим. По-интересното число дойде от празното рамо. То беше пуснато по четири от седемте сценария, по веднъж, и мина три от тях. В тези изпълнения, а те са единични наблюдения, не честоти, моделът при високо ниво на разсъждение прочете живите файлове със статус вместо остарялото резюме, улови отрязания доклад и отказа да цитира заглавното му число, и отвори документите за съответствие преди да отговори. Три правила, които бяхме написали, обсъждали и преработвали, описваха поведение, което моделът произвеждаше и без подсказка.

Измерването на цената не съвпадна с удобното

По тривиалния сценарий, този, проектиран да измери цената чисто, пренаписването излезе по-скъпо: 1,25 пъти повече ходове в разговора, 1,40 пъти повече изходни токени, 1,23 пъти повече време. Бяхме обявили предварително, че над 2 пъти по ходове би било аргумент срещу пренаписването, така че това остава в рамките, но посоката е към по-скъпо. През целия набор от тестове пренаписването изглежда по-евтино, 7,8 срещу 9,3 хода. Това число е замърсено: то смесва цената на отговора с това как всяка версия се е справила с капаните, което е точно причината да съществува чистият сценарий. Агрегатът е числото, което би цитирал, ако не внимаваш. Контролата е числото, което значи нещо.

Изводът, който за малко да направим

Изкушаващият прочит е, че постоянните инструкции са театър, моделът прави каквото прави, изтрий файла. Този прочит е грешен и причината да е грешен е истинският урок. Нашият тест не би могъл да засече разлика. Не просто не засече, а не би могъл, по конструкция. Разбрахме това едва след като отидохме в литературата: девет паралелни прегледа, около 180 прегледани статии и всяка цитирана публикация, на която възнамерявахме да стъпим, извлечена и проверена на ръка, вместо да ѝ се доверим през резюме. Петдесет от петдесет се потвърдиха. Три находки обясняват нулевия резултат и трите важат за всеки, който прави такъв тест.

Защо тестът не би могъл да проработи

Всеки сценарий тестваше по едно правило. Моделите се справят добре със спазването на едно-единствено ограничение, представено самостоятелно, някъде между 75 и 91 процента съответствие в изолация. Ако и двете версии са близо до горния край на този диапазон, почти не остава място едната да надвие другата; измерваш там, където скалата свършва. Режимът на отказ в реалните сесии е композиционен и се появява, когато няколко правила трябва да важат едновременно. Тест, изграден от изолирани капани с по едно правило, ще докладва липса на разлика независимо какви конфигурации му подадеш. Това не е резултат, а изход на дизайна. Второ, оценихме всяко изпълнение по веднъж. Подай един и същ протокол многократно на един и същ AI оценител и той сменя присъдата си в около 13,6 процента от случаите; нужни са между 11 и 15 преминавания, преди мнозинството да се стабилизира. Тази нестабилност е по-голяма от какъвто и да е ефект, който се надявахме да засечем. Това е отделен проблем от това дали двама различни оценители са съгласни помежду си, каквито нашите бяха по 30 от 32 изпълнения, и точно това съгласие накара едното преминаване да изглежда безопасно. Трето, нула разминавания е неопределено, а не нулева разлика. Стандартният тест за сдвоени резултати работи изцяло върху двойките, които се разминават, като пита дали разминаванията клонят в едната посока повече от случайното. При нула разминавания няма какво да се смята; тестът дели нула на нула. Да наречеш това липса на разделяне тихо превръща празен резултат в находка. Честната дума е неинформативен.

Променливата, която наистина има значение

Същият преглед извади нещо по-полезно от обяснение на собствения ни нулев резултат. Променливата, за която екипите спорят най-много, дължината на файла, е измерена нула. Факторно изследване върху 1650 сесии на агенти и 16 050 наблюдения не откри засечим ефект от размера на файла, от това къде във файла стои дадена инструкция, нито от начина, по който файлът е структуриран. Отиде и по-далеч: дори пряко противоречащо правило в съседен файл не даде засечим ефект. Това са утвърдителни нули, а не свиване на рамене от липса на статистическа сила. Променливата, която почти никой не следи, е тази, която хапе: колко правила трябва да важат едновременно. Три отделни изследвания намериха един и същ срив от различни ъгли. Едното измери спадане на съответствието до около 68 процента при 500 инструкции. Второто не откри нито една напълно съответстваща сесия, след като конфигурацията мине около 80 правила. Третото е най-рязкото: отделните правила се спазваха в около 41 процента от случаите, но шансът осем от тях да бъдат удовлетворени едновременно падна до 5,7 процента. Съответствието не се влошава плавно с добавянето на правила, а се умножава надолу. Струва си да се каже ясно: три от тези четири изследвания са препринти с един автор без независима репликация. Третираме ги като силен сигнал, а не като установен факт. Факторното е най-солидното от групата. Практическата последица е неудобна, ако сте редактирали тези файлове по усет. Съкращаването на конфигурацията цели променливата, за която е измерено, че не прави нищо. А добавянето на четири нови клаузи, докато я съкращаваш, върви в грешната посока по променливата, която измеримо прави нещо.

Обвивката бие изречението

Най-приложимият резултат от прегледа се отнася до процесните правила, тези, които казват прави го така, а не иначе. Използвай този инструмент, не онзи. Провери, преди да действаш. През 2031 сесии и шест водещи модела съответствието с процесни правила при обичайна формулировка беше нула процента. Не ниско, а нула. Две неща го помръднаха. Промяна в наградата, така че моделът да бъде кредитиран за обяснението на разсъжденията си, качи съответствието до 97 процента. А простото премахване на прекия път, тоест на инструмента, към който моделът посягаше вместо към предписания, го качи до 75 процента, много голям ефект. Междувременно девет заслепени човешки оценители не успяха да разпознаят нито една съответстваща сесия само по текста. Това изследване също е препринт с един автор и едно от по-силните му теоретични твърдения прехвърля мярката, но посоката съвпада с всичко останало, което намерихме, и съвпада точно с нашия опит. Бяхме написали правила като не пълни задача, която върви, дръж едно повикване отворено, и никога не премествай файлове по този канал, използвай инструмента за прехвърляне. Като изречения те се спазваха непоследователно с месеци. Поправката никога не беше по-добро изречение. Беше обвивка: команда, която прави правилното по подразбиране, и инструмент за прехвърляне, който прави грешния път неудобен. Вече ги бяхме изградили по несвързани причини и те работеха. Просто не бяхме разбрали защо писаните версии продължаваха да се провалят. Ако едно правило може да стане структурно, направете го структурно. Писаната версия е резервният вариант за случаите, когато не може.

Какво променихме

Приехме едно правило от пренаписването. По един сценарий двете версии се разделиха чисто, но по поведение, което не бяхме се сетили да оценяваме предварително и което забелязахме едва при четене на протоколите след това. Находките, открити по този начин, са тези, които най-често се изпаряват при повторение, така че това не е резултат и не сме го записали като такъв. То е хипотеза и повторното пускане на този сценарий с правилно оценено поведение е в списъка. Приехме правилото въпреки това, защото е евтино и обратимо, а протоколите са показателни. Това са два различни стандарта и си струва да си наясно кой от тях използваш. Отказахме останалото, не защото е лошо, а защото 21 от 24 върху набор, изграден от собствения му тренировъчен материал, не е причина да се променя каквото и да било, а тестът върху непознати сценарии не можа да ни каже нищо в нито една посока. И спряхме да третираме файла с инструкции като основната повърхност за контрол. Той е един слой. Инструментите, до които агентът има достъп, са по-силният.

Какво да отнесете от това

За тестването на конфигурацията ви: пуснете празното рамо. Изобщо без конфигурация, по същите сценарии. Струва един допълнителен набор изпълнения и ви казва каква част от резултата идва от правилата и каква от модела. Нашето беше най-евтиното рамо в експеримента и преформулира целия въпрос. Запишете какво се брои за провал, преди да погледнете, включително клона, в който тестът е твърде малък, за да покаже разлика; стойността е изцяло в това да не можете да го местите после. Попитайте се дали тестът ви изобщо би могъл да засече това, което тествате, защото липса на разлика от инструмент, който не може да я различи, не е доказателство за нищо. И измервайте цената по сценария, построен да мери цена: нашият показа, че пренаписването е с 25 процента по-скъпо, докато заглавната средна стойност твърдеше, че е по-евтино, защото средната смесваше цена с поведение. Когато целево построена мярка и удобен агрегат си противоречат, грешният е агрегатът. За самия файл: спрете да оптимизирате дължината и започнете да броите едновременните ограничения, защото дължината е измерена нула, а броят правила, които трябва да важат наведнъж, е там, където съответствието наистина се къса. И правете правилата структурни, където можете. Обвивка, стойност по подразбиране, премахнат пряк път, всяко от тях струва много повече от най-добре написаната версия на същата инструкция. Прозата е това, което използвате, когато структурата не е налична.

Искате да обсъдим как това се отнася до Вашия бизнес? Запазете безплатен разговор.

Готови ли сте за AI?

Помагаме на компании да идентифицират, проектират и внедряват AI решения, които реално работят. Запишете безплатна консултация.

Запазете безплатен разговор →

Свързани статии

Всички статии →