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,
)
Это должно выглядеть вот так:
Жмём кнопку "Сохранить изменения" и смотрим, как функция собирается.
Список команд Telegram-бота
Можно оставить как есть, но, на мой взгляд, будет полезным завести список команд, чтобы бот подсказывал нам, какой функционал доступен.
Для этого идём в BotFather, в котором мы изначально создавали наш бот и начинаем с команды /mybots
Вы увидите список ваших ботов, выбираем нужный бот и жмём "Edit Bot".
Затем "Edit Commands".
И посылаем такой список:
new - Очистка истории переписки
image - Генерация изображений. Введите описание изображения после команды
После этого список команд должен стать доступен в вашем боте сразу.
На этом всё. Теперь наш бот умеет не только отвечать на текстовые сообщения, но и генерировать изображения!
Сделаем быструю проверку:
Комментарии (7)
Anuke
14.11.2023 07:10Почему если поменять n=1 или size="1024x1024" на другие значения бот не будет генерировать фото?
fettgesicht Автор
14.11.2023 07:10Не проверял специально, но вообще должен. Только при n>1 надо код переписать, чтобы перебирал изображения и отправлял в тг каждое
not_hacker
Я так понял, что после обработки исключения, бот все равно попытается отправить изображение?
fettgesicht Автор
Там же return
not_hacker
Все, увидел