AI (Вештачка Интелигенција)

AI Agents: Engineering Software That Actually Gets Things Done

АИ агенти: Инженерство на софтвер што навистина ги завршува работите

Агентите со вештачка интелигенција лесно може да се помешаат со чет-ботови со подобар брендинг. Таа грешка води до разочарувачки имплементации: исполиран интерфејс што може да објасни задача, но не може сигурно да ја заврши. Агентот станува корисен кога може да претвори цел во контролирана низа дејства — да собира контекст, да носи ограничени одлуки, да користи алатки, да ги проверува резултатите и да побара помош кога сигурноста е мала.

Инженерскиот предизвик не е само да се избере способен модел. Тоа е дизајнирање систем што може да дејствува во реалниот свет без да стане непредвидлив, скап или небезбеден. Најуспешните агенти обично се помалку магични отколку што сугерираат демонстрациите. Тие се тесно насочени таму каде што е потребно, јасни во однос на своите дозволи и опкружени со конвенционален софтвер што обезбедува меморија, валидација, набљудливост и заштитни механизми.

Почнете со работа, не со личност

Продуктивниот агент треба да се дефинира со конкретна работна единица. „Помагај му на нашиот тим за поддршка“ е премногу широко. „Подготви одговор на прашање за наплата користејќи ги податоците за сметката и тековната политика, а потоа упати го на одобрување“ е проблем на системски дизајн што може да се оцени.

Добрите почетни кандидати имаат неколку заеднички карактеристики: задачата често се повторува, влезните податоци се разумно достапни, човек веќе знае како изгледа добар исход и грешките може да се ограничат. Примери се тријажа на пристигнати проблеми, извлекување структурирани детали од документи, подготвување резимеа за инциденти, проверка на барања за повлекување според тимска контролна листа или составување прв нацрт на ажурирање за клиент.

Овие употреби не го отстрануваат расудувањето. Тие ја преместуваат рутинската подготвителна работа во побрз циклус, оставајќи им на луѓето да се справуваат со исклучоци, одобрувања и одлуки со значајни последици.

Размислувајте во циклуси: набљудувај, одлучи, дејствувај, потврди

Агентот најдобро се разбира како циклус, а не како една единствена порака. Тој ја набљудува релевантната состојба, одлучува што да направи следно, повикува алатка или создава излез и проверува дали дејството го постигнало наменетиот резултат. Ако проверката не успее, треба повторно да се обиде само кога повторниот обид има смисла, да избере друг пат кога е можно или да ескалира.

На пример, агент од кој се бара да ажурира проектен тракер не треба само да повика алатка за ажурирање откако ќе прочита порака. Поцврст тек е:

  1. Идентификувајте го наведениот проект и работната ставка.
  2. Преземете ја тековната состојба на ставката и потврдете дека ги исполнува условите за бараната промена.
  3. Извлечете ги предложените полиња во структурирана претстава.
  4. Потврдете ги задолжителните полиња, дозволените вредности и овластувањето на корисникот што го поднесува барањето.
  5. Применете го ажурирањето со клуч за идемпотентност или друг механизам за спречување дупликати.
  6. Повторно прочитајте ја ставката и потврдете дека зачуваната состојба одговара на барањето.
  7. Забележете ревизорски настан и пријавете го резултатот или причината за ескалација.

Поголемиот дел од тој тек е познато инженерство на апликации. Моделот е вреден во двосмислените делови: толкување јазик, избор меѓу дозволени дејства и сумирање неуредни информации. Детерминистичкиот код треба да ги поседува правилата што секогаш мора да важат.

Дизајнот на алатките ја одредува сигурноста

Агентите не стануваат сигурни само затоа што моделот може да повикува функции. Самите алатки имаат потреба од внимателно дефинирани договори. Нејасна алатка како update_record(data) бара моделот да погодува премногу. Фокусирана алатка како set_ticket_priority(ticket_id, priority, reason) ја намалува двосмисленоста и ја прави валидацијата едноставна.

Одржувајте ги алатките мали, типизирани и јасни во однос на несаканите ефекти. Опишете ги влезовите, ограничувањата, очекуваните излези и условите за неуспех. Враќајте корисни грешки наместо општи неуспеси. „Тикетот е веќе затворен“ му дава на агентот можност да избере соодветен следен чекор; „барањето не успеа“ не му ја дава.

Одделете го читањето од запишувањето

Операциите за читање обично полесно се изложуваат пошироко. Операциите за запишување заслужуваат построги контроли. На агентот може да му биде дозволено да пребарува документација и да презема детали за сметки, додека испраќањето е-пошта, менувањето пристап, издавањето поврат на средства или распоредувањето код бара потврда или тесно ограничена политика.

Ова раздвојување исто така го подобрува дебагирањето. Кога агентот создава лоша препорака, тимовите можат да ги испитаат контекстот и патеката на расудување без да мора да поништуваат непотребно надворешно дејство.

Користете структурирани излези на системските граници

Природниот јазик е одличен за комуникација со луѓе и слаб како непотврден интерфејс меѓу компоненти. Секогаш кога агентот предава работа на софтвер, дајте предност на шема. Моделот сè уште може да ја објасни својата одлука во проза, но системот треба да користи валидирани полиња.

{
  "action": "escalate",
  "ticket_id": "T-1842",
  "reason": "The request changes billing ownership.",
  "requires_human_approval": true
}

Апликацијата треба да потврди дека action е дозволено, дека тикетот постои и дека предложената транзиција е валидна пред да направи што било. Ако парсирањето или валидацијата не успее, вратете ја задачата на поправка со конкретна грешка или упатете ја до лице. Никогаш не третирајте добро оформен JSON како доказ дека бараното дејство е безбедно или точно.

Направете го неуспехот исход од прва класа

Агентските системи не успеваат на повеќе начини од обичните интеграции. Моделот може погрешно да разбере инструкција, алатката може да истече, преземените информации може да бидат нецелосни или надолен систем може да прифати барање, но да не успее пред одговорот да стигне до агентот. Дизајнирањето само за идеалниот тек создава автоматизација што изгледа способна сè до првото напорно попладне.

Дефинирајте што треба да направи системот кога не може да продолжи. Корисни обрасци вклучуваат ограничени повторни обиди за привремени грешки, рокови за долготрајни работни текови, контролни точки пред неповратни дејства и јасни редици за ескалација. Повторните обиди треба да бидат намерни: повторен обид за читање по привремен тајм-аут може да биде разумен; повторен обид за плаќање или испраќање порака без стратегија за идемпотентност може да создаде дупликати.

Предавањето на човек треба да ги вклучува задачата, релевантните докази, преземените дејства, тековната состојба и точното прашање за кое е потребна одлука. „Ве молиме прегледајте“ создава повеќе работа. „Клиентот побара промена на сопственоста, но подносителот на барањето не е наведен како администратор; одобрете или одбијте ја промената“ создава предавање подготвено за одлука.

Мерете исходи, не импресивни разговори

Агентот треба да се оценува според работата што е наменет да ја подобри. Следете го квалитетот на завршување, стапката на ескалација, стапката на корекции, времето до разрешување, неуспесите на алатките и трошокот за завршување успешна задача. Прегледувајте примероци и од успешни и од неуспешни извршувања. Ниската стапка на ескалација не е автоматски добра ако агентот дејствува надвор од својата компетентност; соодветната ескалација може да биде доказ за здрави контроли.

Изградете репрезентативен тест-сет пред да го проширите пристапот. Вклучете обични случаи, двосмислени барања, недостасувачки податоци, спротивставени инструкции, неправилно оформени одговори од алатки и барања што мора да бидат одбиени. Извршувајте ги истите случаи по промени во пораката, моделот, алатката или политиката. Ова ја претвора итерацијата на агентот во инженерска дисциплина наместо во циклус на анегдотски демонстрации.

Распоредувањето е одлука за управување

Подготвеноста за продукција не е ознака што моделот ја заслужува. Таа е одлука за ризикот, дозволите, следењето и враќањето назад. Почнете со дејства со мало влијание, користете акредитиви со најмали привилегии, евидентирајте ги повиците на алатките и одлуките за политики и олеснете го оневозможувањето на работен тек. Чувствителните податоци треба намерно да се минимизираат во пораките и резултатите од преземањето, а не стандардно да се вклучуваат поради погодност.

Јасната сопственост исто така е важна. Некој мора да биде одговорен за правилата на работниот тек, целите за квалитет, одговорот на инциденти и одобрувањето промени. Агент што опфаќа повеќе тимови без сопственик има тенденција да акумулира исклучоци сè додека никој не му верува.

Корисната иднина е намерно инженерски изградена

Трајната вредност на агентите со вештачка интелигенција нема да дојде од системи што звучат автономно. Ќе дојде од системи што сигурно го отстрануваат триењето од реалната работа, притоа зачувувајќи ја одговорноста. Моделот може да обезбеди флексибилност, но сигурноста доаѓа од добри интерфејси, ограничени дозволи, валидирани промени на состојбата и искрено справување со неизвесноста.

Тоа е охрабрувачка вест за софтверските тимови. Градењето способни агенти не бара напуштање на воспоставената инженерска практика. Бара нејзина попретпазлива примена на границата каде што јазикот станува дејство. Почнете со еден корисен работен тек, направете го секое дејство набљудливо и стекнувајте автономија чекор по чекор. Така агентот престанува да биде демонстрација и почнува да завршува работа.

Портрет на автор на блогот

Mihajlo

Јас сум Михајло - развивач поттикнат од љубопитност, дисциплина и постојаната желба да создадам нешто значајно. Споделувам увиди, упатства и бесплатни услуги за да им помогнам на другите да ја поедностават својата работа и да растат во постојано развивачкиот свет на софтверот и вештачката интелигенција.