Добивки:
- Дефинирање на агент како „модел + алатки + циклус“ и одлучување кога е потребно
- Пишување на дефиницијата на алатката со име, опис и влезно_шема
- Следење на текот и ракување со грешки на циклусот tool_use и tool_result
Досега, моделот отсекогаш извршуваше една работа: примаше внесување текст, произведуваше текстуални одговори. Но, вистинската работа често бара повеќе од текст; извршување на пресметка, барање база на податоци, повикување на API, откривање на тековниот девизен курс. Манекенката не може сама да ги прави овие работи - но може да одлучи кога треба да се направат и да побара од некој да ги направи. Ова е она што употребата на алатката го дава моделот, а тоа е основата на агентите за вештачка интелигенција. Во оваа единица, ќе научиме што е агент, како е дефинирана алатката и како функционира циклусот tool_use.
Што е агент? Модел + Алатки + Јамка
Агентот за вештачка интелигенција се состои од три дела: моделот (мозокот кој ја донесува одлуката), алатките (функциите што моделот може да ги повика: временска прогноза, барање во базата на податоци, испраќање е-пошта) и циклус (јамка; моделот ја повикува алатката, го добива резултатот, повторно одлучува што да прави, и така натаму).
Критична разлика: Повикот со една шема не е агент. Агентот е процес во кој моделот продолжува чекор по чекор, при секој чекор избирајќи го следниот потег врз основа на исходот на алатката. „Размислувајте како човек, користете ги рацете, погледнете го резултатот, размислете повторно“.
Важен факт: самиот модел не управува со возилото. Моделот само вели „Сакам да ја повикам оваа алатка со овие влезови“. Вашата апликација (наречена темперамент) ја извршува алатката и го враќа резултатот на моделот. Ова е од витално значење за безбедноста: моделот не го допира директно вашиот систем; Секоја акција е под ваша контрола.
Совет: Не обидувајте се да го решите секој проблем со агентот. Агент; го зголемува ризикот од одложувања, трошоци и грешки. Прво прашајте: „Дали ова ќе се реши со еден повик или фиксен работен тек? Ако одговорот е да, нема потреба од агент. Агентот е за отворени задачи каде што чекорите не можат да се знаат однапред.
Дефиниција на алатката: име, опис, влезна_шема
За да внесете алатка во моделот, давате три работи:
- име: Идентитетот на возилото, на пр. добие_време.
- опис: Што прави алатката и кога да ја повикате. Ова е најважната област што му овозможува на моделот да ја избере вистинската алатка во вистинско време. Напишете не само „што прави“, туку и „јавете се кога“.
- input_schema (input schema): JSON шема која дефинира кои параметри ги очекува алатката, во кој тип.
# Дефиниција на возилото (концептуална — шема JSON){ "име": "get_order_status", "description": "Го враќа тековниот статус на испорака на нарачката. Јавете се кога корисникот ќе праша каде е бројот на нарачката или кога ќе пристигне.", "input_schema": { "type": "object", "":"{ordere_no": "description": "Број на нарачка, на пр. SP-1024"} }, "required": [" order_no"] }}
Правила за добар опис на алатката: јасно и концизно име, опис со „кога да се користи“, опис за секој параметар, ставање на вистинските задолжителни. Чувајте го фокусиран бројот на возила; Десетици слични модели на возила се изненадувачки.
област
Што прави тоа?
добар пример
лош пример
име
ID на возилото
order_status_getir
донесе
опис
Што прави + кога да се јавите
„Го враќа статусот на товарот; јавете се кога корисникот ќе праша каде е нарачката“
"зема податоци"
влезна_шема
Вид на параметар и барање
{order_no: стринг, забележан}
без дијаграм / без опис
tool_use → tool_result Јамка
Циклусот работи вака, чекор по чекор:
- Го испраќате корисничкото прашање + описи на алатката до моделот.
- Моделот или реагира директно или генерира блок алатка_употреба: „повикајте ја order_durumu_getir со order_no=SP-1024“.
- Вашата апликација всушност ја извршува алатката (ја прашува базата на податоци).
- Го испраќате резултатот назад до моделот како tool_result.
- Со овој резултат, моделот или го произведува конечниот одговор или повикува друга алатка. Циклусот продолжува додека моделот не каже „Завршив“.
# Agent loop (концептуални) пораки = [user_question]while True: answer = model.uret(messages, tools=tool_definitions) if answer.tur == "tool_use": result = harness.run(response.tool_name, answer.entries) # APPLICATION [result breakback tools, result=__] # конечен одговор; јамка завршува
Современите SDK-и нудат носители на алатки што ја извршуваат оваа јамка за вас; само ги пишувате функциите на алатката. Но, токму тоа се случува зад сцената.
Управување со грешки
Алатките може да не успеат: нарачката не е пронајдена, API истече, внесувањето е неважечко. Ако не можете да ја извршите алатката, вратете ја грешката во моделот како описен резултат на алатката („грешка: Бројот на нарачката SP-9999 не е пронајден“) и ознаката за грешка. Моделот може да го види ова и нежно да му го објасни на корисникот или да се обиде на поинаков начин. Не ја проголтајте грешката и враќајте празни резултати; Манекенката мора да знае што тргнало наопаку.
Опис на слабо/силно возило
Слаба (неопределена именка, без „кога“):
име: „податоци“, опис: „взема податоци“# Моделот не знае кога и како да повика; Или воопшто не се јавува или се јавува неправилно.
Силно (нето име + кога + опис на параметарот):
name: "musteri_bakiyesi_getir"description: "Го враќа салдото на тековната сметка на клиентот. Јавете се кога корисникот бара задолжување, кредит или салдо. НЕ врши плаќање."input_schema: {custeri_id: string ("Customer ID")}# Моделот повикува во вистинско време, со вистинските параметри, знаејќи го својот лимит.
Три мини футроли
Случај 1 - Непотребно средство. Еден тим го изгради бизнисот „резимира текст“ со агент со повеќе алатки; Секое повторување трае 4 моделски повици и 9 секунди. Работата всушност беше работа со еден повик. Кога го отстранивме агентот и го намаливме на еден повик, времето се намали на 1,5 секунди, а цената се намали на една четвртина. Поука: користете го агентот кога навистина е потребно.
Случај 2 — Слабо објаснување, погрешен повик. Во застапник за поддршка, нејасната алатка наречена fetch беше случајно повикана од моделот и во прашањето за рамнотежа и во прашањето за испорака. Кога возилата беа поделени на balance_getir и cargo_durumu_getir и беа додадени објаснувањата „call when“, погрешниот избор на возила се намали од 18 на 1 во 50 примери.
Случај 3 - Грешка проголтана. Агентот враќал празни резултати кога нарачката не била пронајдена; Моделот тоа го протолкува како „нарачката е испорачана“ и го довел во заблуда клиентот. Кога пораката за грешка е експлицитно напишана на tool_result („нарачката не е пронајдена“), моделот правилно вели „Не можев да го најдам овој број, можете ли да го проверите?“ почна да вели.
Вообичаени грешки
- Претворање сè на агент: додека еден повик е доволен, агентот додава цена и доцнење.
- Нејасен опис на возилото: Моделот не знае кога да се јави; избира погрешно.
- Мислејќи дека моделот управува со возилото: Опремата го управува возилото; моделот само сака.
- Голтање на грешката: моделот мора да знае што тргнало наопаку; Наведете ја грешката како open tool_result.
- Премногу слични возила: моделот се збунува; Чувајте го комплетот алатки фокусиран и минимален.
Внимание: Само затоа што моделот вели „повикај го тоа возило“ не значи дека треба да се преземе нешто. На деструктивни алатки (бришење, наплата, е-пошта) вашата апликација не треба слепо да го извршува повикот - ова е суштината на безбедносната тема во следната единица.
Сумирано
- Агент = модел (одлука) + алатки (функции) + циклус (алатка за повикување, добијте резултат, одлучете повторно).
- Повикот со една шема не е агент; агентот е процес чекор-по-чекор.
- Моделот не управува со возилото; Вашата апликација се извршува (поврзете) и го враќа резултатот како алатка_резулт.
- Алатката се идентификува по име, опис (конкретно „повикај кога“) и input_schema.
- Јамката продолжува како алатка_употреба → вртења на прицврстување → алатка_резултат → моделот продолжува додека моделот не каже „готово“; грешките се експлицитно пријавени на моделот.
Задача за апликација
Дизајнирајте 3 алатки од вашиот сопствен бизнис што може да му ги дадете на агентот. (1) Напишете име, опис со „call when“ и input_schema за секој; Нека барем една е недеструктивна алатка за читање, а една пресметка. (2) Изберете реално корисничко прашање и рачно напишете чекор по чекор (во циклус) која од овие алатки моделот ќе ги повика со кои влезови и што ќе прави откако ќе пристигне алатка_резултат. (3) Поставете сценарио во кое една од алатките не успее и покажете како пораката за грешка ќе се врати на моделот.
листа за проверка
- [ ] Можам да го дефинирам агентот како „модел + алатки + циклус“ и да одлучам кога е потребно.
- [ ] Знам дека ременот управува со возилото, моделот само го сака.
- Можам да напишам солиден опис на возилото со [ ] име, опис („повик кога“) и влезно_шема.
- Можам да го следам циклусот [ ] tool_use → tool_result чекор по чекор.
- [ ] Ги пријавувам грешките на алатката до моделот како отворена алатка_резулт.