Добици:
- Дефинисање агента као 'модел + алати + петља' и одлучивање када је то потребно
- Писање дефиниције алата са именом, описом и инпут_сцхема
- Надгледање тока и руковање грешкама у петљи тоол_усе и тоол_ресулт
До сада је модел увек радио само један посао: примао унос текста, производио текстуалне одговоре. Али прави рад често захтева више од текста; обављање прорачуна, испитивање базе података, позивање АПИ-ја, сазнавање тренутног курса. Манекенка не може сама да уради ове ствари - али може да одлучи када треба да се уради и замоли некога да их уради. Ово је оно што употреба алата даје моделу, а то је основа АИ агената. У овој јединици ћемо научити шта је агент, како је алат дефинисан и како функционише петља тоол_усе.
Шта је агент? Модел + Алати + Петља
АИ агент се састоји од три дела: модела (мозак који доноси одлуку), алата (функције које модел може да позове: временска прогноза, упит базе података, слање е-поште) и петље (петља; модел позива алатку, добија резултат, поново одлучује шта да ради итд.).
Критична разлика: Један позив обрасца није агент. Агент је процес у коме модел напредује корак по корак, у сваком кораку бирајући следећи потез на основу резултата алата. "Размишљајте као човек, користите руке, погледајте резултат, размислите поново."
Важна чињеница: сам модел не управља возилом. Модел само каже „Желим да позовем овај алат са овим улазима“. Ваша апликација (која се зове упртач) покреће алатку и враћа резултат моделу. Ово је од виталног значаја за безбедност: модел не додирује директно ваш систем; Свака акција је под вашом контролом.
Савет: Не покушавајте да решите сваки проблем са агентом. Агент; повећава ризик од кашњења, трошкова и грешака. Прво питајте: „Да ли ће се ово решити једним позивом или фиксним током рада?“ Ако је одговор да, нема потребе за агентом. Агент је за отворене задатке где се кораци не могу унапред знати.
Дефиниција алата: име, опис, инпут_сцхема
Да бисте увели алат у модел, дајете три ствари:
- назив: Идентитет возила, нпр. гет_веатхер.
- опис: Шта алат ради и када га позвати. Ово је најважнија област која омогућава моделу да одабере прави алат у право време. Напишите не само „шта ради“, већ и „позови када“.
- инпут_сцхема (улазна шема): ЈСОН шема која дефинише које параметре алатка очекује, у ком типу.
# Дефиниција возила (концептуална — ЈСОН шема){ "наме": "гет_ордер_статус", "десцриптион": "Преузима тренутни статус испоруке поруџбине. Позовите када корисник пита где се налази број поруџбине или када ће стићи.", "инпут_сцхема": { "типе": "објецт", "пропертиес": { "стринг": "ордер": "скрипта: {ордер"_но "Број поруџбине, нпр. СП-1024"} }, "обавезно": ["ордер_но"] }}
Правила за добар опис алата: јасан и концизан назив, опис са "када користити", опис за сваки параметар, стављајући оне заиста обавезне у обавезне. Држите фокусиран број возила; Десетине сличних модела возила су изненађујуће.
области
шта то ради?
добар пример
лош пример
име
ИД возила
ордер_статус_гетир
донети
опис
Шта ради + кога позвати
„Враћа статус терета; позовите када корисник пита где је наруџбина“
"дохваћа податке"
инпут_сцхема
Тип параметра и захтев
{ордер_но: стринг, анотатед}
без дијаграма / без описа
тоол_усе → тоол_ресулт Петља
Циклус функционише овако, корак по корак:
- Шаљете корисничко питање + опис алата моделу.
- Модел или одговара директно или генерише блок за коришћење алата: "позови ордер_дуруму_гетир са ордер_но=СП-1024."
- Ваша апликација заправо покреће алат (упитује базу података).
- Резултат шаљете назад у модел као тоол_ресулт.
- Са овим резултатом, модел или производи коначни одговор или позива други алат. Циклус се наставља све док модел не каже „Завршио сам“.
# Петља агента (концептуалне) поруке = [усер_куестион] док је Тачно: одговор = модел.урет(мессагес, тоолс=тоол_дефинитионс) иф респонсе.тур == "тоол_усе": резултат = харнесс.рун(респонсе.тоол_наме, респонсе.ентриес) # АППЛИЦАТИОН [респонсе.тоол_наме, респонсе.ентриес) # АППЛИЦАТИОН [респонсе ретурнс тоол] резултат=резултат враћа поруке +) # коначни одговор; петља завршава
Модерни СДК-ови нуде покретаче алата који покрећу ову петљу за вас; само пишете функције алата. Али управо то се дешава иза кулиса.
Управљање грешкама
Алатке можда неће успети: налог није пронађен, АПИ је истекао, унос је неважећи. Ако не можете да покренете алатку, вратите грешку у модел као дескриптивни тоол_ресулт („грешка: број налога СП-9999 није пронађен“) и ознаку грешке. Модел то може видети и нежно објаснити кориснику или покушати на други начин. Немојте прогутати грешку и вратити празне резултате; Модел мора да зна шта је пошло по злу.
Слабо/Јако Опис возила
Слаб (неодређена именица, без "када"):
назив: "подаци", опис: "дохваћа податке"# Модел не зна када и како да позове; Или уопште не зове или зове погрешно.
Јака (нето име + када + опис параметра):
наме: "мустери_бакииеси_гетир"десцриптион: "Враћа тренутно стање на рачуну клијента. Позовите када корисник затражи задужење, кредит или стање. НЕ врши плаћање."инпут_сцхема: {цустери_ид: стринг ("ИД клијента")}# Модел позива у право време, са правим параметрима, знајући своје ограничење.
Три мини кућишта
Случај 1 — Непотребан агент. Један тим је изградио посао „сажимања текста“ са агентом са више алата; Сваки резиме траје 4 позива модела и 9 секунди. Посао је заправо био посао са једним позивом. Када смо уклонили агента и свели га на један позив, време се смањило на 1,5 секунди, а цена је смањена на једну четвртину. Поука: користите агента када је заиста потребно.
Случај 2 — Слабо објашњење, погрешан позив. У агенту за подршку, модел насумично је позвао опскурну алатку која се зове дохвати иу питању равнотеже иу питању испоруке. Када су возила подељена на баланце_гетир и царго_дуруму_гетир и додата су објашњења „позови када“, погрешан избор возила се смањио са 18 на 1 у 50 примера.
Случај 3 — Прогутана грешка. Агент је враћао празне резултате када налог није пронађен; Модел је ово протумачио као „поруџбина је испоручена“ и обманула купца. Када је порука о грешци експлицитно написана у тоол_ресулт („поруџбина није пронађена“), модел исправно каже „Нисам могао да пронађем овај број, можете ли га проверити?“ почео је да каже.
Уобичајене грешке
- Пребацивање свега на агента: Док је један позив довољан, агент додаје трошкове и кашњење.
- Нејасан опис возила: Модел не зна кога да позове; бира погрешно.
- Размишљајући да модел покреће возило: појас покреће возило; модел само жели.
- Гутање грешке: Модел мора знати шта је пошло наопако; Наведите грешку као опен тоол_ресулт.
- Превише сличних возила: Модел се збуни; Држите скуп алата фокусираним и минималним.
Пажња: Само зато што модел каже „позови то возило“ не значи да треба предузети акцију. На деструктивним алатима (брисање, плаћање, е-пошта) ваша апликација не би требало слепо да извршава позив — ово је срж безбедносне теме у следећој јединици.
Укратко
- Агент = модел (одлука) + алати (функције) + петља (позови алат, добиј резултат, одлучи поново).
- Један позив обрасца није агент; агент је процес корак по корак.
- Модел не покреће возило; Ваша апликација се покреће (упрега) и враћа резултат као тоол_ресулт.
- Алат је идентификован именом, описом (посебно „позови када“) и инпут_сцхема.
- Петља се наставља док се тоол_усе → харнесс рунс → тоол_ресулт → модел наставља док модел не каже „готово“; грешке се експлицитно пријављују моделу.
Задатак апликације
Дизајнирајте 3 алата из сопственог бизниса које можете дати агенту. (1) Напишите име, опис са „позови када“ и инпут_сцхема за сваки; Нека бар један буде недеструктивни алат за читање, а један прорачун. (2) Одаберите реално корисничко питање и ручно напишите корак по корак (у петљи) који од ових алата ће модел позвати са којим улазима и шта ће урадити након што стигне тоол_ресулт. (3) Подесите сценарио у којем један од алата не успе и покажите како ће се порука о грешци вратити у модел.
контролна листа
- [ ] Могу да дефинишем агента као "модел + алати + петља" и одлучим када је потребан.
- [ ] Знам да појас покреће возило, модел га само жели.
- Могу да напишем чврст опис возила са [ ] именом, описом („позови када“) и инпут_сцхема.
- Могу да пратим циклус [ ] тоол_усе → тоол_ресулт корак по корак.
- [ ] Пријављујем грешке алата моделу као опен тоол_ресулт.