Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Foundation Models
    • Все инструкции
    • Отключить логирование запросов
    • Получить API-ключ
      • Оценить запрос в токенах
      • Отправить запрос в промт-режиме
      • Отправить серию запросов в режиме чата
      • Отправить асинхронный запрос
      • Вызвать функцию из модели
    • Пакетная обработка данных
  • Yandex Cloud ML SDK
  • Совместимость с OpenAI
  • Управление доступом
  • Правила тарификации
  • Публичные материалы
  • История изменений
  1. Пошаговые инструкции
  2. Генерация текста
  3. Вызвать функцию из модели

Вызвать функцию из модели

Статья создана
Yandex Cloud
Обновлена 28 апреля 2025 г.

При работе с моделями YandexGPT Pro и Llama 70B1 вы можете обращаться к внешним инструментам, API и базам данных с помощью вызова функций.

Например, у вас есть функция weatherTool, которая в качестве входного параметра принимает название города и возвращает текущую температуру в нем. Обработку ответов модели, работу функции и формирование запросов вам нужно предусмотреть самостоятельно.

Чтобы модель могла вызвать функцию, если это будет необходимо:

cURL
  1. Сформируйте запрос к модели, например, в файле body.json:

    {
        "modelUri": "gpt://<идентификатор_каталога>/yandexgpt",
        "tools": [
            {
                "function": {
                    "name": "weatherTool",
                    "description": "Получает текущую погоду в указанном городе.",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "city": {
                                "type": "string",
                                "description": "Название города, например, Москва"
                            }
                        },
                        "required": [
                            "city"
                        ]
                    }
                }
            }
        ],
        "messages": [
            {
                "role": "user",
                "text": "Какая погода в Санкт-Петербурге?"
            }
        ]
    }
    

    Где:

    • modelUri — идентификатор модели, которая будет использоваться для вызова функций. Параметр содержит идентификатор каталога Yandex Cloud или идентификатор дообученной модели.
    • tools — массив всех передаваемых модели функций.
    • function — описание и параметры функции weatherTool.
    • messages — массив сообщений, которые задают контекст для модели:

      • role — роль отправителя сообщения:

        • user — предназначена для отправки пользовательских сообщений к модели.
        • system — позволяет задать контекст запроса и определить поведение модели.
        • assistant — используется для ответов, которые генерирует модель. При работе в режиме чата ответы модели, помеченные ролью assistant, включаются в состав сообщения для сохранения контекста беседы. Не передавайте сообщения пользователя с этой ролью.
      • text — текстовое содержимое сообщения.

  2. Отправьте запрос к модели:

    export FOLDER_ID=<идентификатор_каталога>
    export IAM_TOKEN=<IAM-токен>
    curl \
      --request POST \
      --header "Content-Type: application/json" \
      --header "Authorization: Bearer ${IAM_TOKEN}" \
      --header "x-folder-id: ${FOLDER_ID}" \
      --data "@<путь_до_файла_json>" \
      "https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
    

    Где:

    • FOLDER_ID — идентификатор каталога, на который у вашего аккаунта есть роль ai.languageModels.user или выше.
    • IAM_TOKEN — IAM-токен вашего аккаунта.
  3. Модель вернет ответ с полем ToolCallList, содержащим обращение к вызываемой функции и необходимые параметры в виде JSON Schema.

    Пример ответа:

    {
        "result": {
          "alternatives": [
            {
              "message": {
                "role": "assistant",
                "toolCallList": {
                  "toolCalls": [
                    {
                      "functionCall": {
                        "name": "weatherTool",
                        "arguments": {
                          "city": "Санкт-Петербург"
                        }
                      }
                    }
                  ]
                }
              },
              "status": "ALTERNATIVE_STATUS_TOOL_CALLS"
            }
          ],
          "usage": {
            "inputTextTokens": "74",
            "completionTokens": "14",
            "totalTokens": "88",
            "completionTokensDetails": {
              "reasoningTokens": "0"
            }
          },
          "modelVersion": "23.10.2024"
        }
    }
    
  4. Обработайте ответ модели (поле toolCallList) и инициируйте работу функции weatherTool, передав в нее пришедшие параметры.

  5. Дополните массив messages в файле body.json ответом модели и результатами вызова функции.

    Пример запроса
    {
        "modelUri": "gpt://<идентификатор_каталога>/yandexgpt",
        "tools": [
          {
            "function": {
              "name": "weatherTool",
              "description": "Получает текущую погоду в указанном городе.",
              "parameters": {
                "type": "object",
                "properties": {
                  "city": {
                    "type": "string",
                    "description": "Название города, например, Москва"
                  }
                },
                "required": ["city"]
              }
            }
          }
        ],
        "messages": [
          {
            "role": "user",
            "text": "Какая погода в Санкт-Петербурге?"
          },
          {
            "role": "assistant",
            "toolCallList": {
              "toolCalls": [
                {
                  "functionCall": {
                    "name": "weatherTool",
                    "arguments": {
                      "city": "Санкт-Петербург"
                    }
                  }
                }
              ]
            }
          },
          {
            "role": "assistant",
            "toolResultList": {
              "toolResults": [
                {
                  "functionResult": {
                    "name": "weatherTool",
                    "content": "8°C"
                  }
                }
              ]
            }
          }
        ]
    }
    

    Где toolResultList — результаты вызова функции.

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

    {
      "result": {
        "alternatives": [
          {
            "message": {
              "role": "assistant",
              "text": "В Санкт-Петербурге сейчас 8°C."
            },
            "status": "ALTERNATIVE_STATUS_FINAL"
          }
        ],
        "usage": {
          "inputTextTokens": "108",
          "completionTokens": "10",
          "totalTokens": "118",
          "completionTokensDetails": {
            "reasoningTokens": "0"
          }
        },
        "modelVersion": "23.10.2024"
      }
    }
    

1 Llama создана компанией Meta. Meta признана экстремистской организацией, ее деятельность в России запрещена.

Была ли статья полезна?

Предыдущая
Отправить асинхронный запрос
Следующая
Сгенерировать изображение
Проект Яндекса
© 2025 ООО «Яндекс.Облако»