Прибыль:
- Определение агента как «модель + инструменты + цикл» и принятие решения о том, когда он необходим.
- Написание определения инструмента с именем, описанием и input_schema
- Мониторинг потока и обработка ошибок в циклахtool_use иtool_result.
До сих пор модель всегда выполняла одну задачу: получала ввод текста, выдавала текстовые ответы. Но настоящая работа часто требует большего, чем просто текст; выполнение расчета, запрос к базе данных, вызов API, выяснение текущего курса обмена. Модель не может делать эти вещи сама, но она может решить, когда это нужно сделать, и попросить кого-нибудь это сделать. Это то, что использование инструмента дает модели, и это основа агентов ИИ. В этом модуле мы узнаем, что такое агент, как определяется инструмент и как работает циклtool_use.
Что такое агент? Модель + Инструменты + Цикл
Агент ИИ состоит из трех частей: модели (мозг, который принимает решение), инструментов (функций, которые модель может вызывать: погода, запрос к базе данных, отправка электронной почты) и цикла (цикл; модель вызывает инструмент, получает результат, снова решает, что делать, и так далее).
Критическое различие: отдельный вызов шаблона не является агентом. Агент — это процесс, в котором модель действует шаг за шагом, на каждом этапе выбирая следующий шаг в зависимости от результата инструмента. «Думайте как человек, используйте свои руки, посмотрите на результат, подумайте еще раз».
Важный факт: сама модель не управляет транспортным средством. Модель просто говорит: «Я хочу вызвать этот инструмент с этими входными данными». Ваше приложение (называемое связкой) запускает инструмент и возвращает результат в модель. Это жизненно важно для безопасности: модель не касается вашей системы напрямую; Каждое действие под вашим контролем.
Совет: не пытайтесь решить все проблемы с помощью агента. Агент; увеличивает риск задержек, затрат и ошибок. Сначала спросите: «Будет ли эта проблема решена с помощью одного звонка или фиксированного рабочего процесса?» Если ответ положительный, агент не нужен. Агент предназначен для задач с открытым окончанием, шаги которых не могут быть известны заранее.
Определение инструмента: имя, описание, input_schema
Чтобы ввести инструмент в модель, вы даете три вещи:
- имя: Идентификатор транспортного средства, например. get_weather.
- описание: Что делает инструмент и когда его вызывать. Это самая важная область, которая позволяет модели выбрать нужный инструмент в нужный момент. Пишите не просто «что делает», но и «когда позвоните».
- input_schema (схема ввода): схема JSON, определяющая, какие параметры какого типа ожидает инструмент.
# Определение транспортного средства (концептуальное — схема JSON) { "name": "get_order_status", "description": "Получает текущий статус доставки заказа. Вызывается, когда пользователь спрашивает, где находится номер заказа или когда он прибудет.", "input_schema": { "type": "object", "properties": { "order_no": {"type": "string", "description": "Номер заказа, например SP-1024"} }, "обязательно": ["order_no"] }}
Правила хорошего описания инструмента: четкое и лаконичное название, описание с указанием «когда использовать», описание каждого параметра, проставление действительно обязательных. Следите за количеством транспортных средств; Десятки похожих моделей автомобилей удивляют.
площадь
Что он делает?
хороший пример
плохой пример
имя
Идентификатор автомобиля
order_status_getir
принести
описание
Что он делает + когда звонить
"Возвращает статус груза; звонить, когда пользователь спрашивает, где заказ"
"извлекает данные"
входная_схема
Тип параметра и требование
{order_no: строка, с аннотациями}
нет схемы/нет описания
Tool_use → Tool_result Цикл
Цикл работает так, шаг за шагом:
- Вы отправляете модели вопрос пользователя и описание инструмента.
- Модель либо отвечает напрямую, либо генерирует блокtool_use: «вызов order_durumu_getir с order_no=SP-1024».
- Ваше приложение фактически запускает инструмент (запрашивает базу данных).
- Вы отправляете результат обратно в модель какtool_result.
- Получив этот результат, модель либо выдает окончательный ответ, либо вызывает другой инструмент. Цикл продолжается до тех пор, пока модель не скажет: «Я закончила».
# Цикл агента (концептуальный)messages = [user_question] while True: response = model.uret(messages,tools=tool_definitions) if response.tur == "tool_use": result = cord.run(response.tool_name, response.entries) # ПРИЛОЖЕНИЕ запускает сообщения += [response,tool_result(result)] # возвращает результат else: Break # окончательный ответ; цикл заканчивается
Современные SDK предлагают средства запуска инструментов, которые выполняют этот цикл за вас; вы просто пишете функции инструмента. Но именно это и происходит за кулисами.
Управление ошибками
Инструменты могут дать сбой: заказ не найден, время ожидания API истекло, ввод недействителен. Если вы не можете запустить инструмент, верните ошибку в модель в виде описательного Tool_result («ошибка: номер заказа SP-9999 не найден») и флага ошибки. Модель может это увидеть и мягко объяснить пользователю или попробовать другой способ. Не проглатывайте ошибку и не возвращайте пустые результаты; Модель должна знать, что пошло не так.
Описание слабой/сильной машины
Слабое (неопределённое существительное, без «когда»):
имя: «данные», описание: «извлекает данные»# Модель не знает, когда и как звонить; Либо вообще не звонит, либо звонит неправильно.
Строгий (сетевое имя + время + описание параметра):
name: "musteri_bakiyesi_getir"description: "Возвращает текущий баланс счета клиента. Вызывается, когда пользователь запрашивает дебет, кредит или баланс. НЕ производит платеж."input_schema: {custeri_id: string ("ID клиента")}# Модель вызывает в нужное время, с правильными параметрами, зная свой предел.
Три мини-кейса
Случай 1 — Ненужный агент. Одна команда создала бизнес по «обобщению текста» с помощью многофункционального агента; Каждое резюме занимает 4 звонка модели и 9 секунд. На самом деле эта работа была работой в один звонок. Когда мы удалили агента и сократили его до одного звонка, время сократилось до 1,5 секунды, а стоимость — до четверти. Урок: используйте агент тогда, когда это действительно необходимо.
Случай 2 — Слабое объяснение, неправильный вызов. В агенте поддержки модель случайным образом вызывала малоизвестный инструмент под названием fetch как в вопросе о балансе, так и в вопросе о доставке. Когда транспортные средства были разделены на Balance_getir и Cargo_durumu_getir и добавлены пояснения «вызовите, когда», неправильный выбор транспортного средства уменьшился с 18 до 1 из 50 примеров.
Случай 3 — Ошибка проглочена. Агент возвращал пустые результаты, когда заказ не был найден; Модель интерпретировала это как «заказ доставлен» и ввела клиента в заблуждение. Когда сообщение об ошибке явно записывается в Tool_result («заказ не найден»), модель правильно говорит: «Мне не удалось найти этот номер, можете ли вы его проверить?» он начал говорить.
Распространенные ошибки
- Передача всего агенту: хотя одного звонка достаточно, агент увеличивает затраты и задержки.
- Расплывчатое описание автомобиля: Модель не знает, когда позвонить; выбирает неправильно.
- Думая, что модель управляет транспортным средством: Ремень управляет транспортным средством; модель просто хочет.
- Проглатывание ошибки: модель должна знать, что пошло не так; Укажите ошибку как opentool_result.
- Слишком много похожих автомобилей: модель запутывается; Держите набор инструментов сфокусированным и минимальным.
Внимание: то, что в модели написано «Вызовите этот автомобиль», не означает, что следует предпринимать какие-либо действия. При использовании деструктивных инструментов (удаление, проверка, электронная почта) ваше приложение не должно слепо выполнять вызов — это суть темы безопасности в следующем модуле.
В заключение
- Агент = модель (решение) + инструменты (функции) + цикл (вызов инструмента, получение результата, принятие решения еще раз).
- Одиночный шаблонный вызов не является агентом; Агент представляет собой поэтапный процесс.
- Модель не управляет автомобилем; Ваше приложение запускается (используется) и возвращает результат какtool_result.
- Инструмент идентифицируется по имени, описанию (в частности, «вызов когда») и input_schema.
- Цикл продолжается по мере:tool_use → работа жгута →tool_result → модель продолжается до тех пор, пока модель не сообщит «готово»; ошибки явно сообщаются модели.
Задача приложения
Разработайте 3 инструмента из своего бизнеса, которые можно передать агенту. (1) Напишите имя, описание с указанием «вызов когда» и input_schema для каждого; Пусть хотя бы один из них будет инструментом неразрушающего чтения, а другой — расчетом. (2) Выберите реалистичный вопрос пользователя и вручную шаг за шагом (в цикле) напишите, какой из этих инструментов модель будет вызывать с какими входными данными и что она будет делать после получения Tool_result. (3) Создайте сценарий, в котором один из инструментов выходит из строя, и покажите, как сообщение об ошибке вернется в модель.
контрольный список
- [ ] Я могу определить агент как «модель + инструменты + цикл» и решить, когда он понадобится.
- [ ] Я знаю, что ремень управляет автомобилем, просто модель этого хочет.
- Я могу написать подробное описание автомобиля с [ ] именем, описанием («позвонить, когда») и input_schema.
- Я могу шаг за шагом следовать циклу [ ]tool_use →tool_result.
- [ ] Я сообщаю об ошибках инструмента в модель как opentool_result.