Возможности API

Вызов инструментов (function calling) через AI Gateway

Как модель вызывает ваши функции: описание tools, разбор tool_calls, агентные циклы и возврат результата, пример кода на Python — с оплатой в рублях.

Function calling позволяет модели не просто отвечать текстом, а запрашивать вызов ваших функций: узнать погоду, поискать в базе, оформить заказ, дёрнуть внешний API. Вы описываете доступные инструменты, модель сама решает, какой из них и с какими аргументами вызвать, а ваш код исполняет вызов и возвращает результат обратно. В AI Gateway это работает через стандартные поля tools и tool_calls, как в оригинальном API OpenAI.

Как это работает

В запросе вы передаёте массив tools — описания функций в формате JSON Schema. Модель, если сочтёт нужным, вернёт не текст, а tool_calls с именем функции и аргументами. Ваш код исполняет функцию, добавляет результат в диалог сообщением с ролью tool и снова обращается к модели — та формулирует финальный ответ с учётом полученных данных.

from openai import OpenAI
import json

client = OpenAI(
    base_url="https://ai-gatewey.ru/v1",
    api_key="sk-aigate-ваш_ключ",
)

tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Погода в городе",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

messages = [{"role": "user", "content": "Какая погода в Москве?"}]
resp = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=messages,
    tools=tools,
)
call = resp.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)

# исполняем функцию у себя и возвращаем результат модели
result = {"city": args["city"], "temp": "+18°C"}
messages.append(resp.choices[0].message)
messages.append({
    "role": "tool",
    "tool_call_id": call.id,
    "content": json.dumps(result),
})
final = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=messages,
    tools=tools,
)
print(final.choices[0].message.content)

Сценарии

  • Агентные циклы — модель последовательно вызывает инструменты (поиск → расчёт → оформление), пока не решит задачу; цикл повторяется, пока приходят tool_calls.
  • Доступ к актуальным данным — курсы, остатки на складе, статус заказа: модель берёт свежие цифры из вашей системы, а не из памяти.
  • Действия в системах — создать заявку, отправить письмо, изменить запись: модель формирует вызов, ваш код его исполняет под вашим контролем.
  • Структурированное извлечение — описав функцию с нужными полями, вы гарантированно получаете аргументы по заданной схеме.
Модель только предлагает вызов — исполняете его вы. Валидируйте аргументы и не давайте инструментам необратимых прав без явного подтверждения: модель может запросить вызов с неожиданными параметрами.

Частые вопросы

Какие модели поддерживают вызов инструментов?

Только модели с поддержкой tools — их актуальный список собирается живьём ниже по каталогу. На карточке в каталоге такие модели помечены бейджем «инструменты».

Можно ли заставить модель вызвать конкретную функцию?

Да — параметр tool_choice управляет поведением: auto (модель решает сама), required (обязательно вызвать какой-то инструмент) или явное указание конкретной функции.

Модель может вызвать несколько инструментов сразу?

Да, в одном ответе может прийти несколько элементов в tool_calls. Исполните их все и верните по результату на каждый tool_call_id.

Соберите первого агента с инструментами

Получить ключ

Модели с этой возможностью

Живой срез каталога — цены за 1 млн токенов:

Все модели с фильтром по возможностям →