Чтобы обратиться к YandexGPT из кода, нужны три вещи: каталог в Yandex Cloud, сервисный аккаунт с ролью ai.languageModels.user и API-ключ этого аккаунта. Дальше один POST на https://llm.api.cloud.yandex.net/foundationModels/v1/completion, и в ответе приходит сгенерированный текст. На всю настройку уходит минут двадцать, карту привязывать на старте не нужно.
Сложное начинается после. Платите вы не за запросы, а за токены, поэтому системный промпт на две страницы умножается на каждый вызов и тихо съедает бюджет. Ниже разберём и настройку, и арифметику счёта. Если ещё не решили, какая модель нужна, сначала посмотрите сравнение линейки YandexGPT, а про сами токены у нас есть отдельный разбор.
Что завести в Yandex Cloud до первого запроса

Yandex Cloud устроен матрёшкой: аккаунт → облако → каталог → ресурсы внутри каталога. Модели живут не «где-то в интернете», а в конкретном каталоге, и его идентификатор вы будете писать в каждом запросе.
Каталог и folder_id
- Заходите в консоль Yandex Cloud под своим Yandex ID. Если почта или Алиса у вас уже есть, аккаунт тоже есть.
- При первом входе платформа сама создаёт облако и внутри него каталог
default. - Открываете каталог и копируете его идентификатор, строку вида
b1g4c5h7m2k9p3r6t8v0. Это и естьfolder_id.
folder_id нужен дважды: в адресе модели и в заголовке запроса. Держите его под рукой, дальше он появится в каждом примере.
Сервисный аккаунт и роль
Личный Yandex ID для API не годится: под ним ключ выпустить нельзя, а IAM-токен живёт всего 12 часов. Для программы заводят сервисный аккаунт, отдельную «учётку для робота» с собственным набором прав.
- В каталоге открываете раздел сервисных аккаунтов и создаёте новый, например
gpt-bot. - Назначаете ему роль
ai.languageModels.user, минимально достаточную, чтобы вызывать генеративные модели. - Если планируете работать с ассистентами и тредами, добавляете
ai.assistants.editor. Для простой генерации текста она не нужна.
Роль admin на весь каталог тоже даст доступ, но это плохая привычка. Ключ, который лежит в коде или в CI, рано или поздно утекает, и разница между «утёк доступ к генерации текста» и «утёк доступ ко всей инфраструктуре» примерно как между царапиной и переломом.
API-ключ
- Открываете созданный сервисный аккаунт и нажимаете «Создать новый ключ» → API-ключ.
- Выбираете область действия (scope)
yc.ai.models.viewer: этого хватает для вызова моделей. - Копируете секрет. Секрет показывается ровно один раз, потом его можно только перевыпустить.
Сразу в переменные окружения. Положите ключ и
folder_idв.envили в секреты вашего хостинга, а в код передавайте черезos.environ. Ключ, закоммиченный в репозиторий, это самая частая причина внезапного счёта на несколько тысяч рублей.
Если задача не в том, чтобы писать код, а в том, чтобы разобраться с моделями по-человечески, посмотрите курсы с блоком по YandexGPT — там же разбирают и облачную обвязку.
Первый запрос из curl и из Python
Для генерации нужен один эндпоинт и три поля в теле запроса. Проверить связку проще всего из терминала.
curl -X POST https://llm.api.cloud.yandex.net/foundationModels/v1/completion \
-H "Authorization: Api-Key $YC_API_KEY" \
-H "x-folder-id: $YC_FOLDER_ID" \
-H "Content-Type: application/json" \
-d '{
"modelUri": "gpt://'"$YC_FOLDER_ID"'/yandexgpt/rc",
"completionOptions": {"stream": false, "temperature": 0.3, "maxTokens": 300},
"messages": [
{"role": "system", "text": "Отвечай кратко, одним абзацем."},
{"role": "user", "text": "Объясни, что такое эмбеддинг."}
]
}'
Разберём поля, потому что именно в них живут и качество, и цена:
| Поле | Что делает | Что ставить на старте |
|---|---|---|
modelUri |
Адрес модели в формате gpt://folder_id/модель/версия |
yandexgpt/rc для флагмана, yandexgpt-lite для рутины |
temperature |
Разброс ответов от 0 до 1 | 0–0,3 для фактов и классификации, 0,6–0,8 для текстов |
maxTokens |
Потолок длины ответа | Ставить всегда, это предохранитель от счёта |
stream |
Отдавать ответ кусками или целиком | false, пока не делаете чат с живой печатью |
role |
Роль сообщения: system, user, assistant |
Инструкцию в system, вопрос в user |
Тот же запрос на Python, без сторонних SDK:
import os
import requests
API_KEY = os.environ["YC_API_KEY"]
FOLDER_ID = os.environ["YC_FOLDER_ID"]
URL = "https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
def ask(question, system="Отвечай кратко, одним абзацем.", max_tokens=300):
payload = {
"modelUri": f"gpt://{FOLDER_ID}/yandexgpt/rc",
"completionOptions": {
"stream": False,
"temperature": 0.3,
"maxTokens": max_tokens,
},
"messages": [
{"role": "system", "text": system},
{"role": "user", "text": question},
],
}
headers = {
"Authorization": f"Api-Key {API_KEY}",
"x-folder-id": FOLDER_ID,
"Content-Type": "application/json",
}
response = requests.post(URL, json=payload, headers=headers, timeout=60)
response.raise_for_status()
return response.json()["result"]
data = ask("Объясни, что такое эмбеддинг.")
print(data["alternatives"][0]["message"]["text"])
print(data["usage"])
В ответе приходит объект result с тремя интересными частями. В alternatives лежит сам текст и статус завершения: ALTERNATIVE_STATUS_FINAL означает, что модель договорила, а ALTERNATIVE_STATUS_TRUNCATED_FINAL значит, что ответ обрезали по вашему же maxTokens. В modelVersion лежит версия, которая реально отработала. И самое важное для кошелька, блок usage.
{
"inputTextTokens": "412",
"completionTokens": "168",
"totalTokens": "580"
}
Логируйте usage с первого же дня. Это единственный честный счётчик: он показывает, сколько токенов реально ушло на вызов, а не сколько вы предполагали. Без этого лога любая оптимизация превращается в гадание.
У Яндекса есть и официальный Python-SDK, ставится он как pip install yandex-cloud-ml-sdk и убирает ручную сборку JSON. Но на этапе «понять, за что я плачу» полезнее подержать в руках сырой запрос: в нём видно каждое поле, которое влияет на счёт.
Сколько стоит YandexGPT по API
Тарификация посимвольная только на первый взгляд. На деле считаются токены, куски слов, на которые модель режет текст. В русском языке один токен обычно короче, чем в английском, поэтому переводить рубли в «количество символов» на глазок не стоит.
| Модель | Идентификатор | Цена за 1000 токенов | Когда брать |
|---|---|---|---|
yandexgpt/rc |
0,40 ₽ | Сложные задачи, длинные документы, качество ответа критично | |
| YandexGPT 5 Pro | yandexgpt-5-pro |
0,80 ₽ | Прошлое поколение Pro, для нового кода смысла нет |
| YandexGPT 5 Lite | yandexgpt-lite |
0,20 ₽ | Классификация, теги, короткие ответы, большие объёмы |
| text-search-doc | text-search-doc |
0,01 ₽ | Векторизация документов для поиска |
| text-search-query | text-search-query |
0,01 ₽ | Векторизация пользовательских запросов |
Обратите внимание на строку с 5 Pro: предыдущее поколение стоит вдвое дороже нового флагмана. Если вы копировали пример из статьи двухлетней давности и оставили в modelUri старый идентификатор, вы платите двойной тариф за худшее качество. Это первое, что стоит проверить в работающем проекте.
Теперь арифметика. Допустим, у вас бот поддержки: системный промпт с правилами компании на 900 токенов, вопрос пользователя в среднем 60 токенов, ответ 200 токенов. Итого 1160 токенов на диалог, из них 77% занимает ваш собственный системный промпт, который отправляется заново при каждом вопросе.
| Нагрузка | Токенов в месяц | На флагмане | На Lite |
|---|---|---|---|
| 1000 диалогов | 1,16 млн | ≈ 464 ₽ | ≈ 232 ₽ |
| 10 000 диалогов | 11,6 млн | ≈ 4640 ₽ | ≈ 2320 ₽ |
| 100 000 диалогов | 116 млн | ≈ 46 400 ₽ | ≈ 23 200 ₽ |
Цифры считаем до запуска, а не после первого счёта. Формула простая: (токены промпта + токены вопроса + токены ответа) × число вызовов ÷ 1000 × цена модели. Точное число токенов в вашем промпте не надо угадывать: на том же API есть ручка /foundationModels/v1/tokenize, которая возвращает разбивку текста на токены.
Цены проверяйте перед запуском. Тарифы Яндекса менялись уже не раз, и менялись в обе стороны. Актуальный прайс всегда лежит в разделе цен документации Yandex AI Studio, это новый адрес, старые ссылки на
yandex.cloud/docs/foundation-modelsтеперь редиректят туда же.
Как не спалить бюджет на токенах

Счёт растёт не от числа пользователей, а от того, сколько лишнего вы отправляете в каждом вызове. Пять приёмов, которые дают основную экономию.
- Урежьте системный промпт. Он умножается на каждый запрос, поэтому лишний абзац вежливости стоит вам денег ежедневно. Уберите примеры, которые дублируют друг друга, замените развёрнутые объяснения короткими правилами. Промпт на 900 токенов почти всегда сжимается до 300 без потери качества, а это минус две трети расхода на входе.
- Не отправляйте всю историю диалога. Наивная реализация чата шлёт в модель все предыдущие реплики, и стоимость десятого сообщения выходит в разы выше стоимости первого. Держите последние 3–5 реплик, а старое сжимайте в короткое резюме.
- Кешируйте типовые ответы. В поддержке 60–80% вопросов повторяются формулировками. Нормализуйте вопрос, считайте от него хеш и складывайте ответ в Redis на сутки. Повторный вопрос не доходит до модели вообще и стоит ноль.
- Всегда ставьте
maxTokens. Без потолка модель на неудачном промпте может написать простыню на две тысячи токенов там, где нужен был один абзац. Потолок работает как стоп-кран и качества не режет. - Разведите задачи по моделям. Классификацию обращений, простановку тегов, извлечение полей из текста Lite делает не хуже флагмана и вдвое дешевле. Флагман оставьте там, где ответ читает живой клиент.
Экономит и сам промпт. Хорошо сформулированная инструкция даёт нужный ответ с первого раза, плохая заставляет гонять запрос по три круга и платить трижды. Если проект живёт на API, навык проектирования промптов окупается быстрее любой оптимизации кода: с чего начать, разбираем на странице курсов промпт-инженера.
Поиск по своим документам через эмбеддинги

Самый частый запрос к модели в компании звучит так: «отвечай по нашим регламентам, а не по интернету». Загружать регламенты в промпт целиком нельзя: контекст не резиновый, да и платить за 50 страниц при каждом вопросе никто не будет. Задачу решают эмбеддинги.
Эмбеддинг — это перевод текста в вектор чисел, по которому можно измерять смысловую близость. У Яндекса под это две модели: text-search-doc для документов и text-search-query для пользовательских запросов, обе по 0,01 ₽ за 1000 токенов и обе выдают вектор на 256 измерений. Использовать их надо парой: документы векторизуются одной моделью, вопросы другой, они обучены друг под друга.
Схема сборки базы знаний:
- Режете документы на фрагменты по 300–800 токенов, по смысловым блокам, а не по строкам.
- Каждый фрагмент прогоняете через
text-search-docи складываете вектор рядом с текстом. Это разовая операция, повторяется только при обновлении документа. - Вопрос пользователя прогоняете через
text-search-query. - Считаете косинусную близость и берёте 3–5 самых близких фрагментов.
- Только их подставляете в промпт к YandexGPT вместе с вопросом.
Экономика тут приятная: индексация 200 страниц регламентов это около 120 тысяч токенов, то есть примерно 1,2 ₽ разово. Дальше в каждый запрос уходит не вся база, а пара тысяч токенов найденных фрагментов.
import numpy as np
def cosine(a, b):
a, b = np.array(a), np.array(b)
return float(a @ b / (np.linalg.norm(a) * np.linalg.norm(b)))
def top_chunks(query_vector, index, k=3):
scored = [(cosine(query_vector, item["vector"]), item["text"]) for item in index]
scored.sort(reverse=True, key=lambda pair: pair[0])
return [text for _, text in scored[:k]]
На сотне документов хватит списка в памяти и такого перебора. Когда фрагментов станут десятки тысяч, векторы переезжают в специализированное хранилище, но логика остаётся ровно та же.
Проверяйте не ответ, а подбор фрагментов. Когда база знаний врёт, в девяти случаях из десяти виновата не модель, а поиск: в промпт попали не те куски. Логируйте, какие фрагменты ушли в запрос, это экономит часы отладки.
Какую модель брать под задачу
Выбор сводится к одному вопросу: кто читает ответ, программа или человек.
| Задача | Модель | Почему |
|---|---|---|
| Классификация обращений, теги, извлечение полей | Lite | Ответ короткий и формальный, качества хватает, цена вдвое ниже |
| Черновики писем, описания товаров, саммари | Lite, флагман на выборке | Гоняйте объём на Lite, спорные случаи переотправляйте флагману |
| Ответы клиенту, работа с длинным документом, рассуждение | Флагман | Держит контекст и инструкции, ошибается заметно реже |
| Подсказки по коду в редакторе | YandexGPT Code Assistant | Отдельный продукт с расширениями для VS Code и JetBrains |
| Закрытый контур без интернета | Lite 8B локально | Открытые веса лежат на HuggingFace, разворачивается на своём железе |
Рабочая тактика: каскад, сначала Lite, флагман только на сложных случаях. Модель попроще обрабатывает поток, а на флагман уходит то, где Lite сам сообщил о неуверенности или где ответ не прошёл валидацию по формату. На реальных объёмах такая схема срезает счёт примерно вдвое при почти том же качестве.
Сравнить модели между собой на русских задачах можно по независимому бенчмарку MERA: там русскоязычные тесты и таблица лидеров, а не маркетинговые слайды вендоров.
Что чаще всего ломается при подключении
- 401 Unauthorized. Чаще всего забыли префикс: в заголовке должно быть
Authorization: Api-Key <секрет>, а не просто ключ и неBearer.Bearerнужен для IAM-токена, у него другой формат. - 403 Forbidden. Ключ валидный, но у сервисного аккаунта нет роли
ai.languageModels.userв этом каталоге. Проверьте, что роль выдана именно тому каталогу, чейfolder_idвы шлёте. - 404 или ошибка про modelUri. Опечатка в адресе модели или чужой
folder_id. Формат строгий:gpt://, идентификатор каталога, имя модели, версия. - 429 Too Many Requests. Упёрлись в квоту на параллельные запросы. Лечится не ретраями в цикле, а очередью с экспоненциальной паузой; квоту при необходимости поднимают через поддержку.
- Ответ обрывается на полуслове. Смотрите статус альтернативы: если пришёл
TRUNCATED_FINAL, значит сработал вашmaxTokens, а не сбой модели. - Счёт больше расчётного. Почти всегда история диалога, которая копится в
messages. СверьтеinputTextTokensиз логов с длиной промпта, который вы задумывали.
Где освоить YandexGPT и работу с API системно
Первый запрос вы отправите по этой инструкции за вечер. Дальше начинается инженерия: очереди, ретраи, кеш, оценка качества ответов, дообучение под свои данные. Это уже не про одну статью, а про профессию. Если хотите разобраться в теме целиком, посмотрите как стать AI-разработчиком, а ниже собраны программы, где облачные модели и API разбирают на практике.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Нейросети для изображений и видео Перейти на сайт курса | 47 504 ₽ | 3958 ₽/мес. | 2 месяца | Обзор курса | |
| Нейросети для рабочих задач Перейти на сайт курса | 31 290 ₽ | 2608 ₽/мес. | 1 месяц | Обзор курса | |
| Нейросети. Практический курс Перейти на сайт курса | 74 900 ₽ | 6242 ₽/мес. | 3 месяца | Обзор курса | |
| Нейросети для каждого: как решать рабочие задачи быстрее Перейти на сайт курса | 57 000 ₽ | 2763 ₽/мес. | 6 недель | Обзор курса | |
| Продуктовый маркетолог + Нейросети для маркетинга Перейти на сайт курса | 110 200 ₽ | 3875 ₽/мес. | 5 месяцев | Обзор курса |
Больше программ — в полном каталоге курсов по нейросетям и искусственному интеллекту




