GigaChat API можно освоить на одном небольшом проекте, если сразу видеть вход, действие и результат. Официальный Python SDK берёт на себя получение access token и позволяет сосредоточиться на сообщениях и истории диалога. Ниже вы соберёте работающий пример и проверите обычный и граничный сценарии.
Первый запрос часто ломается из-за неверного scope, сертификатов или попытки передать ключ прямо в исходнике. Поэтому отделим настройку, входные данные, основное действие и проверку. В этой статье вы соберёте консольный чат с системной инструкцией, короткой историей и командой выхода. Проверка: бот отвечает по-русски, помнит предыдущую реплику и завершает диалог по слову exit.
получить ключ и выбрать правильный scope. Не расширяйте проект до первого успешного запуска.
модель видит роль каждой реплики. Проверяйте значение, а не отсутствие ошибки.
После успеха добавьте /reset и ограничение длины истории. Так копирование станет практикой.
Как устроен учебный проект GigaChat API
GigaChat API получает входные данные, проверяет их, выполняет одно внешнее действие и сохраняет наблюдаемый результат. Держите ввод, логику и отображение раздельно: тогда каждый этап можно проверить отдельно.
| Этап | Действие | Проверяемый результат |
|---|---|---|
| Доступ | получить ключ и выбрать правильный scope | SDK получает access token |
| Сообщения | создать system и user элементы истории | модель видит роль каждой реплики |
| Ответ | вызвать chat completion через SDK | текст извлекается из ответа |
| История | добавить ответ assistant перед новым вопросом | вторая реплика учитывает первую |
Контрольные точки: доступ, сообщения, ответ и история. Следующий шаг начинается после совпадения с ожидаемым результатом.

От входных данных до видимого результата. Сначала проверяется вход, затем действие и только потом интерфейс.
Собираем рабочий пример шаг за шагом
Материал сверялся с официальной документацией сервиса 21 октября 2026 года. Установите gigachat и задайте GIGACHAT_CREDENTIALS. Не отключайте проверку TLS ради быстрого исправления. Проверьте текущую папку через pwd или Get-Location. Вставьте пример целиком, выполните один раз, затем разбирайте по частям.
import os
from gigachat import GigaChat
from gigachat.models import Chat, Messages, MessagesRole
messages = [
Messages(role=MessagesRole.SYSTEM, content="Отвечай кратко и по-русски."),
]
with GigaChat(
credentials=os.environ["GIGACHAT_CREDENTIALS"],
scope=os.getenv("GIGACHAT_SCOPE", "GIGACHAT_API_PERS"),
) as client:
while True:
text = input("Вы: ").strip()
if text.lower() == "exit":
break
if not text:
continue
messages.append(Messages(role=MessagesRole.USER, content=text))
response = client.chat(Chat(messages=messages, max_tokens=300))
answer = response.choices[0].message.content
print("Бот:", answer)
messages.append(Messages(role=MessagesRole.ASSISTANT, content=answer))- Первый вопрос получает текстовый ответ модели без печати ключа.
- Второй вопрос использует сохранённые сообщения и продолжает контекст.
- Повторный запуск даёт тот же предсказуемый результат.
- Пустой ввод получает понятное сообщение вместо падения.
Главная функция принимает явные аргументы и возвращает данные, которые можно проверить отдельно от интерфейса. Найдите в примере вход, проверку и место формирования результата.

Что отличает устойчивый проект от случайного запуска. Явные границы делают ошибку локальной и понятной.
Что происходит внутри и почему это работает
SDK обменивает ключ авторизации на короткоживущий access token и отправляет массив сообщений в API. Роль system задаёт рамку, user содержит вопрос, assistant сохраняет ответ. Логику держите отдельно от вывода: функция получает аргумент и возвращает значение, а интерфейс показывает его. Секреты хранятся в переменных окружения и не попадают в исходники, журналы и скриншоты.
| Часть | За что отвечает | Что проверить |
|---|---|---|
| Credentials и scope | определяют доступ к версии API | scope совпадает с ключом |
| Messages | хранят роли и контекст | история ограничена по размеру |
| Chat completion | возвращает выборы и usage | обрабатываются ошибки и пустой ответ |
История увеличивает расход токенов на каждом шаге. Для учебного чата достаточно последних нескольких реплик. В продукте считайте токены, сокращайте старые сообщения и не отправляйте персональные данные без необходимости. Не прячьте поток в одном обработчике: сохраните вход, проверьте его, вызовите операцию и только затем обновите интерфейс.
Проверяем проект и добавляем свою функцию
Добавьте команду /reset, ограничьте историю шестью сообщениями и выводите понятный текст для ошибки авторизации. До правки запишите ожидаемое поведение одним предложением. После граничного теста повторите обычный сценарий.
- Сохраните ожидаемый результат: бот отвечает по-русски, помнит предыдущую реплику и завершает диалог по слову exit.
- Измените правило: добавьте /reset и ограничение длины истории. Сначала предскажите итог.
- Передайте граничное значение и убедитесь, что приложение не падает.
- Верните корректные данные и объясните роли трёх основных частей.
- SDK получает access token
- модель видит роль каждой реплики
- текст извлекается из ответа
- вторая реплика учитывает первую
После изменения повторите основной и ошибочный сценарии, чтобы новое поведение не сломало исходный результат. Полезная правка проходит от нового ввода до видимого результата.

Четыре проверки перед следующим шагом. Каждый следующий этап начинается после наблюдаемого результата.
Что запомнить и куда двигаться дальше
Следующий шаг - вынести функцию ответа из цикла, покрыть её тестом с заглушкой клиента и подключить простой веб-интерфейс. Для закрепления откройте в локальном чат-боте Ollama, в чате Gemini API и в AI-приложении Streamlit.
Как изучить тему в Кодике
Сначала разберите формат данных и одну функцию, затем подключайте сеть, интерфейс или внешний сервис. Сначала восстановите главную функцию и проверьте её на трёх значениях.
| Шаг | Что разобрать | Мини-проверка |
|---|---|---|
| 1. Основа | Строки, списки, циклы и исключения Python | Объясните вход и выход функции. |
| 2. Инструмент | SDK, credentials, scope и роли сообщений | Повторите команду по памяти. |
| 3. Проект | Историю диалога и команду /reset | Проверьте два сценария. |
| 4. Рефакторинг | Ограничение токенов, тестовый клиент и веб-интерфейс | Разделите ввод, логику и вывод. |
Закрепите проект, переписав ключевую функцию по памяти и добавив собственный граничный случай. Базовый синтаксис закрепите через курс Python.
Секрет попадает в репозиторий. Используйте переменную окружения.
API отклоняет ключ, если версия доступа не совпадает.
Отключение проверки сертификата снижает безопасность. Установите доверенный сертификат.
Каждый запрос становится дороже и медленнее. Ограничивайте контекст.
Что получится в итоге

Финальный экран показывает результат, состояние запроса и понятное сообщение об ошибке без раскрытия секретов.
Зачем сохранять ответ assistant?
Без него следующая реплика не видит полный контекст диалога.
Почему access token не хранят вручную?
SDK умеет получать и обновлять его по ключу авторизации.
Что проверять первым, если GigaChat API не запускается?
Версию среды, текущую папку, команду запуска и первую строку ошибки.
Как понять, что проект GigaChat API работает?
Проверьте основной сценарий, неверный ввод, повторный запуск и один граничный случай.
Можно ли начать с готового кода?
Да. Добейтесь результата, измените одно правило и восстановите ключевую функцию без копирования.
Выберите одно улучшение и проведите его от ввода до результата.
Если не хватает основы, перейдите курс Python, затем восстановите ключевую функцию без подсказки.