от основ до продвинутых техникпримеры и разборыриски и ограничения

← Применение

[Промпт-инжиниринг](/akademiya/prompt-inzhiniring/) / [Применение](../)

Вызов функций в нейросетях: как 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"],
            },
        },   
    }
]

Ключевые элементы здесь:

Когда мы отправляем запрос пользователя вместе с описанием инструментов, модель не выполняет функцию, а возвращает готовый 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

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

Где это использовать: реальные кейсы

Вызов функций открывает множество практических возможностей:

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

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