Надвор од чет-ботови: ВИ агенти што испорачуваат код
Чет-бот може да објасни како да рефакторирате услуга за плаќања. Агент со вештачка интелигенција може да го испита репозиториумот, да ја направи промената во поврзаните датотеки, да го изврши пакетот тестови, да протолкува неуспех, да го приспособи пристапот и да подготви закрпа што може да се прегледа. Токму таа разлика ја прави дискусијата за ВИ во софтверската работа многу поинтересна.
Корисното прашање повеќе не е дали моделот може да произведе код. Многу можат. Практичното прашање е дали системот може да придвижи ограничен дел од работата кон проверен исход без незабележливо да создаде нов ризик.
Што го прави системот со ВИ агент?
Агентот не е едноставно интерфејс за разговор со подолг промпт. Тој е модел што работи во циклус: добива цел, набљудува релевантна состојба, избира дејство, го оценува резултатот и продолжува додека не достигне услов за запирање или не му е потребна помош.
За работа со код, тие дејства може да вклучуваат читање датотеки, пребарување симболи, уредување мал број датотеки, извршување тестови, проверка на форматирање или отворање барање за повлекување. Важниот дел не е автономијата сама по себе. Тоа е способноста да се користат повратни информации од реалната развојна околина.
Асистент што генерира код и предлага функција врз основа на залепена порака за грешка е корисен. Агент што го извршува неуспешниот тест, ја следи патеката на повици, предлага минимална исправка и известува точно што потврдил може да биде корисен на поинаков, пооперативен начин.
Циклусот на испорака е поважен од демонстрацијата
Импресивните демонстрации често започнуваат со чисто барање и завршуваат со код што изгледа уверливо. Продукциската работа започнува на средина: нецелосни барања, непознати конвенции, застарени тестови, разлики во околината и зависности што ја прават локалната поправка небезбедна.
Способниот агент за кодирање има потреба од ограничен циклус на испорака:
- Разберете ја задачата: утврдете го наменетото однесување, опфатот и критериумите за прифаќање.
- Испитајте го контекстот: пронајдете ги релевантниот код, тестовите, конфигурацијата и проектните конвенции.
- Испланирајте мала промена: претпочитајте ја најтесната промена што може да го исполни барањето.
- Дејствувајте преку одобрени алатки: уредувајте, тестирајте, проверувајте со linter, градете или пребарувајте само во системите за кои е овластен да ги користи.
- Потврдете го резултатот: користете автоматизирани проверки и известете што поминало, што не успеало или што останува неизвесно.
- Ескалирајте соодветно: запрете кога задачата бара одлука за производот, привилегиран пристап или ризична поширока промена.
Овој циклус го претвора моделот од извор на исечоци во учесник во софтверски процес. Исто така, ја олеснува оценката на неговата работа. Закрпа со јасно резиме, фокусиран diff и изречна проверка е значително повредна од самоуверен одговор без докази.
Започнете со работа што има јасни граници
Најдобрите почетни случаи на употреба се повторливи или добро специфицирани задачи со брзи повратни информации. Помислете на додавање тестови околу постоечко однесување, ажурирање клиент по документирана промена на API, решавање тесно ограничен проблем со linter или изведување механичка миграција што може да се провери со компајлер и пакет тестови.
На пример, агент од кој се бара да додаде валидација на крајна точка не треба веднаш да го преработи слојот на контролери. Треба да ја пронајде рутата, да ги испита постоечките шеми за валидација, да ја додаде најмалата доследна промена и да ги изврши релевантните тестови. Ако не постојат тестови, треба да го каже тоа наместо отсуството на повратни информации да го смета за доказ за исправност.
Малите задачи не се само побезбедни. Тие го учат тимот што агентот навистина може да направи во неговата околина: колку добро ги следи локалните конвенции, дали неговите дозволи за алатки се доволни и каде неговите претпоставки имаат тенденција да не успеат.
Дајте му на агентот дефиниција за завршеност
Нејасните барања повикуваат на опсежни промени. „Подобрете ја автентикацијата“ е дискусија за дизајн. „Отфрлете ги истечените токени пред да се вчита записот за корисникот, зачувајте ја тековната форма на одговорот и додајте покриеност за истечен токен“ е извршлива единица работа.
Корисен опис на задачата го вклучува очекуваното однесување, релевантните ограничувања, дозволените датотеки или системи кога е соодветно и проверките што треба да поминат. Целта не е да се скриптира секое притискање на тастер. Таа е успехот да биде забележлив.
Цел: Додајте задолжително прикажувано име при создавање сметка.
Ограничувања:
- Зачувајте ги постоечките конвенции за одговор при грешка.
- Не менувајте ја шемата на базата на податоци.
- Додајте фокусирани тестови за недостасувачки и валидни прикажувани имиња.
Завршено кога:
- Релевантните тестови поминуваат.
- Проверките за форматирање поминуваат.
- Резимето на промените ги идентификува изменетите датотеки и извршената проверка.
На автономијата ѝ се потребни заштитни огради, а не слепа доверба
Агентите може да прават грешки со машинска брзина. Затоа дозволите и правилата за запирање се дел од дизајнот на производот, а не дополнителна мисла. Агент што може да чита изворен код и да извршува тестови има многу поинаков ризичен профил од оној што може да ја измени продукциската инфраструктура, да ротира акредитиви или да ги спои сопствените промени.
Користете пристап со најмали привилегии. Одвојте ги околините. Барајте преглед за промени што влијаат на безбедноста, податоците, наплатата, комуникацијата со клиентите или распоредувањето. Чувајте дневници за дејствата на алатките и излезот од командите за човек да може да реконструира што се случило.
Исто така е мудро да се разликуваат повратни и неповратни дејства. Уредувањето гранка обично може да се поврати. Бришењето податоци или објавувањето издание можеби не може. Агентот треба да може да го предложи второто без да може автоматски да го изврши.
Најдоверливиот агент не е оној што тврди сигурност. Тоа е оној што ја прави неизвесноста видлива доволно рано за човек да ја донесе правилната одлука.
Проверката е средиштето на одговорното усвојување
Генерираниот код треба да се третира како секој друг придонес: прегледајте го diff, проверете ги граничните случаи и извршете ги релевантните проверки. Разликата е во тоа што агентот често може да учествува и во тој циклус на проверка.
Тестовите, проверките на типови, linter-ите, изградувањата и прегледите пред распоредување му даваат на агентот објективни сигнали. Но поминатите проверки не се целата приказна. Пакетот тестови може да пропушти граница на овластување, непроверена патека за миграција или барање што никогаш не било запишано. Човечкиот преглед останува суштински таму каде што се важни контекстот и расудувањето.
Тимовите добиваат подобри резултати кога бараат од агентите да ги објаснат своите докази. Силното завршување наведува кои тестови биле извршени, што се променило и какви претпоставки биле направени. Слабото завршување само вели дека задачата е завршена.
Дизајнирајте за соработка, а не за замена
Трајната вредност на агентите за кодирање веројатно нема да биде во тоа што го елиминираат инженерското расудување. Нивната вредност е во тоа што го намалуваат триењето меѓу намерата и проверената прва имплементација.
Тоа може да ги ослободи развивачите да поминуваат повеќе време на дизајн на системи, компромиси за производот, доверливост, безбедност и менторство. Исто така може да им помогне на амбициозни неспецијалисти јасно опишан работен тек да го претворат во прототип, доколку ги разбираат ограничувањата на произведеното и вклучат соодветен преглед пред употреба во реалниот свет.
Организациите што ќе имаат најголема корист нема да бидат оние што секоја задача ѝ ја предаваат на автономен систем. Тоа ќе бидат оние што градат добри циклуси на повратни информации, одржуваат здрави тестови и документација, јасно ја дефинираат одговорноста и им даваат на агентите работа што одговара на нивните докази.
Испорачувањето код е дисциплина
Надвор од чет-ботовите, агентите со ВИ претставуваат премин од одговарање прашања кон извршување ограничена работа. Тој премин има значење само кога системот може да ја набљудува реалноста, да направи промени за кои одговара и да докаже доволно од својот резултат за да заслужи доверба.
Започнете мало. Мерете го квалитетот, не само брзината. Луѓето нека останат одговорни за одлуки со реални последици. Кога агентот е вграден во дисциплиниран инженерски циклус, тој може да стане нешто покорисно од паметна разговорна алатка: сигурен начин добро дефинираната работа да се придвижи од намера до тестиран код.