Бот на Python, для генерации изображений с помощью нейросети DALL-E для Telegram [Гайд]
В данной статье мы изучим процесс создания бота на Python, который будет генерировать изображения с помощью нейросети DALL-E 2.
Мы будем использовать библиотеку aiogram для создания бота в Telegram, которая обеспечивает удобный и простой интерфейс для взаимодействия с ботом.
Если вы хотите выразить благодарность автору сайта, статей и курса по Django, вы можете сделать это по ссылке ниже:
Подробно рассмотрим каждый этап создания бота и настройки его работы с нейросетью, чтобы вы смогли легко повторить этот процесс и создать своего собственного бота для генерации изображений.
Получаем API токен на openai (для chatGPT, DALL-E)
- Нам необходимо получить токен API для работы с DALL-E, переходим на сайт: platform.openai.com
На сайте нажимаем Personal, и выбираем View API keys:
Далее нажимаем Create new secret key
Получаем наш ключ для DALL-E.
Получаем токен для бота в телеграмм
- Теперь нам необходимо создать бота в телеграмме, делается это через @BotFather, начинаем диалог и вводим команду
/newbot
, выбираем имя, обязательно чтоб в имени присутствовало слово: Bot, или через подчеркивание _bot
Получаем ключ для доступа к API, на скриншоте он закрашен. Сохраняем в удобное место.
Создаем бота на Python для генерации изображений DALL-E
Перед всеми манипуляциями с кодом на вашем компьютере должен быть установлен Python. Скачать его можно с официального сайта.
-
Для создания проекта в папке по вашему выбору с помощью IDE редактора, например VS Code, откройте терминал и введите команду
cmd
. Создайте виртуальное окружение с помощью командыpy -m venv venv
. Для активации виртуального окружения введите командуcd venv/scripts && activate
. Затем вернитесь в корневой каталог, введя командуcd ../../
В терминале вы увидите, что виртуальное окружение активировано, в скобках будет указано (venv). -
Создайте файл main.py рядом с папкой venv для дальнейшей работы в проекте.
- Далее нам необходимо установить два пакета с помощью терминала:
pip install openai aiogram
Результат выполнения команды:
(venv) C:\Users\Razilator\Desktop\Projects\DalleTelegram>pip install openai aiogram
Collecting openai
Using cached openai-0.27.4-py3-none-any.whl (70 kB)
Collecting aiogram
Using cached aiogram-2.25.1-py3-none-any.whl (203 kB)
Collecting requests>=2.20
Using cached requests-2.28.2-py3-none-any.whl (62 kB)
Collecting tqdm
Using cached tqdm-4.65.0-py3-none-any.whl (77 kB)
Collecting aiohttp
Using cached magic_filter-1.0.9-py3-none-any.whl (9.3 kB)
Collecting attrs>=17.3.0
Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
Collecting charset-normalizer<4.0,>=2.0
Using cached charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
Collecting multidict<7.0,>=4.5
Using cached multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
Collecting async-timeout<5.0,>=4.0.0a3
Collecting colorama
Using cached colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Installing collected packages: pytz, urllib3, multidict, magic-filter, idna, frozenlist, colorama, charset-normalizer, certifi, Babel, attrs, async-timeout, yarl, tqdm, requests, aiosignal, aiohttp, openai, aiogram
Successfully installed Babel-2.9.1 aiogram-2.25.1 aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2022.12.7 charset-normalizer-3.1.0 colorama-0.4.6 frozenlist-1.3.3 idna-3.4 magic-filter-1.0.9 multidict-6.0.4 openai-0.27.4 pytz-2023.3 requests-2.28.2 tqdm-4.65.0 urllib3-1.26.15 yarl-1.9.2
[notice] A new release of pip available: 22.3 -> 23.1.1
[notice] To update, run: python.exe -m pip install --upgrade pip
- Теперь в наш файл main.py добавим следующий код для генерации изображений с помощью нейросети DALL-E:
import openai
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
telegram_token = "Токен от телеграмм бота"
openai.api_key = "Токен от OpenAI ChatGPT"
bot = Bot(telegram_token)
dp = Dispatcher(bot)
@dp.message_handler(commands=['dalle'])
async def send_image(message: types.Message):
response = openai.Image.create(
prompt=message.text,
n=1,
size="1024x1024",
)
await message.answer_photo(response["data"][0]["url"])
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Код начинается с импорта необходимых библиотек, которые мы установили в данной статье. После этого задаются токены для Telegram-бота и для OpenAI API.
Затем создается объект бота и диспетчер, который будет обрабатывать сообщения от пользователей. В данном случае используется команда /dalle
для запроса на генерацию изображения.
Функция send_image()
обрабатывает сообщения с командой /dalle
и передает текст сообщения в функцию openai.Image.create()
, которая использует нейросеть DALL-E 2 для генерации изображения на основе введенного текста. Затем полученное изображение отправляется пользователю с помощью метода message.answer_photo()
.
Код заканчивается вызовом функции executor.start_polling()
, которая запускает бота и начинает обрабатывать входящие сообщения.
Что можно улучшить?
- для улучшения кода можно добавить обработку ошибок, а также улучшить обработку текстовых запросов и передаваемых параметров для генерации изображений. Затем можно улучшить структуру кода, например, вынести токены в отдельный файл для удобства управления ими.
Не забываем, что запросы через API платные. Нам изначально дают баланс на 18$ или более долларов.
Стоимость изображений по размерам:
Размер изображения | Цена за изображение |
---|---|
256×256 | $0.016 |
512×512 | $0.018 |
1024×1024 | $0.020 |
Запускам бота, проверяем работу
Далее нам необходимо запустить бота, для этого в терминале напишите py main.py
и если все сделали правильно, результат будет следующим:
(venv) C:\Users\Razilator\Desktop\Projects\DalleTelegram>py main.py
Updates were skipped successfully.
Напишем нашему боту для генерации изображений
В следующей статье мы рассмотрим дополнение к коду данной статьи, в котором у нас бот на aiogram будет отвечать на сообщения с помощью ChatGPT, а с помощью команды /dalle
обращаться для генерации изображения с помощью DALL-E в рамках одного бота.