~ 12 минут
OpenAI Function Calling: как это работает и как использовать в реальном проекте
1671
30.10.2023
Разобрал OpenAI Function Calling на практике: как работает, как внедрить и какие ошибки возникают. Реальный пример на Node.js.


Содержание
OpenAI Function Calling — это штука, которая позволяет модели не просто отвечать текстом, а вызывать функции в вашем коде и возвращать структурированные данные.
Когда я впервые это попробовал, стало понятно, что это вообще другой уровень взаимодействия с API. По сути, ты даешь модели список функций, а она сама решает, когда их использовать.
В этой статье я покажу:
- как это работает на практике
- простой пример на Node.js
- где это реально может использоваться
- и какие есть подводные камни
Минимальный пример
const response = await openai.chat.completions.create({ model: "gpt-3.5-turbo", messages, functions, function_call: "auto" })
Здесь ключевой момент — function_call: "auto".
Это значит:
- модель может просто ответить текстом
- или может решить, что нужно вызвать функцию
И это решение она принимает сама.
Как это вообще работает
Если упростить максимально:
- ты описываешь функции (название, параметры)
- передаешь их в OpenAI
- модель получает запрос пользователя
- если нужно — возвращает вызов функции (с аргументами)
Дальше уже ты:
- вызываешь функцию у себя
- и отдаешь результат обратно модели
Где это реально используется
Когда смотришь на это сначала, кажется “ну ок, прикольно”. Но на практике это открывает довольно мощные сценарии:
- чат-боты, которые реально что-то делают, а не просто отвечают
- интеграции с API (поиск, заказы, данные)
- автоматизация внутри сервисов
- AI-ассистенты, которые дергают твой backend
- CRM / админки / внутренние инструменты
По сути, ты даешь GPT интерфейс к своему приложению.
Полный пример: запрос информации о рейсе
Сценарий: пользователь пишет → модель понимает → вызывает функцию → возвращаем ответ
1. Установка
npm i openai moment dotenv
2. Базовая настройка
require('dotenv').config() const OpenAI = require('openai') const moment = require('moment') const openai = new OpenAI() async function run() {} run() .then(d => console.log(d)) .catch(e => console.log(e))
3. Сообщение пользователя + описание функции
const messages = [{ role: "user", content: "Когда следующий рейс из Алматы в Баку?" }] const functions = [{ name: "get_flight_info", description: "Get flight information between two locations", parameters: { type: "object", properties: { loc_origin: { type: "string", description: "Departure airport" }, loc_destination: { type: "string", description: "Destination airport" } }, required: ["loc_origin", "loc_destination"] } }]
4. Вызов OpenAI
const response = await openai.chat.completions.create({ model: "gpt-3.5-turbo", messages, functions, function_call: "auto" })
5. Реализация функции
function getFlightInfo({ loc_origin, loc_destination }) { return JSON.stringify({ loc_origin, loc_destination, datetime: moment().add(2, 'hours'), airline: "KLM", flight: "KL643" }) }
6. Обработка вызова функции
const responseMessage = response.choices[0].message if (responseMessage.function_call) { const availableFunctions = { get_flight_info: getFlightInfo } const functionName = responseMessage.function_call.name const functionArgs = JSON.parse(responseMessage.function_call.arguments) const functionResponse = availableFunctions[functionName](functionArgs) messages.push({ role: "function", name: functionName, content: functionResponse }) const secondResponse = await openai.chat.completions.create({ model: "gpt-3.5-turbo", messages }) console.log(secondResponse) }
Ошибки, на которые я наткнулся
- модель не вызывает функцию → значит описание слишком размытое
- JSON в arguments может приходить кривой
- забываешь отправить результат обратно в messages
- неправильно настроен
function_call - иногда модель просто отвечает текстом
Обновление
OpenAI постепенно уходит от chat.completions к новому API (responses).
https://platform.openai.com/docs
FAQ
Что это вообще дает?
Позволяет GPT не просто отвечать, а реально взаимодействовать с кодом.
Чем отличается от обычного prompt?
Prompt → текст
Function Calling → структура + выполнение логики
Когда использовать?
Когда нужно, чтобы модель что-то делала, а не просто отвечала.
Можно ли без backend?
Нет.
Вывод
Function Calling — это способ связать GPT с реальной логикой приложения.
Ты даешь модели функции → она сама решает, когда их дергать → и ты получаешь управляемое поведение.
И вот с этого момента GPT перестает быть просто чатиком.
Читать далее
OpenAI предлагает разработчикам мощные инструменты и API, основанные на современных языковых моделях. Узнайте о фреймворке LangCha...
Next.js - это фреймворк, основанный на React, который позволяет создавать веб-приложения с улучшенной производительностью и улучше...
Нейронные сети плотно вошли в нашу жизнь. Давайте посмотрим, какие же нейросети уже существуют в 2023 году
Есть интересная идея?
И вы очень хотите ее реализовать, пишите нам и получите подробное коммерческое предложение и быструю реализацию