Глобально делятся на два типа:
1. To Know (Знать): Получение данных (поиск в базе, чтение файла).
2. To Do (Делать): Выполнение действий (отправка письма, покупка билета, запуск кода).
Function Tools: Пользовательские функции, описанные разработчиком.
Built-in Tools: Встроенные возможности платформы (например, Google Search, Code Execution).
Agent Tools: Использование другого агента в качестве инструмента (делегирование задач).
1️ Документация - это всё. Имя инструмента должно быть понятным (не func_01, а get_weather). Описание должно объяснять зачем нужен инструмент, а не как он работает внутри.
2️ Атомарность. Один инструмент - одна конкретная задача. Не делайте «швейцарские ножи», которые делают всё сразу - модель запутается.
3️ Лаконичный вывод. Не возвращайте модели огромные таблицы данных. Это «забивает» контекстное окно и стоит дорого. Лучше вернуть ссылку или краткую выжимку.
Валидация. Всегда проверяйте данные на входе и выходе.
Host (Хост): Приложение, где живет агент (например, IDE или чат-бот).
Client (Клиент): Компонент внутри хоста, который «общается» с сервером.
Server (Сервер): Программа-адаптер, которая дает доступ к конкретному инструменту (например, сервер для Google Drive или Slack).
Проблема «Запутанного Шерифа» (Confused Deputy):
Классическая уязвимость. Агент (Шериф) имеет высокие права доступа (например, к базе кода). Злоумышленник через промпт-инъекцию обманывает Агента и просит его «слить» данные. Агент, думая, что помогает пользователю, использует свои права во вред.
Решение: Принцип «Human-in-the-loop» (человек в контуре). Критические действия (удаление файлов, транзакции) должны требовать явного подтверждения пользователя.