БэкендData и ИИPython

YandexGPT API на Python: отправляем первый запрос и собираем чат

Отправляем первый запрос в YandexGPT API из Python, собираем историю диалога, обрабатываем ошибки и не сохраняем API-ключ в коде.

Кодик

Автор

6 мин чтения

YandexGPT можно освоить на одном небольшом проекте, если сразу видеть вход, действие и результат. YandexGPT можно вызвать обычным HTTPS-запросом и увидеть весь контракт API: заголовки, modelUri, сообщения и usage. Ниже вы соберёте работающий пример и проверите обычный и граничный сценарии.

Новичок путает API-ключ, идентификатор каталога и адрес модели, а затем пытается искать ошибку только в тексте запроса. Поэтому отделим настройку, входные данные, основное действие и проверку. В этой статье вы соберёте консольный чат с YandexGPT, историей последних реплик и выводом расхода токенов. Проверка: запрос возвращает ответ, usage отображается, а ошибка 401 или 403 объясняется без печати секрета.

1Соберите минимум

прочитать YC_API_KEY и YC_FOLDER_ID. Не расширяйте проект до первого успешного запуска.

2Увидьте данные

JSON соответствует контракту completion. Проверяйте значение, а не отсутствие ошибки.

3Измените правило

После успеха добавьте /usage и повтор запроса после временной ошибки 429. Так копирование станет практикой.

Как устроен учебный проект YandexGPT

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

ЭтапДействиеПроверяемый результат
Доступпрочитать YC_API_KEY и YC_FOLDER_IDоба значения заданы
Запроссобрать modelUri и messagesJSON соответствует контракту completion
Ответпроверить HTTP-код и извлечь textв консоли виден ответ
Контрольпоказать usage и ограничить историюконтекст не растёт бесконечно

Контрольные точки: доступ, запрос, ответ и контроль. Следующий шаг начинается после совпадения с ожидаемым результатом.

Путь данных в проекте YandexGPT
От входных данных до видимого результата. Сначала проверяется вход, затем действие и только потом интерфейс.

Зафиксируйте первый успех Проверьте, что modelUri содержит тот же folder_id, к которому относится сервисный аккаунт и его API-ключ. Сохраните команду запуска и ожидаемый вывод.

Собираем рабочий пример шаг за шагом

Материал сверялся с официальной документацией сервиса 21 октября 2026 года. Установите httpx, задайте YC_API_KEY и YC_FOLDER_ID. Начните с одного запроса без цикла. Проверьте текущую папку через pwd или Get-Location. Вставьте пример целиком, выполните один раз, затем разбирайте по частям.

import os
import httpx

URL = "https://llm.api.cloud.yandex.net/foundationModels/v1/completion"
FOLDER = os.environ["YC_FOLDER_ID"]
HEADERS = {"Authorization": f"Api-Key {os.environ['YC_API_KEY']}"}
messages = [{"role": "system", "text": "Отвечай кратко и по-русски."}]

def ask(text: str) -> str:
    messages.append({"role": "user", "text": text})
    payload = {
        "modelUri": f"gpt://{FOLDER}/yandexgpt/latest",
        "completionOptions": {"stream": False, "temperature": 0.4, "maxTokens": 300},
        "messages": messages[-7:],
    }
    response = httpx.post(URL, headers=HEADERS, json=payload, timeout=60)
    response.raise_for_status()
    data = response.json()["result"]
    answer = data["alternatives"][0]["message"]["text"]
    print("tokens:", data.get("usage", {}))
    messages.append({"role": "assistant", "text": answer})
    return answer

print(ask("Объясни список Python в двух предложениях"))
Что должно произойти после запуска
  • Ответ находится в первой alternative и печатается как обычная строка.
  • Блок usage показывает входные и выходные токены для контроля контекста.
  • Повторный запуск даёт тот же предсказуемый результат.
  • Пустой ввод получает понятное сообщение вместо падения.

Главная функция принимает явные аргументы и возвращает данные, которые можно проверить отдельно от интерфейса. Найдите в примере вход, проверку и место формирования результата.

Хрупкий и проверяемый вариант YandexGPT
Что отличает устойчивый проект от случайного запуска. Явные границы делают ошибку локальной и понятной.

Что происходит внутри и почему это работает

modelUri связывает запрос с каталогом и моделью, Authorization подтверждает доступ, а messages передаёт роли диалога. completionOptions управляет длиной и вариативностью ответа. Логику держите отдельно от вывода: функция получает аргумент и возвращает значение, а интерфейс показывает его. Секреты хранятся в переменных окружения и не попадают в исходники, журналы и скриншоты.

ЧастьЗа что отвечаетЧто проверить
Заголовокпередаёт API-ключсекрет не выводится
modelUriвыбирает каталог и модельfolder_id корректен
messages и usageзадают контекст и показывают расходистория ограничена

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

Проверьте границу Уменьшите maxTokens до 20, затем верните 300 и сравните завершённость ответа. После этого передайте пустую строку. Меняйте одно условие за прогон, чтобы видеть причину.

Проверяем проект и добавляем свою функцию

Добавьте команды /reset и /usage, а сетевой вызов заверните в функцию с понятной обработкой 401, 403 и 429. До правки запишите ожидаемое поведение одним предложением. После граничного теста повторите обычный сценарий.

Проверка своими руками
  1. Сохраните ожидаемый результат: запрос возвращает ответ, usage отображается, а ошибка 401 или 403 объясняется без печати секрета.
  2. Измените правило: добавьте /usage и повтор запроса после временной ошибки 429. Сначала предскажите итог.
  3. Передайте граничное значение и убедитесь, что приложение не падает.
  4. Верните корректные данные и объясните роли трёх основных частей.
Готово, если выполняются все пункты
  • оба значения заданы
  • JSON соответствует контракту completion
  • в консоли виден ответ
  • контекст не растёт бесконечно

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

Четыре контрольные точки YandexGPT
Четыре проверки перед следующим шагом. Каждый следующий этап начинается после наблюдаемого результата.

Что запомнить и куда двигаться дальше

Для веб-приложения держите ключ только на сервере. Браузер должен обращаться к вашему backend, а не напрямую к облачному API. Для закрепления откройте в чате Gemini API, в статье про GigaChat и в локальном чат-боте Ollama.

Как изучить тему в Кодике

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

ШагЧто разобратьМини-проверка
1. ОсноваСловари, списки, функции и переменные окруженияОбъясните вход и выход функции.
2. ИнструментHTTP-заголовки, JSON, modelUri и completionOptionsПовторите команду по памяти.
3. ПроектИсторию чата, usage и обработку статусовПроверьте два сценария.
4. РефакторингСерверный прокси, лимиты и тестирование ответаРазделите ввод, логику и вывод.

Закрепите проект, переписав ключевую функцию по памяти и добавив собственный граничный случай. Базовый синтаксис закрепите через курс Python.

Ключ в браузере

Пользователь увидит секрет в DevTools. Вызывайте API на сервере.

Неверный folder_id

modelUri указывает на каталог без нужного доступа.

Нет тайм-аута

Зависший запрос блокирует программу. Задайте ограничение.

История без лимита

Контекст и стоимость растут на каждой реплике.

Сверяйтесь с первичной документацией. Команды и ограничения примера проверены по официальному источнику 1. Если версия инструмента изменилась, официальный источник важнее старого скриншота.

Что получится в итоге

Готовый результат проекта: YandexGPT API на Python: отправляем первый запрос и собираем чат
Финальный экран показывает результат, состояние запроса и понятное сообщение об ошибке без раскрытия секретов.

Короткие ответы
Что делает modelUri?

Указывает каталог и модель, к которой относится запрос.

Зачем смотреть usage?

Он показывает размер контекста и ответа, помогает контролировать лимиты.

Что проверять первым, если YandexGPT не запускается?

Версию среды, текущую папку, команду запуска и первую строку ошибки.

Как понять, что проект YandexGPT работает?

Проверьте основной сценарий, неверный ввод, повторный запуск и один граничный случай.

Можно ли начать с готового кода?

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

Сделайте один осознанный шаг дальше

Выберите одно улучшение и проведите его от ввода до результата.

Если не хватает основы, перейдите курс Python, затем восстановите ключевую функцию без подсказки.