Вызов функций (Tool Calling)
Как использовать функции и инструменты в запросах к AI моделям
Вызов функций (Tool Calling)
Tool Calling позволяет AI моделям вызывать определённые вами функции для получения данных или выполнения действий.
Поддержка tool calling зависит от модели. Проверяйте возможности в каталоге моделей.
Что такое Tool Calling?
Tool Calling (вызов функций) позволяет модели:
- Понять, когда нужно вызвать функцию
- Определить, какую функцию вызвать
- Извлечь параметры из запроса пользователя
- Вернуть структурированный ответ для вызова
Сценарии использования
| Сценарий | Примеры |
|---|---|
| Получение данных | Запрос актуальной информации из внешних источников |
| Выполнение действий | Отправка email, создание задач, бронирование |
| Интеграции | Подключение к CRM, ERP, базам данных |
| Вычисления | Сложные расчёты, которые модель не может выполнить |
Как это работает
- Определите функции: опишите доступные функции с параметрами в формате JSON Schema
- Отправьте запрос: передайте описание функций вместе с сообщением пользователя
- Получите вызов: модель вернёт название функции и параметры для вызова
- Выполните функцию: вызовите функцию в своём коде и верните результат модели
- Получите финальный ответ: модель использует результат для формирования ответа пользователю
Пример использования
1. Определение функций
# tools передаётся в запросе вместе с messages
curl -X POST "https://api.usellm.ru/v1/chat/completions" \
-H "Authorization: Bearer <USELLM_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-6-astra",
"messages": [{"role": "user", "content": "Какая погода в Москве?"}],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить текущую погоду в указанном городе",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Название города, например Москва"},
"units": {"type": "string", "enum": ["celsius", "fahrenheit"], "description": "Единицы измерения температуры"}
},
"required": ["city"]
}
}
}
]
}'
2. Отправка запроса с функциями
curl -X POST "https://api.usellm.ru/v1/chat/completions" \
-H "Authorization: Bearer <USELLM_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-6-astra",
"messages": [
{"role": "user", "content": "Какая погода в Москве?"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить текущую погоду в указанном городе",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Название города"}
},
"required": ["city"]
}
}
}
],
"tool_choice": "auto"
}'
3. Обработка вызова и отправка результата
curl -X POST "https://api.usellm.ru/v1/chat/completions" \
-H "Authorization: Bearer <USELLM_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-6-astra",
"messages": [
{"role": "user", "content": "Какая погода в Москве?"},
{"role": "assistant", "content": null, "tool_calls": [{"id": "call_abc123", "type": "function", "function": {"name": "get_weather", "arguments": "{\"city\": \"Москва\"}"}}]},
{"role": "tool", "tool_call_id": "call_abc123", "content": "{\"temperature\": 15, \"units\": \"celsius\", \"condition\": \"облачно с прояснениями\"}"}
],
"tools": []
}'
Параметры tool_choice
| Значение | Описание |
|---|---|
auto | Модель решает, вызывать ли функцию |
required | Модель обязательно вызовет одну из функций |
none | Модель не будет вызывать функции |
{"type": "function", "function": {"name": "..."}} | Вызвать конкретную функцию |
Параллельные вызовы
Модель может запросить несколько функций одновременно:
{
"tool_calls": [
{
"id": "call_1",
"function": { "name": "get_weather", "arguments": "{\"city\": \"Москва\"}" }
},
{
"id": "call_2",
"function": { "name": "get_weather", "arguments": "{\"city\": \"Санкт-Петербург\"}" }
}
]
}
Обрабатывайте все вызовы и возвращайте результаты для каждого tool_call_id.