Перейти к содержанию

← Применение

Промпт-инжиниринг / Применение

Вызов функций в нейросетях: как LLM работают с внешними API

Представьте, что ваша нейросеть не просто генерирует текст, а может самостоятельно нажать кнопку в интерфейсе, запросить данные из базы или отправить запрос к внешнему сервису. Именно это и делает технология вызова функций (Function Calling) - она превращает языковые модели в активных исполнителей, которые умеют работать с внешними инструментами. По сути, это мост между естественным языком и программным кодом.

Как работает вызов функций

Когда вы спрашиваете у LLM: "Какая погода в Москве?", модель сама по себе не знает ответа - её обучали на текстах, а не на реальных данных. Но если вы "познакомите" её с функцией get_current_weather, она сможет определить, что для ответа нужно вызвать именно её, и подготовит структурированный запрос в формате JSON. Дальше ваша программа получает этот JSON, выполняет реальный вызов к API погоды и возвращает результат обратно модели для формирования итогового ответа пользователю.

Это работает не только с погодой. Вы можете подключить функции для работы с CRM, базами данных, платежными системами или внутренними корпоративными сервисами. Особенно актуально для российских разработчиков, которые интегрируют нейросети в бизнес-процессы: например, YandexGPT или GigaChat от Сбера можно научить запрашивать курсы валют, проверять наличие товара на складе или создавать заявки в 1С.

Практический пример: запрос погоды через GPT-4

Давайте разберем конкретный пример с использованием OpenAI API. Пользователь задает вопрос:

Промпт:

What is the weather like in London?

Мы хотим, чтобы модель поняла, что для ответа нужны данные о погоде. Для этого мы описываем доступную ей функцию в специальном формате:

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-запросов.

  • Интеллектуальный поиск. Агент получает вопрос, определяет, в какой базе знаний или документе искать ответ, вызывает функцию поиска, анализирует результаты и выдает точный ответ со ссылками на источники.

Что почитать для углубления

Технология вызова функций - это следующий шаг в эволюции LLM, превращающий их из генераторов текста в полноценных цифровых помощников, способных действовать в реальном мире. Начните с простого примера - подключения к погодному сервису, - а затем масштабируйте подход до сложных бизнес-процессов.

Попробуйте ENGRAM на своих данных

Нейросеть на ваших встречах, документах и переписке: отвечает со ссылкой на источник. Это ваша вторая память на базе ИИ. Данные хранятся в России, старт бесплатный.

Зарегистрироваться бесплатно
Обучаем команды работе с нейросетями под ваши процессы. Узнать о корпоративном обучении