Обзор Tool Use в Claude
Что такое function calling, зачем расширять Claude инструментами и как устроены 4 шага полного цикла tool use.
Что такое Tool Use?
Tool use (function calling) — механизм расширения возможностей Claude через внешние функции. Вы определяете инструменты, Claude решает когда их вызывать, вы выполняете код и возвращаете результат.
Важно: Claude сам не запускает никакой код. Он просит вас вызвать функцию, а вы передаёте результат обратно.
Зачем это нужно?
- Расширение возможностей — доступ к данным, расчёты, управление системами
- Интеграция с существующими системами — CRM, базы данных, API
- Автоматизация — агентные сценарии с многошаговой логикой
- Точные данные — реальные значения вместо галлюцинаций (курсы, цены, расписания)
4 шага полного цикла
# Шаг 1: Определяем инструмент и отправляем запрос
tool_definition = {
"name": "get_stock_price",
"description": "Retrieves the current stock price for a given company",
"input_schema": {
"type": "object",
"properties": {
"company": {
"type": "string",
"description": "The company name to fetch stock data for"
}
},
"required": ["company"]
}
}
response = client.messages.create(
model="claude-3-opus-20240229",
messages=[{"role": "user", "content": "How many shares of General Motors can I buy with $500?"}],
max_tokens=500,
tools=[tool_definition]
)
# Шаг 2: Claude отвечает с stop_reason="tool_use"
# Шаг 3: Вы вызываете get_stock_price("General Motors") и возвращаете результат
# Шаг 4: Claude формирует финальный ответ с данными
Типичные сценарии
- Корпоративные данные: CRM, ERP, ITSM
- Финансовый анализ и отчётность
- Медицинская диагностика с EHR
- Поддержка клиентов с базами знаний
- Разработка ПО: IDE, VCS, трекеры задач
Нарисуйте диаграмму 4-шагового цикла tool use для конкретного сценария: чатбот для заказа пиццы с инструментом check_menu. Опишите каждый шаг словами.
Скопируйте и адаптируйте под свой контекст. Текст в треугольных скобках — то, что нужно заменить.
Я строю агента на Claude с инструментами. Бизнес-сценарий: <опишите задачу> Какие инструменты мне нужны? Для каждого инструмента предложи: 1. Название и описание 2. Входные параметры (JSON Schema) 3. Что функция должна возвращать 4. Когда Claude должен её вызывать
- Думают, что Claude сам выполняет код — нет, он только запрашивает вызов.
- Забывают вернуть tool_result — Claude ждёт ответа и не может продолжить.
- Пишут слабые описания инструментов — Claude выбирает инструмент по description.
- Хорошее description инструмента важнее хорошего промпта — Claude решает по нему.
- stop_reason='tool_use' — ваш триггер для вызова функции.
- Шаги 3 и 4 опциональны: иногда достаточно только получить tool_use запрос от Claude.
Когда Claude нужны данные в реальном времени, нужно выполнить действие во внешней системе или гарантировать точные числовые расчёты.
Когда задача решается промптингом без внешних данных — tool use добавляет латентность и сложность.