Јединица 9 / 11

АИ агенти и употреба алата

Добици:

  • Дефинисање агента као 'модел + алати + петља' и одлучивање када је то потребно
  • Писање дефиниције алата са именом, описом и инпут_сцхема
  • Надгледање тока и руковање грешкама у петљи тоол_усе и тоол_ресулт

До сада је модел увек радио само један посао: примао унос текста, производио текстуалне одговоре. Али прави рад често захтева више од текста; обављање прорачуна, испитивање базе података, позивање АПИ-ја, сазнавање тренутног курса. Манекенка не може сама да уради ове ствари - али може да одлучи када треба да се уради и замоли некога да их уради. Ово је оно што употреба алата даје моделу, а то је основа АИ агената. У овој јединици ћемо научити шта је агент, како је алат дефинисан и како функционише петља тоол_усе.

Шта је агент? Модел + Алати + Петља

АИ агент се састоји од три дела: модела (мозак који доноси одлуку), алата (функције које модел може да позове: временска прогноза, упит базе података, слање е-поште) и петље (петља; модел позива алатку, добија резултат, поново одлучује шта да ради итд.).

Критична разлика: Један позив обрасца није агент. Агент је процес у коме модел напредује корак по корак, у сваком кораку бирајући следећи потез на основу резултата алата. "Размишљајте као човек, користите руке, погледајте резултат, размислите поново."

Важна чињеница: сам модел не управља возилом. Модел само каже „Желим да позовем овај алат са овим улазима“. Ваша апликација (која се зове упртач) покреће алатку и враћа резултат моделу. Ово је од виталног значаја за безбедност: модел не додирује директно ваш систем; Свака акција је под вашом контролом.

Савет: Не покушавајте да решите сваки проблем са агентом. Агент; повећава ризик од кашњења, трошкова и грешака. Прво питајте: „Да ли ће се ово решити једним позивом или фиксним током рада?“ Ако је одговор да, нема потребе за агентом. Агент је за отворене задатке где се кораци не могу унапред знати.

Дефиниција алата: име, опис, инпут_сцхема

Да бисте увели алат у модел, дајете три ствари:

  • назив: Идентитет возила, нпр. гет_веатхер.
  • опис: Шта алат ради и када га позвати. Ово је најважнија област која омогућава моделу да одабере прави алат у право време. Напишите не само „шта ради“, већ и „позови када“.
  • инпут_сцхема (улазна шема): ЈСОН шема која дефинише које параметре алатка очекује, у ком типу.

# Дефиниција возила (концептуална — ЈСОН шема){ "наме": "гет_ордер_статус", "десцриптион": "Преузима тренутни статус испоруке поруџбине. Позовите када корисник пита где се налази број поруџбине или када ће стићи.", "инпут_сцхема": { "типе": "објецт", "пропертиес": { "стринг": "ордер": "скрипта: {ордер"_но "Број поруџбине, нпр. СП-1024"} }, "обавезно": ["ордер_но"] }}

Правила за добар опис алата: јасан и концизан назив, опис са "када користити", опис за сваки параметар, стављајући оне заиста обавезне у обавезне. Држите фокусиран број возила; Десетине сличних модела возила су изненађујуће.

области

шта то ради?

добар пример

лош пример

име

ИД возила

ордер_статус_гетир

донети

опис

Шта ради + кога позвати

„Враћа статус терета; позовите када корисник пита где је наруџбина“

"дохваћа податке"

инпут_сцхема

Тип параметра и захтев

{ордер_но: стринг, анотатед}

без дијаграма / без описа

тоол_усе → тоол_ресулт Петља

Циклус функционише овако, корак по корак:

  1. Шаљете корисничко питање + опис алата моделу.
  2. Модел или одговара директно или генерише блок за коришћење алата: "позови ордер_дуруму_гетир са ордер_но=СП-1024."
  3. Ваша апликација заправо покреће алат (упитује базу података).
  4. Резултат шаљете назад у модел као тоол_ресулт.
  5. Са овим резултатом, модел или производи коначни одговор или позива други алат. Циклус се наставља све док модел не каже „Завршио сам“.

# Петља агента (концептуалне) поруке = [усер_куестион] док је Тачно: одговор = модел.урет(мессагес, тоолс=тоол_дефинитионс) иф респонсе.тур == "тоол_усе": резултат = харнесс.рун(респонсе.тоол_наме, респонсе.ентриес) # АППЛИЦАТИОН [респонсе.тоол_наме, респонсе.ентриес) # АППЛИЦАТИОН [респонсе ретурнс тоол] резултат=резултат враћа поруке +) # коначни одговор; петља завршава

Модерни СДК-ови нуде покретаче алата који покрећу ову петљу за вас; само пишете функције алата. Али управо то се дешава иза кулиса.

Управљање грешкама

Алатке можда неће успети: налог није пронађен, АПИ је истекао, унос је неважећи. Ако не можете да покренете алатку, вратите грешку у модел као дескриптивни тоол_ресулт („грешка: број налога СП-9999 није пронађен“) и ознаку грешке. Модел то може видети и нежно објаснити кориснику или покушати на други начин. Немојте прогутати грешку и вратити празне резултате; Модел мора да зна шта је пошло по злу.

Слабо/Јако Опис возила

Слаб (неодређена именица, без "када"):

назив: "подаци", опис: "дохваћа податке"# Модел не зна када и како да позове; Или уопште не зове или зове погрешно.

Јака (нето име + када + опис параметра):

наме: "мустери_бакииеси_гетир"десцриптион: "Враћа тренутно стање на рачуну клијента. Позовите када корисник затражи задужење, кредит или стање. НЕ врши плаћање."инпут_сцхема: {цустери_ид: стринг ("ИД клијента")}# Модел позива у право време, са правим параметрима, знајући своје ограничење.

Три мини кућишта

Случај 1 — Непотребан агент. Један тим је изградио посао „сажимања текста“ са агентом са више алата; Сваки резиме траје 4 позива модела и 9 секунди. Посао је заправо био посао са једним позивом. Када смо уклонили агента и свели га на један позив, време се смањило на 1,5 секунди, а цена је смањена на једну четвртину. Поука: користите агента када је заиста потребно.

Случај 2 — Слабо објашњење, погрешан позив. У агенту за подршку, модел насумично је позвао опскурну алатку која се зове дохвати иу питању равнотеже иу питању испоруке. Када су возила подељена на баланце_гетир и царго_дуруму_гетир и додата су објашњења „позови када“, погрешан избор возила се смањио са 18 на 1 у 50 примера.

Случај 3 — Прогутана грешка. Агент је враћао празне резултате када налог није пронађен; Модел је ово протумачио као „поруџбина је испоручена“ и обманула купца. Када је порука о грешци експлицитно написана у тоол_ресулт („поруџбина није пронађена“), модел исправно каже „Нисам могао да пронађем овај број, можете ли га проверити?“ почео је да каже.

Уобичајене грешке

  • Пребацивање свега на агента: Док је један позив довољан, агент додаје трошкове и кашњење.
  • Нејасан опис возила: Модел не зна кога да позове; бира погрешно.
  • Размишљајући да модел покреће возило: појас покреће возило; модел само жели.
  • Гутање грешке: Модел мора знати шта је пошло наопако; Наведите грешку као опен тоол_ресулт.
  • Превише сличних возила: Модел се збуни; Држите скуп алата фокусираним и минималним.
Пажња: Само зато што модел каже „позови то возило“ не значи да треба предузети акцију. На деструктивним алатима (брисање, плаћање, е-пошта) ваша апликација не би требало слепо да извршава позив — ово је срж безбедносне теме у следећој јединици.

Укратко

  • Агент = модел (одлука) + алати (функције) + петља (позови алат, добиј резултат, одлучи поново).
  • Један позив обрасца није агент; агент је процес корак по корак.
  • Модел не покреће возило; Ваша апликација се покреће (упрега) и враћа резултат као тоол_ресулт.
  • Алат је идентификован именом, описом (посебно „позови када“) и инпут_сцхема.
  • Петља се наставља док се тоол_усе → харнесс рунс → тоол_ресулт → модел наставља док модел не каже „готово“; грешке се експлицитно пријављују моделу.

Задатак апликације

Дизајнирајте 3 алата из сопственог бизниса које можете дати агенту. (1) Напишите име, опис са „позови када“ и инпут_сцхема за сваки; Нека бар један буде недеструктивни алат за читање, а један прорачун. (2) Одаберите реално корисничко питање и ручно напишите корак по корак (у петљи) који од ових алата ће модел позвати са којим улазима и шта ће урадити након што стигне тоол_ресулт. (3) Подесите сценарио у којем један од алата не успе и покажите како ће се порука о грешци вратити у модел.

контролна листа

  • [ ] Могу да дефинишем агента као "модел + алати + петља" и одлучим када је потребан.
  • [ ] Знам да појас покреће возило, модел га само жели.
  • Могу да напишем чврст опис возила са [ ] именом, описом („позови када“) и инпут_сцхема.
  • Могу да пратим циклус [ ] тоол_усе → тоол_ресулт корак по корак.
  • [ ] Пријављујем грешке алата моделу као опен тоол_ресулт.