Искусственный интеллект
Генерация картинок
С развитием ИИ стало набирать популярность такое направление как ИИ-арт. И сегодня мы попробуем, внимание, подключить, а не создать (хотя создавать мы тоже будем, только немного позже) такую модель в свой проект.
Модель я брал из сайта https://huggingface.co/
Там есть множество моделей, как для генерации текста, так и для генерации картинок, ну и для многих других целей.
(Эта модель находится в рубрике первое подключение к API)
Ладно, погнали кодить, а забыл сказать, мы будем писать telegram бота (хотел в MAX, но он пока глючит, говорит не удалось создать, попробуйте позже):
import os
from dotenv import load_dotenv
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
from huggingface_hub import InferenceClient
from PIL import Image
import io
# Загружаем переменные окружения
load_dotenv()
# Инициализация клиента
client = InferenceClient(
provider="auto",
api_key="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" # Указываем ключ напрямую
)
async def start_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"Привет! Я бот для генерации изображений. Просто отправь мне текстовое описание того, что хочешь увидеть!"
)
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"Отправь мне текст, и я сгенерирую изображение на основе твоего описания."
)
async def generate_image(update: Update, context: ContextTypes.DEFAULT_TYPE):
prompt = update.message.text
try:
# Генерируем изображение
image = client.text_to_image(
prompt=prompt,
model="black-forest-labs/FLUX.1-schnell",
width=512,
height=512
)
# Конвертируем изображение в bytes
bio = io.BytesIO()
image.save(bio, format="PNG")
bio.seek(0)
# Отправляем изображение пользователю
await update.message.reply_photo(photo=bio)
except Exception as e:
await update.message.reply_text(f"Произошла ошибка: {str(e)}")
def main():
# Создаем приложение бота
app = Application.builder().token("Ваш токен").build()
# Добавляем обработчики команд
app.add_handler(CommandHandler("start", start_command))
app.add_handler(CommandHandler("help", help_command))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, generate_image))
# Запускаем бота
print("Бот запущен!")
app.run_polling()
if __name__ == "__main__":
main()