Инструменты и JSON-ответы

Модель может не только писать текст, но и просить ваш код что-то сделать: посмотреть погоду, поискать в базе, отправить письмо. А ответ можно получить строго по вашей схеме — без «лишних слов».

Вызов функций

Опишите функции, которые готовы выполнить, и передайте их в запросе.

{
  "model": "gpt-5.6-sol",
  "messages": [{ "role": "user", "content": "Погода в Калининграде?" }],
  "tools": [
    {
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Текущая погода в городе",
        "parameters": {
          "type": "object",
          "properties": { "city": { "type": "string" } },
          "required": ["city"]
        }
      }
    }
  ]
}

Дальше сценарий из двух шагов: модель просит вызов — вы отдаёте результат.

// 1. Модель просит вызвать функцию
const first = await client.chat.completions.create({ model, messages, tools });
const call = first.choices[0].message.tool_calls?.[0];

if (call) {
  const args = JSON.parse(call.function.arguments);
  const result = await getWeather(args.city); // ваш код

  // 2. Возвращаем результат и получаем финальный ответ
  messages.push(first.choices[0].message);
  messages.push({ role: "tool", tool_call_id: call.id, content: JSON.stringify(result) });

  const final = await client.chat.completions.create({ model, messages, tools });
  console.log(final.choices[0].message.content);
}
Выполняет функции всегда ваш код. Проверяйте аргументы перед выполнением — модель может передать неожиданные значения.

Строгий JSON

Если ответ идёт дальше в код, задайте схему — модель вернёт объект нужной структуры, парсить текст не придётся.

{
  "model": "gpt-5.6-sol",
  "messages": [{ "role": "user", "content": "Разбери адрес: Ленинский 12, Калининград" }],
  "response_format": {
    "type": "json_schema",
    "json_schema": {
      "name": "address",
      "schema": {
        "type": "object",
        "properties": {
          "street": { "type": "string" },
          "house": { "type": "string" },
          "city": { "type": "string" }
        },
        "required": ["street", "house", "city"],
        "additionalProperties": false
      }
    }
  }
}

Поиск в интернете

Сам шлюз в сеть не ходит. Добавьте инструмент вида web_search, выполняйте поиск своим сервисом и передавайте найденное обратно в диалог — модель ответит с опорой на свежие данные.

Что дальше