- PVSM.RU - https://www.pvsm.ru -
Max мессенджер появился недавно, и пока экосистема вокруг него только формируется. YandexGPT - мощная языковая модель с OpenAI-совместимым API. Казалось бы, собрать из этого бота - задача на вечер. На практике оказалось, что готового инструмента, который бы связал эти две вещи, просто нет.
Я написал max-yandexgpt - Python-фреймворк, который позволяет запустить AI-бота в Max мессенджере с YandexGPT за 5 строк кода. Со стримингом ответов, выбором модели и нормальной конфигурацией.
В этой статье расскажу, как он устроен и зачем.
from max_yandexgpt import MaxYandexGPT
bot = MaxYandexGPT(
max_token="ВАШ_ТОКЕН_MAX",
yandex_api_key="ВАШ_КЛЮЧ_YANDEXGPT",
yandex_folder_id="ВАШ_FOLDER_ID",
)
bot.run()
Это рабочий бот. Он принимает сообщения в Max, отправляет их в YandexGPT, и отдаёт ответ пользователю, со стримингом по умолчанию. То есть бот сначала отправляет placeholder, а потом обновляет сообщение по мере генерации текста. Выглядит как ChatGPT-интерфейс прямо в мессенджере.
Max - новый мессенджер, и разработчики только начинают осваивать его API. YandexGPT - это Yandex Cloud Foundation Models с OpenAI-совместимым эндпоинтом. По отдельности документация есть, но связки между ними нет: нужно самому разбираться с авторизацией, форматом model URI, стримингом через SSE, редактированием сообщений в Max.
max-yandexgpt берёт это на себя. Под капотом - два компонента:
maxapi - клиент Max мессенджера (диспетчер, хэндлеры, polling)
openai SDK - для запросов к YandexGPT через OpenAI-совместимый API Yandex Cloud
Разработчику остаётся только указать токены и запустить.
Фреймворк состоит из трёх модулей:
config.py [1] - конфигурация. Dataclass с валидацией: токены, модель, system prompt, температура, max_tokens, параметры стриминга. Поддерживает переменные окружения (MAX_TOKEN, YANDEX_API_KEY, YANDEX_FOLDER_ID), что бы не хардкодить секреты.
llm.py [2] - клиент YandexGPT. Использует AsyncOpenAI из официального OpenAI SDK, но с кастомным base_url:
YANDEX_BASE_URL = "https://ai.api.cloud.yandex.net/v1"
self._client = AsyncOpenAI(
api_key=config.yandex_api_key,
base_url=YANDEX_BASE_URL,
)
Model URI формируется как gpt://{folder_id}/{model_name}- это специфика Yandex Cloud. Два режима: complete() для синхронных запросов и stream() асинхронный генератор, который yield’ит текстовые дельты.
bot.py [3] - основной класс MaxYandexGPT. Связывает Max и YandexGPT: регистрирует хэндлеры через maxapi.Dispatcher, маршрутизирует входящие сообщения и управляет стримингом.
Стриминг работает так:
Бот получает сообщение от пользователя
Отправляет placeholder "..."
Запрашивает YandexGPT в streaming-режиме
По мере поступления дельт - редактирует сообщение в Max
Rate-limit на редактирование: не чаще чем раз в stream_interval секунд (по умолчанию 1.0)
Финальное сообщение - полный ответ без placeholder
Весь бот асинхронный asyncio от начала до конца.
Поддерживаются все актуальные модели YandexGPT:
|
Модель |
Описание |
|---|---|
|
|
Быстрая и дешёвая (по умолчанию) |
|
|
Стандартная |
|
|
Новейшая |
|
|
AliceAI |
Переключение — один параметр:
bot = MaxYandexGPT(
max_token="...",
yandex_api_key="...",
yandex_folder_id="...",
model="yandexgpt-5.1/latest",
)
Полный набор параметров:
bot = MaxYandexGPT(
max_token="...",
yandex_api_key="...",
yandex_folder_id="...",
system_prompt="Ты — полезный ассистент.",
stream=True, # стриминг включён по умолчанию
temperature=0.3,
max_tokens=2000,
)
Или через переменные окружения для продакшена:
bot = MaxYandexGPT() # читает из MAX_TOKEN, YANDEX_API_KEY, YANDEX_FOLDER_ID
bot.run()
pip install max-yandexgpt
Что нужно:
Python 3.11+
Токен бота Max мессенджера, создаётся на max.ru [4]
API-ключ YandexGPT + folder ID через Yandex Cloud Console [5]
Проект открытый, MIT-лицензия:
Буду рад фидбеку, issues на GitHub открыты.
Автор: shannanw1
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/yandeks/449479
Ссылки в тексте:
[1] config.py: http://config.py
[2] llm.py: http://llm.py
[3] bot.py: http://bot.py
[4] max.ru: http://max.ru
[5] Yandex Cloud Console: https://cloud.yandex.ru
[6] GitHub: https://github.com/nabinabi11/max-yandexgpt
[7] GitVerse: https://gitverse.ru/nikolainabiev/max-yandexgpt
[8] PyPI: https://pypi.org/project/max-yandexgpt
[9] Источник: https://habr.com/ru/articles/1021740/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1021740
Нажмите здесь для печати.