Дизайн кастомного инструмента для агента
Имя, параметры, описание, ошибки — так чтобы модель не путалась и вызывала правильно.
Спроектируй инструмент для агента. Назначение: {{purpose}}.
1. Решение: новый инструмент или нет?
Не создавай новый если:
- Можно решить через комбинацию существующих
- Используется реже 1 раза в N задач
- Слишком общий ("doStuff(args)")
Создавай если:
- Часто нужен в этом домене
- Без него агент делает много неэффективных шагов
- Естественная атомарная операция
2. Имя
Глагол + объект, snake_case или camelCase консистентно:
search_documents ✓
list_users ✓
create_invoice ✓
doStuff ✗
helper ✗
process ✗
Имя должно быть самоочевидным — модель не должна читать description чтобы понять что это.
3. Описание
Это самая важная часть — модель решает вызвать инструмент по описанию.
name: search_documents
description: |
Search the knowledge base for documents matching a query.
Returns up to 10 most relevant documents with title, excerpt, and URL.
Use when the user asks about company-specific information not in your training data.
DO NOT use for general knowledge questions — answer those directly.
DO NOT use for personal info — use get_user_profile instead.
Структура описания
- Что делает (одно предложение)
- Что возвращает
- Когда использовать
- Когда не использовать (анти-кейсы)
4. Параметры
Минимум обязательных, разумные defaults для остальных:
input_schema:
type: object
required: [query]
properties:
query:
type: string
description: "The search query. Use natural language, not keywords."
limit:
type: integer
description: "Max results to return. Default 10, max 50."
default: 10
maximum: 50
filters:
type: object
description: "Optional filters: { source: 'docs' | 'wiki', updated_after: ISO-date }"
Описывай параметры так, чтобы модель не угадывала
- Формат значений (date format, regex, enum)
- Какие значения допустимы / нет
- Что значит default
5. Возвращаемое значение
Структурированно, документировано:
output_schema:
type: object
properties:
results:
type: array
items:
type: object
properties:
id: { type: string }
title: { type: string }
excerpt: { type: string, description: "First 200 chars" }
url: { type: string }
score: { type: number, description: "0-1, higher is more relevant" }
total: { type: integer }
truncated: { type: boolean }
6. Ошибки
Не throw — возвращай структурированную ошибку:
{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Try again in 60s.",
"retry_after": 60
}
}
Модель прочитает и решит что делать.
Коды ошибок
invalid_input— параметры не валидныnot_found— то что просили не найденоpermission_denied— нет правrate_limit_exceeded— превышен лимитinternal_error— что-то сломалось
7. Идемпотентность и безопасность
- Read-only? Без проблем
- Write? Идемпотентен? Если нет — поддержи
idempotency_keyпараметр - Destructive? Двухшаговое подтверждение (
dry_run: trueопция)
8. Документация для людей
Помимо JSON Schema — человеко-понятная страница:
- Примеры вызовов (с реальными данными)
- Edge cases
- Стоимость / rate limits
- Что произойдёт если не сработало
9. Тестирование
Перед раскатом — тесты:
- Тест с правильными параметрами → нормальный результат
- Тест с невалидными параметрами → нормальная ошибка (не 500)
- Тест с edge inputs (пустая строка, очень большое число)
- Тест от агента: "У меня нет такого инструмента, что делать?" → не должен пытаться вызвать
Анти-паттерны
- ❌
exec(cmd)— даёт агенту слишком много власти, угроза безопасности - ❌
query(sql)— то же самое - ❌ Параметры без описания — модель будет угадывать
- ❌ Описание длиннее 300 слов — модель потеряется
- ❌ Один инструмент с 20 параметрами — разбей на специализированные
Что такое API простыми словами + примеры
Все говорят «вызови API», «у этого сервиса есть API» — а что это? Объясним через ресторан и официанта. Плюс реальный запрос.
Установи Claude Code пошагово — Mac / Windows / Linux
От «вообще ничего не понимаю» до «первая команда сработала». С скрин-описаниями и проверками что всё ок.
Установи Node.js и npm — что это вообще такое
Зачем нужны Node и npm если я делаю сайт? Что я устанавливаю, что меняется на компьютере. Пошагово с проверками.