Идея tool use
Модель сама не ходит в твою базу заказов. Но ты можешь дать ей инструмент — описание функции, которую она вправе «вызвать». Модель не выполняет её сама: она говорит «вызови get_order с таким аргументом», а саму функцию запускаешь у себя.
Описываем инструмент
Каждый инструмент — это name, description и input_schema (JSON Schema аргументов). Хорошее описание важно: по нему модель решает, когда инструмент нужен.
tools = [{
"name": "get_order",
"description": "Вернуть статус заказа по его номеру",
"input_schema": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"]
}
}]
Запрос и ответ
Передаёшь tools в запрос. tool_choice управляет поведением: auto (по умолчанию), any, конкретный tool или none.
from anthropic import Anthropic
client = Anthropic()
resp = client.messages.create(
model="claude-opus-4-8",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "Где мой заказ 7788?"}],
)
print(resp.stop_reason) # tool_use
Если модель решила вызвать инструмент, придёт stop_reason: "tool_use", а в content будет блок с type == "tool_use":
{
"type": "tool_use",
"id": "toolu_01ABC",
"name": "get_order",
"input": {"order_id": "7788"}
}
id блока (toolu_...) — он понадобится, чтобы вернуть результат функции в следующем уроке.