Изкуствен интелект в софтуера
AI-first компанията: Между детерминистичния код и вероятностните модели

Големите езикови модели (ГЕМ) представляват изцяло нов начин, по който да гледаме на създаването и използването на софтуер. Вместо обичайните детерминистични интерфейси, трябва да работим с и овладеем несигурността на генерираното от ИИ съдържание. Това може да бъде както свободна реч, така и хлабаво структурирани, а често и изцяло неструктурирани данни.
Софтуерните приложения говорят помежду си с помощта на интерфейси. След десетилетия опит стигнахме до извода, че както интерфейсът, така и обменените данни трябва да бъдат строго определени по поведение, тип и съдържание. Това е детерминистичният подход, в който знаем точно какво да предадем нататък и какви резултати можем да очакваме от съответното действие. В този свят изненадите са неприятни и могат да доведат до сериозни проблеми.
Светът на машинното учене не следва тези правила. Моделите базирани на статистика не могат и не трябва да бъдат строго определени. Техният изходящ продукт е също като статистиката – приблизителен. Изкуственият интелект не дава точен отговор – показва вероятен такъв спрямо това, което „мисли“, че потребителят му очаква.
Технологията освобождава софтуерното развитие от техническите бариери. Докато традиционно инструкциите трябваше да бъдат написани от програмисти, сега те могат да бъдат продиктувани от професионалисти без инженерен опит. Дори тестовете могат да бъдат създавани и изпълнявани от хора, които просто знаят какво искат и могат да го изразят на обикновен език. Това е революция в достъпността, но и предизвикателство в контрола на качеството.
Неосъзнати допускания
Светът е изпълнен с допускания, за които не се замисляме. В далечни времена, когато Илон Мъск все още демонстрираше интелигентност, той изказа точно това: шофьорите на пътя допускат за верни невероятно много на брой неща, за да могат да управляват автомобилите си. Така например допускат, че хората около тях няма внезапно да ги блъснат. Че другите шофьори ще спазват знаци, светофари и маркировка. Дори нещо напълно елементарно като това, че в България шофьорите се движат в дясната страна на пътя. И докато човешкият мозък е „извървял“ милиони години в усъвършенстване на тези психически модели, този на изкуствения интелект поема по преки пътища, за да ни е полезен.
В собствените си „размисли“, езиковия модел може да допуска неща, за които не бихме се сетили. Така девет от десет пъти може да интерпретира командата „Кажи ми какво пише в този документ“ като „Трябва да прочета документа и да обобщя намерената информация“, а на десетия път да допусне, че всичките ви документи се съхраняват на отдалечен сървър, който трябва да достъпи по някакъв неопределен начин, за да покаже съдържанието им буква по буква. Въпреки, че потребителят не е споменавал никакъв сървър в целия разговор.
Това е природата на технологията, с която не можем да се борим. Единственият ни шанс е или да я овладеем със статистически прието качество, или да я изоставим. И понеже към този момент светът няма никакво намерение да я изоставя, нужно е да намерим начин да работим с нея. Да контролираме рисковете, които носи в ДНК-то си.
MCP и обещанията за сътрудничество
MCP (Model Context Protocol) е повсеместно избраният начин за един изкуствен интелект да работи с инструменти – както локални, така и отдалечени. Технологията е дълбоко внедрена в продуктите на JetBrains, Figma, GitHub и още над 400 други компании. На негова база стъпва и друг протокол, обявен наскоро от Google, с който един езиков модел може да си комуникира с друг: A2A (Agent2Agent).
MCP е новият вид интерфейс, чрез който машини могат да комуникират помежду си. Дори в настоящето той е усвоен и развит от много на брой компании, които искат да бъдат AI-first. Това означава, че тези дружества поставят разработките си с интерфейс, достъпван от ИИ, поне наравно с техните API-и. Така, когато искаме да покажем на един потребител списък със създадени поръчки, можем да използваме API. Когато искаме потребителят да обсъди или анализира тези данни, предоставяме му чат с ГЕМ, който от своя страна използва MCP или A2A, за да получи съответната информация.
A2A - оркестри и диригенти
Освен да използва инструменти, изкуственият интелект трябва да може да си комуникира и със себеподобни. В света на софтуерните разработки сме нарекли това Агент към агент. Това ни позволява да имаме строго специализирани езикови модели, които знаят малко неща, но ги знаят много добре. Пример за това може да бъде главният механик в един сервиз за автомобили и онзи, който цял живот е поправял двигатели. Така този механик с общите познания знае достатъчно, че да разпредели работата към строго специализирания работник.
Същото могат да правят и ГЕМ. Един диригент (или оркестратор) може да разполага с познания само за това към кой строго специализиран модел да разпредели заявката. От своя страна, моделът-специалист има на свое разположение тематични знания и редица инструменти чрез MCP.
Това помага най-вече за поддържане големината на контекста. Инструкциите към изкуствените интелекти могат да набъбнат с главоломна бързина, особено ако не използваме векторни хранилища. Технологията все още изпитва сериозни затруднения в това да следва дълги инструкции, особено когато те са зададени от потребителя. Най-вече когато си противоречат – тогава се обърква какви допускания да направи и неочакваните резултатите са по-чести от обикновеното.
Контрол на качеството
След като вече сме създали и инструктирали своите агенти, трябва да се уверим, че произведеният от тях продукт отговаря на очакваното качество достатъчно често, че да имаме доверие в работата им без надзор. И докато лесно можем да контролираме детерминистичните интерфейси като API или уеб, в света на ИИ, изпълнен със синоними и намерения, това е предизвикателство. Иронично, това са все неща, с които самите езикови модели се справят чудесно.
Най-добрият начин да се контролира качеството на един езиков модел е чрез друг езиков модел. Така можем да зададем не ключови думи, а намерения. Вместо „Ако срещнеш думата „Здравей“, значи тестът е успешен“, ние ще инструктираме изпитващия изкуствен модел да следи дали този, който изпробваме, поздравява потребителя си. Можем да търсим специфичен тип отношение, дали спазва инструкциите си за превенция на злоупотреба, дали правилно разпознава отделни проблеми и предоставя правилните решения, дори дали извиква правилните MCP инструменти и A2A агенти. Подобно на традиционните тестове, можем да изолираме тези протоколи както бихме изолирали HTTP или бази с данни.
Обичайно т.нар. benchmarks изпитват модела върху хиляди примери – например MMLU използва над 14 000 тестови въпроса, а HellaSwag – 10 000 изречения. Когато поставяме ГЕМ под изпитание, в най-добрия случай ще го подложим върху един и същ сценарий многократно. Както в научните изследвания, трябва да имаме предварителна дефиниция колко процента успеваемост означава успех и съответно колко – провал. Това ще е разликата между приемане на риска и нуждата от допълнително усъвършенстване на инструкциите му. Или използване на друг модел.
Малки модели за големи надежди
Отвъд използването на обичайните модели чрез API достъп, имаме възможност да обучим собствени такива. Това може да се случи чрез фини настройки на т.нар. open source модели (които далеч не са open source, но това е друга тема). Такива вече имаме от Meta, DeepSeek, а наскоро и OpenAI. Не бих се учудил скоро да видим подобен модел и от Anthropic.
Фините настройки върху един фундаментален модел изискват невъобразимо по-малко ресурси от това да се обучи такъв от нулата. Това ги прави лесно достъпни за специализирани агенти и задачи. Тези им свойства позволяват да им втълпим как да поставят другите модели под различни изпитания, да ги пуснем в CI/CD тръбата и да спим малко по-спокойно.
Възможно ли е детерминистичното изпитване?
Допустима стратегия да се внесе предвидимост в изпитването на ГЕМ е използването на графови структури като външен източник на истина. Вместо да разчитаме на „паметта“ на модела или неговите вероятни предположения, можем да го накараме да проверява факти в предопределена графова структура.
Този подход ни позволява предварително да очакваме кои точно възли в структурата ще „светнат“, когато моделът се опитва да достъпи конкретно парче информация. Така ще имаме повече видимост спрямо йерархията и взаимовръзките между различните разклонения. Един от най-изискващите сценарии, в които това е нужно, е когато софтуерът трябва да спазва регулаторни изисквания.
Все пак това не е решение за всичко. Самият граф трябва да бъде стриктно поддържан. Няма да ни помогне при отворени въпроси или творчески задачи, нито когато самите данни са динамични и обновяването им отнема време. Или когато на модела му се наложи да обикаля сложни взаимовръзки в опит да придобие нужната информация в отговор на потребителска заявка.
Този вид изпитание на ГЕМ няма да ни даде увереност, че моделът ще отговори категорично по един и същ начин всеки път. Това, което получаваме, е увереност, че фактите, с които ще работи, са достоверни. Така при въпрос „Кой отговаря за разработката на партньорския портал“, отговорът може да бъде „Отговорник е Петя Иванова“, „Отговорник за разработката на партньорския портал е Петя Иванова“ или „Петя Иванова отговаря за този продукт.“ Три различни отговора, които съдържат в себе си един и същ факт, а не халюцинация.
Отвъд езика
До момента текстът разглежда единствено езиковите модели, които боравят с текст. Докато това са огромна част от начините на употреба, други модели като генериращите графични изображения, глас, 3D модели и видео, имат своите специфични изисквания и предизвикателства.
Проблемът с ненадеждната възпроизводимост се усложнява драстично при визуалните модели. Докато текстовото възпроизвеждане понадлежи на някакъв контрол чрез нулева температура, дори малки изменения в стойността на seed могат да доведат значително различни резултати. Можем ли да разчитаме тогава, че логото на компанията винаги ще изглежда професионално? Дори да генерира правилно текст върху изображението, ще имаме ли гаранции, че крайният резултат ще бъде културно подходящ? Единственият възможен подход е статистически – генериране на хиляди изображения и удостоверяване на тяхното качество.
Биометричната сигурност поставя други предизвикателства. Технологията за клониране на човешки глас отдавна е широко достъпна срещу шепа стотинки и секунди образец. Може ли гласовият модел да разпознае, че си говори не просто с правилния човек, а с човек въобще? Дълбоките фалшификати вече са широко разпространени и все по-убедителни. Механизмите за разпознаването им изостават. Този проблем вече не е просто за това как използваме ИИ, а поставя фундаментален въпрос за вярата в собствените ни сетива и способността ни да откриваме нередности и несъответствия.
Нещо повече – въпросът с инжектирането на инструкции е все по-належащ. Това може да се случи, когато ИИ чете изображение, слуша глас или дори чете инструкциите за употреба на MCP сървър. През 90-те беше широко популярен митът, че филмите ни предават подсъзнателни съобщения чрез т.нар. 25-ти кадър. Но машинните модели са идеална цел за такъв тип съобщения, които ние няма да съумеем да прихванем.
Контролът на качеството при тези модели изисква изцяло нов подход. Простото сравнение на низове е невъзможно. Нужни са ни метрики, които да измерват визуално и звуково сходство отвъд човешките възможности. Способности за разпознаване на злонамерено съдържание на по-дълбоко йерархично ниво от потребителски инструкции. Възможности за проследяване на произхода и обработката на информация на всяка стъпка в екосистемата на ИИ.
Подобни предизвикателства тепърва ще стават все по-важни. Меденият месец на технологията изтича и бизнесите ще имат нужда не просто от що-годе правилни резултати, а от пълна предвидимост и надеждност. Това противоречи на самата структура на езиковите модели. Бизнесите ще бъдат изправени пред въпроса в кои точно случаи могат да използват изкуствен интелект и кога това не е уместно. Кога човешкият фактор ще бъде незаобиколим и кога имитацията му е достатъчна.
Изкуственият интелект е лесно достъпен интерфейс, който отваря широко врати за злоупотреба. Самите компании, които създават фундаментални езикови модели, все още изпитват затруднения да опазят тайните, които техните продукти знаят. А когато на такава технология лепнеш своето лого и ѝ позволиш да „говори“ от твое име – било то с текст, глас или изображение, – не спазиш ли предупредителните знаци, това бързо може да се превърне в кошмар, от който пътят назад е труден.