Промпт-инжиниринг / Применение
Вызов функций в нейросетях: как LLM работают с внешними API¶
Представьте, что ваша нейросеть не просто генерирует текст, а может самостоятельно нажать кнопку в интерфейсе, запросить данные из базы или отправить запрос к внешнему сервису. Именно это и делает технология вызова функций (Function Calling) - она превращает языковые модели в активных исполнителей, которые умеют работать с внешними инструментами. По сути, это мост между естественным языком и программным кодом.
Как работает вызов функций¶
Когда вы спрашиваете у LLM: "Какая погода в Москве?", модель сама по себе не знает ответа - её обучали на текстах, а не на реальных данных. Но если вы "познакомите" её с функцией get_current_weather, она сможет определить, что для ответа нужно вызвать именно её, и подготовит структурированный запрос в формате JSON. Дальше ваша программа получает этот JSON, выполняет реальный вызов к API погоды и возвращает результат обратно модели для формирования итогового ответа пользователю.
Это работает не только с погодой. Вы можете подключить функции для работы с CRM, базами данных, платежными системами или внутренними корпоративными сервисами. Особенно актуально для российских разработчиков, которые интегрируют нейросети в бизнес-процессы: например, YandexGPT или GigaChat от Сбера можно научить запрашивать курсы валют, проверять наличие товара на складе или создавать заявки в 1С.
Практический пример: запрос погоды через GPT-4¶
Давайте разберем конкретный пример с использованием OpenAI API. Пользователь задает вопрос:
Промпт:
Мы хотим, чтобы модель поняла, что для ответа нужны данные о погоде. Для этого мы описываем доступную ей функцию в специальном формате:
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
},
}
]
Ключевые элементы здесь:
- name: название функции, которое модель будет использовать.
- description: описание на естественном языке - по нему модель решает, подходит ли функция для запроса.
- parameters: схема аргументов в формате JSON Schema.
Когда мы отправляем запрос пользователя вместе с описанием инструментов, модель не выполняет функцию, а возвращает готовый JSON с заполненными аргументами.
Ответ модели:
ChatCompletionMessage(
content=None,
role='assistant',
tool_calls=[ChatCompletionMessageToolCall(
function=Function(
arguments='{"location":"London","unit":"celsius"}',
name='get_current_weather'
)
)]
)
Видите? Модель корректно определила, что нужна функция get_current_weather, и извлекла из запроса параметры: location = "London", unit = "celsius". Теперь ваша программа может взять эти аргументы, вызвать реальный метеорологический API (например, OpenWeatherMap) и передать полученные данные обратно модели для формирования финального ответа.
Готовые примеры для экспериментов¶
Чтобы быстрее разобраться с технологией, изучите готовый ноутбук с примерами:
Промпт:
Function Calling with OpenAI APIs
https://github.com/dair-ai/Prompt-Engineering-Guide/blob/main/notebooks/pe-function-calling.ipynb
Там вы найдете рабочий код, который можно адаптировать под свои задачи. Для российских разработчиков аналогичный подход применим и к локальным моделям или тем, что доступны через российские облака - принцип описания функций и обработки ответов остается тем же.
Где это использовать: реальные кейсы¶
Вызов функций открывает множество практических возможностей:
-
Умные чат-боты и агенты. Вместо того чтобы просто болтать, бот может проверять статус заказа, бронировать встречи или искать информацию в корпоративной базе знаний. Например, сотрудник спрашивает: "Сколько осталось ноутбуков модели X на центральном складе?" - модель вызывает функцию
check_stock, получает актуальные данные из 1С и формирует ответ. -
Преобразование текста в структурированные данные. Нейросеть может анализировать новостную статью и извлекать из неё имена компаний, суммы сделок, даты - всё в виде готового JSON для загрузки в базу данных. Это автоматизирует рутинный сбор информации.
-
Решение сложных задач. Если задача требует вычислений, которые модель не может выполнить сама (например, построение графика или статистический анализ), она вызывает специализированную функцию, передает ей параметры и интерпретирует результат.
-
Интеграция с любыми API. Фактически вы можете "научить" LLM работать с любым внешним сервисом: от Telegram до банковских систем. Модель выступает переводчиком с естественного языка на язык API-запросов.
-
Интеллектуальный поиск. Агент получает вопрос, определяет, в какой базе знаний или документе искать ответ, вызывает функцию поиска, анализирует результаты и выдает точный ответ со ссылками на источники.
Что почитать для углубления¶
- Официальная документация OpenAI по вызову функций: OpenAI's Function Calling
- Практические рецепты: How to call functions with chat models
- Использование структурированных данных: Pushing ChatGPT's Structured Data Support To Its Limits
- Решение математических задач: Math Problem Solving with Function Calling
Технология вызова функций - это следующий шаг в эволюции LLM, превращающий их из генераторов текста в полноценных цифровых помощников, способных действовать в реальном мире. Начните с простого примера - подключения к погодному сервису, - а затем масштабируйте подход до сложных бизнес-процессов.
Нейросеть на ваших встречах, документах и переписке: отвечает со ссылкой на источник. Это ваша вторая память на базе ИИ. Данные хранятся в России, старт бесплатный.
Зарегистрироваться бесплатноENGRAM запоминает ваши встречи, документы и переписку и мгновенно находит ответ со ссылкой на источник. Ваша вторая память на базе ИИ. Данные в России, старт бесплатный.
Зарегистрироваться бесплатно