Python AI Програма / Мемогенерація з Пітоном та ШІ
Python здатний робити не лише серйозні проекти. У цій статті ми створимо програму, яка працюватиме зі ШІ і служитиме для генерації мемів. Для роботи будемо використовувати ChatGPT, а також Pillow.
Програма буде працювати з різними сервісами та API. Вона отримуватиме зображення і вигадуватиме для нього жарти, створюючи тим самим меми.
Курс з вивчення Python
Можете пройти наш безкоштовний курс з вивчення Python
Створення проекту
Насправді таку програму можна було побудувати на базі різних мов програмування. Ми вибрали Пітон через велику кількість бібліотек, що нам знадобляться, а також через легкий синтаксис самої мови.
Перш ніж розпочати розробку, переконайтеся, що сам Пітон встановлений на вашому ПК. Також завантажте програму для написання коду, наприклад, . У програмі створіть новий проект і додайте основний файл до нього.

Додатково: щоб усі бібліотеки завантажувалися та встановлювались саме в проект, то нам потрібно додати віртуальне оточення. Для цього відкрийте рядок з пошуком та впишіть Python: Create Environment. Це дозволить створити віртуальне оточення у проекті.
Бібліотека Pillow
Вся наша програма буде зводитись до кількох моментів:
- відкриття та обробка фото
- генерація тексту
- розміщення тексту на картинці
- збереження картинки в проекті
Більшість дій буде пов'язана з картинками, а тому нам потрібно буде встановити бібліотеку Pillow. Вона забезпечує нас зручним функціоналом з відкриття та роботи з фото різного типу.
Переконайтеся, що ця бібліотека встановлена. Для цього у терміналі пропишіть:
pip install PillowПісля інсталяції можемо описати код. Нижче наведений код для відкриття фото:
from PIL import Image, ImageDraw, ImageFont
# Відкриваємо зображення
img = Image.open('meme.jpg')Ми вказуємо імпорт усіх класів і кажемо яке зображення ми відкриватимемо. На цьому етапі можна зайти в Google і завантажити будь-яке зображення з шаблонним мемом. Таку шаблонну картинку збережіть у проекті.
Малюємо текст на фото
Тепер опишемо код для малювання тексту. Створюємо об'єкт з урахуванням класу ImageDraw. Створюємо дві змінні, що зберігатимуть текст. Поки що ми самі вигадуємо текст, а також вказуємо його англійською.
# Отримуємо об'єкт ImageDraw для малювання тексту
draw = ImageDraw.Draw(img)
top_text = 'Text'
bottom_text = 'Text'
# Малюємо верхній текст
draw.text((600, 200), top_text, (0, 0, 0))
# Малюємо нижній текст
draw.text((600, 700), bottom_text, (0, 0, 0))
# Зберігаємо результат
img.save('me2.jpg')
# Відкриваємо та показуємо результат
Image.open('me2.jpg').show()Звертаємось до об'єкта draw і вказуємо в яких координатах, який текст і з яким кольором ми будемо малювати.
Наприкінці залишається лише зберегти фото та відобразити користувачеві. Після запуску ви вже помітите, як у вас буде працювати програма.
Для роботи тексту на кирилиці вам необхідно завантажити шрифт із Google. Такий шрифт повинен мати підтримку кирилиці. Додайте його до проекту та опишіть його підвантаження:
# Завантажуємо свій шрифт (вкажіть шлях до вашого ttf файлу)
font_path = 'OpenSans-Bold.ttf'
font = ImageFont.truetype(font_path, size=22)
# Малюємо верхній текст
draw.text((600, 200), top_text, (0, 0, 0), font=font)
# Малюємо нижній текст
draw.text((600, 700), bottom_text, (0, 0, 0), font=font)Підключення до ChatGPT
А тепер зробимо нашу програму справді цікавою. Для цього нам знадобиться ChatGPT та його можливості. Для роботи з Чатом нам спочатку потрібно перейти на їхній сайт і зареєструватися. Після реєстрації ви зможете зайти на сторінку з ключами API і там же отримаєте ключ для інтеграції ChatGPT всередину вашого проекту.
Подивитись детальніше про роботу з ChatGPT можна у нашому окремому курсі. Він доступний .
Після отримання ключа можете записати його в змінну проекту, а потім виконайте установку бібліотеки openai. Саме вона служить для роботи із сервісами компанії.
Генерація мемов
Розробка наступної частини проекту доступна у відео нижче. Там же ви знайдете повний опис усіх необхідних дій:
Переглянути весь код проекту можна нижче:
from PIL import Image, ImageDraw, ImageFont
from openai import OpenAI
API = 'KEY'
client = OpenAI(api_key=API)
def generate_response(text):
response = client.completions.create(
prompt=text,
model='text-davinci-003'
)
if response and response.choices:
return response.choices[0].text.strip()
else:
return None
prompt = 'Тобі потрібно придумувати щоразу новий мем на основі картинки. Ось URL фото: https://i.pinimg.com/550x/9b/fd/10/9bfd1059af5d16041b921bb712740e99.jpg Прийшли мені тільки текст для верхнього напису та нижнього. Ні слова більше, окрім тексту мема. Не потрібно їх підписувати, а лише між першим і другим текстом постав символи %% Не пиши Верхня частина або Нижня частина, а також не додавай лапки'
res = generate_response(prompt)
result = res.split('%%')
# Відкриваємо зображення
img = Image.open('me1.jpg')
# Отримуємо об'єкт ImageDraw для малювання тексту
draw = ImageDraw.Draw(img)
# Завантажуємо свій шрифт (вкажіть шлях до вашого ttf файлу)
font_path = 'OpenSans-Bold.ttf'
font = ImageFont.truetype(font_path, size=22)
top_text = result[0]
bottom_text = result[1]
# Малюємо верхній текст
draw.text((600, 200), top_text, (0, 0, 0), font=font)
# Малюємо нижній текст
draw.text((600, 700), bottom_text, (0, 0, 0), font=font)
# Зберігаємо результат
img.save('me2.jpg')
# Відкриваємо та показуємо результат
Image.open('me2.jpg').show()Курс з вивчення Python
Можете пройти наш безкоштовний курс з вивчення Python
Заключна частина
Зараз ви можете запустити програму та отримаєте готовий мем, що буде автоматично згенеровано штучним інтелектом. За схожим принципом ви можете підставляти різні картинки, змінювати координати, де буде показаний текст і задавати різні параметри чату, тим самим отримуючи мемогенерацію в тих масштабах, що вам цікаві.
Більш інформації
Якщо ви хочете дізнатися більше інформації про мову Python і хочете вивчити її для створення своїх схожих програм, то рекомендуємо вам нашу на цю тему.
У ході величезної програми навчання ви вивчите мову Пітон, навчитеся на його основі працювати з базами даних, створювати мобільні проекти, будувати веб-сайти за допомогою Django, ознайомтеся з REST API і познайомитеся з розробкою подібних цікавих програм з використанням ШІ та різних бібліотек мови.
Більше цікавих новин
Скільки мов програмування потрібно знати насправді
Обзор и изучение игрового движка Unity
5 способов заработка на программировании
Помилки, що заважають знайти гідну роботу