раздел 03

Использование по API

Модели вызываются через REST API сервиса foundationModels. Запрос - это HTTP POST с JSON-телом: какую модель взять, какие сообщения отправить и какие параметры генерации использовать. Авторизация - через заголовок с API-ключом или IAM-токеном.

Как указывается модель

Модель задаётся строкой-URI, в которую входит идентификатор вашего каталога. Для YandexGPT это выглядит так: gpt://<folder-id>/yandexgpt-lite (или другая версия модели вместо yandexgpt-lite). Подставьте свой folder-id из консоли.

Авторизация

В заголовке Authorization передаётся либо API-ключ как Api-Key <ключ>, либо IAM-токен как Bearer <токен>. Идентификатор каталога в ряде запросов также передают отдельным заголовком.

Запрос к YandexGPT: curl

curl -s \
  -H "Authorization: Api-Key ${YANDEX_API_KEY}" \
  -H "x-folder-id: ${YANDEX_FOLDER_ID}" \
  -H "Content-Type: application/json" \
  -d '{
    "modelUri": "gpt://'"${YANDEX_FOLDER_ID}"'/yandexgpt-lite",
    "completionOptions": { "temperature": 0.3, "maxTokens": 500 },
    "messages": [
      { "role": "system", "text": "Ты помощник. Отвечай кратко и по-русски." },
      { "role": "user", "text": "Объясни, что такое эмбеддинги, в трёх предложениях." }
    ]
  }' \
  https://llm.api.cloud.yandex.net/foundationModels/v1/completion

Здесь modelUri указывает на модель в вашем каталоге, messages - это диалог с ролями (system задаёт поведение, user - запрос), completionOptions управляет генерацией. Ответ приходит в JSON, текст лежит внутри поля с альтернативами.

Запрос к YandexGPT: Python

import os
import requests

API_KEY = os.environ["YANDEX_API_KEY"]
FOLDER_ID = os.environ["YANDEX_FOLDER_ID"]

url = "https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
headers = {
    "Authorization": f"Api-Key {API_KEY}",
    "x-folder-id": FOLDER_ID,
    "Content-Type": "application/json",
}
payload = {
    "modelUri": f"gpt://{FOLDER_ID}/yandexgpt-lite",
    "completionOptions": {"temperature": 0.3, "maxTokens": 500},
    "messages": [
        {"role": "system", "text": "Ты помощник. Отвечай кратко и по-русски."},
        {"role": "user", "text": "Назови три применения LLM в поддержке клиентов."},
    ],
}

resp = requests.post(url, headers=headers, json=payload, timeout=60)
resp.raise_for_status()
data = resp.json()
print(data["result"]["alternatives"][0]["message"]["text"])

Ключ и идентификатор каталога берутся из переменных окружения YANDEX_API_KEY и YANDEX_FOLDER_ID - так секрет не попадает в код.

Эмбеддинги (кратко)

Для эмбеддингов используется отдельная модель (URI вида emb://<folder-id>/...) и свой endpoint textEmbedding. Запрос принимает текст и возвращает вектор чисел. Эти векторы складывают в векторную базу и потом ищут похожие фрагменты для RAG и семантического поиска.

YandexART (кратко)

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