Добавляем DALL-E 3 в свой ChatGPT бот в Telegram

DALL-E 3, новая версия модели для генерации изображений от OpenAI, стала доступна публично через ChatGPT в октябре 2023 года и сразу стала очень популярной благодаря существенно лучшему качеству генерируемых изображений, по сравнению с предыдущими версиями модели.

До DALL-E 3 главным и, по сути, единственным серьёзным игроком в этой области была компания Midjourney, которая обзавелась целой армией фанатов ещё в 2022 году. Однако теперь ситуация изменилась и конкуренция стала гораздо более ощутимой.

Генерировать изображения в Midjourney можно только в чат-боте Discord, у продукта нет своего приложения или веб-сайта, нет программного доступа через API. Это ограничивает способы использования генератора изображений. У DALL-E 3 таких ограничений нет.

Добавляем DALL-E 3 в чат-бот Telegram

ВНИМАНИЕ!
Это продолжение туториала, начало здесь: Свой ChatGPT бот в Telegram в 2023

Облачная функция

Всё, что нам нужно сделать, это добавить новый метод в нашу облачную функцию, чтобы генерировать изображения. Мы введём новую команду /image и будем пользоваться ей так:

/image описание изображения, которое надо сгенерировать

Открываем консоль Яндекс.Облака, идём в раздел Cloud Functions, заходим в нашу функцию и переходим во вкладку «Редактор».

Здесь в файле index.py сразу после метода clear_history и обязательно перед методом echo_message добавляем код нового метода:

@bot.message_handler(commands=["image"])
def image(message):
    prompt = message.text.split("/image")[1].strip()
    if len(prompt) == 0:
        bot.reply_to(message, "Введите запрос после команды /image")
        return

    try:
        response = openai.Image.create(
            prompt=prompt, n=1, size="1024x1024", model="dall-e-3"
        )
    except:
        bot.reply_to(message, "Произошла ошибка, попробуйте позже!")
        return

    bot.send_photo(
        message.chat.id,
        response["data"][0]["url"],
        reply_to_message_id=message.message_id,
    )

Это должно выглядеть вот так:

9844b917615cf4f4eca573ed130d5603.png

Жмём кнопку «Сохранить изменения» и смотрим, как функция собирается.

Список команд Telegram-бота

Можно оставить как есть, но, на мой взгляд, будет полезным завести список команд, чтобы бот подсказывал нам, какой функционал доступен.

Для этого идём в BotFather, в котором мы изначально создавали наш бот и начинаем с команды /mybots

Вы увидите список ваших ботов, выбираем нужный бот и жмём «Edit Bot».

Затем «Edit Commands».

И посылаем такой список:

new - Очистка истории переписки
image - Генерация изображений. Введите описание изображения после команды

После этого список команд должен стать доступен в вашем боте сразу.

c3bea7bba13c87044d23545bf0b53d65.png

На этом всё. Теперь наш бот умеет не только отвечать на текстовые сообщения, но и генерировать изображения!

Сделаем быструю проверку:

5d02c4d05c78abf5238aff481f030099.png

© Habrahabr.ru