SAT

Client
Регистрация
24.12.2024
Сообщения
10
Благодарностей
28
Баллы
3
AI Content Alchemist: ZennoPoster x Gemini Magic
Концепция Кейса
"AI Content Alchemist" — это решение, которое позволяет ZennoPoster, как мощному инструменту автоматизации, взаимодействовать с API искусственного интеллекта Gemini для создания визуального контента. Основная идея заключается в автоматической генерации изображений по текстовым запросам (промптам), что открывает безграничные возможности для создания уникального визуального ряда без ручного дизайна.
Преимущества Кейса:
  • Автоматизация: Полностью автоматизирует процесс создания изображений на основе текстовых описаний.
  • Масштабируемость: Возможность генерировать сотни или тысячи уникальных изображений за короткий промежуток времени.
  • Уникальность: Каждое изображение генерируется искусственным интеллектом, обеспечивая оригинальность контента.
  • Экономия времени и ресурсов: Уменьшает потребность в дизайнерах и времени на ручное создание графики.
  • Гибкость: Легко адаптируется под различные потребности, от создания иллюстраций для блогов до генерации рекламных креативов.
Компоненты Кейса:
  1. ZennoPoster: Основной инструмент автоматизации, который будет управлять процессом, запускать Python-скрипт, считывать промпты и обрабатывать сгенерированные изображения.
  2. Python-скрипт: Код, который взаимодействует с Gemini API для отправки запросов на генерацию изображений и сохранения полученных результатов.
  3. Gemini API: Сервис Google, обеспечивающий функционал генерации изображений на основе искусственного интеллекта.
  4. Файлы конфигурации: Текстовые файлы для хранения API-ключей и промптов для генерации.
Пошаговая Инструкция и Реализация
1. Подготовка Среды и Файлов
1.1. Установка Python и Библиотек:
Убедитесь, что на вашем компьютере установлен Python (рекомендуется версия 3.9+).
Установите необходимые Python-библиотеки с помощью pip:
pip install requests transliterate



1.2. Создание файла api_keys.txt:
Создайте текстовый файл с названием api_keys.txt в той же директории, где будет находиться ваш Python-скрипт. В этот файл вставьте ваши API-ключи Gemini, каждый ключ на новой строке. Это позволит скрипту автоматически ротировать ключи в случае превышения лимитов запросов.
Пример api_keys.txt:
YOUR_API_KEY_1
YOUR_API_KEY_2
YOUR_API_KEY_3



example api_keys.txt file
1.3. Создание файла drawing_details.txt:
Создайте текстовый файл с названием drawing_details.txt в той же директории. Этот файл будет содержать текстовое описание (промпт) для изображения, которое нужно сгенерировать. ZennoPoster может динамически изменять содержимое этого файла перед каждым запуском скрипта.
Пример drawing_details.txt:
Футуристический космический корабль, летящий сквозь туманность, реалистичный, яркая цветовая гамма.



example drawing_details.txt file
1.4. Python-скрипт generate_image.py:
Сохраните предоставленный ниже Python-код в файл с названием generate_image.py в той же директории, что и другие файлы.
2. Описание Python-скрипта
Этот Python-скрипт отвечает за взаимодействие с Gemini API. Он выполняет следующие функции:
  • Загрузка API-ключей: Считывает API-ключи из файла api_keys.txt.
  • Ротация ключей: Автоматически переключается на следующий ключ в случае получения ошибки "Too Many Requests".
  • Считывание промпта: Берет описание для генерации изображения из файла drawing_details.txt.
  • Формирование запроса к Gemini API: Создает JSON-запрос с полным промптом и параметрами генерации.
  • Отправка запроса и обработка ответа: Отправляет запрос к Gemini API, проверяет статус ответа и декодирует полученные данные изображения.
  • Сохранение изображения: Сохраняет сгенерированное изображение в формате PNG в папку generated_images, используя транслитерированный промпт и временную метку для уникальности имени файла.
  • Обработка ошибок: Включает механизмы обработки ошибок HTTP-запросов, декодирования JSON и ошибок сохранения файлов.
3. Настройка ZennoPoster Проекта
3.1. Запуск Проекта и Источник Промптов:
Ваш ZennoPoster проект может получать промпты из разных источников:
  • Из текстового файла (каждая строка — новый промпт).
  • Из базы данных.
  • Из результатов парсинга веб-сайтов.
  • Из другого запроса к LLM через ZennoPoster, который генерирует идеи для изображений.
Создайте цикл в ZennoPoster, который будет итерировать по этим промптам.
3.2. Запись Промпта в drawing_details.txt:
Перед каждым запуском Python-скрипта, ZennoPoster должен записать текущий промпт (из выбранного источника) в файл drawing_details.txt, перезаписывая его содержимое. Для этого используйте действие ZennoPoster "Файл -> Записать в файл".
3.3. Выполнение Python-скрипта:
Добавьте действие "Выполнить программу" (Execute Program) в ваш ZennoPoster проект.
  • Путь к программе: Укажите полный путь к интерпретатору Python (например, C:\Python39\python.exe).
  • Параметры командной строки: Укажите полный путь к вашему скрипту generate_image.py.
    Например: C:\Path\To\Your\Script\generate_image.py
    ZennoPoster Execute Program action
3.4. Обработка Сгенерированных Изображений:
После успешного выполнения Python-скрипта, ZennoPoster может:
  • Переместить/Переименовать: Переместить только что сгенерированное изображение из папки generated_images в другую директорию или переименовать его в соответствии с вашими потребностями.
  • Загрузить на ресурс: Загрузить изображение на ваш веб-сайт, в социальные сети (Facebook, Instagram, Pinterest) или в облачное хранилище.
  • Добавить в базу данных: Сохранить путь к файлу или даже бинарные данные изображения в базу данных.
  • Использовать для других целей: Например, вставить в HTML-шаблон для создания целевой страницы.
3.5. Обработка Ошибок в ZennoPoster:
Настройте обработку ошибок в ZennoPoster:
  • Проверка файла: После запуска Python-скрипта, ZennoPoster может проверить, появился ли новый файл изображения в папке generated_images.
  • Выходной код: Если скрипт выведет ошибку в стандартный поток ошибок, ZennoPoster может это зафиксировать.
  • Логирование: Настройте логирование в ZennoPoster для записи всех успехов и неудач генерации.


Этот Python-скрипт представляет собой мощный инструмент для автоматической генерации фотореалистичных изображений с использованием экспериментальной модели Gemini 2.0 Flash от Google. Он разработан таким образом, чтобы быть надежным и удобным, позволяя вам создавать изображения на основе списка заданных тем, при этом автоматически управляя API-ключами и обработкой ошибок.
Основные функции и возможности:
  1. Настройки и Константы:
    • API_URL: Адрес API для взаимодействия с моделью Gemini.
    • API_KEYS_FILE: Имя файла, где хранятся ваши API-ключи (каждый ключ на новой строке). Это обеспечивает безопасное и гибкое управление ключами.
    • MODEL_ID: Идентификатор используемой модели Gemini.
    • OUTPUT_DIR: Название папки, куда будут сохраняться сгенерированные изображения. Скрипт автоматически создает эту папку, если ее нет.
    • DETAILS_FILE: Файл, содержащий список тем или описаний для генерации изображений, по одному на каждой строке.
    • BASE_PROMPT: Основная часть промпта (запроса), которая будет предшествовать каждому описанию из файла DETAILS_FILE, например, "Создай фотореалистичное изображение на тему: ".
    • MAX_RETRIES: Максимальное количество попыток повторной отправки запроса в случае временных ошибок, особенно при ошибке "Too Many Requests".
  2. Управление API-ключами:
    • Загрузка ключей (загрузить_api_ключи): Функция читает API-ключи из указанного текстового файла. Каждый ключ должен находиться на новой строке. Это позволяет легко добавлять или удалять ключи без изменения кода.
    • Ротация ключей (получить_текущий_ключ, текущий_индекс_ключа): Скрипт поддерживает ротацию API-ключей. Если один ключ достигает лимита запросов (ошибка 429 - Too Many Requests), скрипт автоматически переключается на следующий ключ из списка. Это значительно повышает устойчивость работы скрипта к ограничениям API.
  3. Обработка входных данных (тем для рисования):
    • Чтение деталей (read_drawing_details): Эта функция считывает все строки из файла DETAILS_FILE, каждая из которых является отдельной темой или промптом для генерации изображения.
    • Удаление использованных промптов (delete_line_from_file): После успешной генерации изображения по определенной теме, эта строка автоматически удаляется из файла DETAILS_FILE. Это гарантирует, что каждое описание будет обработано только один раз и предотвращает повторную генерацию одинаковых изображений.
  4. Безопасность и удобство имен файлов:
    • Очистка имени файла (sanitize_filename): Функция преобразует текст промпта в безопасное для использования имя файла. Она транслитерирует кириллицу в латиницу, заменяет пробелы на подчеркивания и удаляет недопустимые символы, ограничивая длину имени файла для лучшей совместимости.
  5. Основная логика генерации изображений (generate_image_with_flash_2_0):
    • Эта центральная функция отправляет запрос к API Gemini для генерации изображения.
    • Формирование полного промпта: Объединяет BASE_PROMPT с деталями из файла DETAILS_FILE.
    • Настройка запроса: Устанавливает необходимые заголовки и формирует JSON-тело запроса, включая generationConfig с параметрами temperature, topP, topK, которые влияют на креативность и качество генерации. Важно, что responseModalities установлен на ["TEXT", "IMAGE"], чтобы получить как текстовый ответ, так и само изображение.
    • Обработка ответа:
      • Парсит JSON-ответ от API.
      • Извлекает закодированные в Base64 данные изображения (inlineData).
      • Декодирует данные и сохраняет изображение в формате PNG в папку OUTPUT_DIR с уникальным именем, включающим очищенное описание и временную метку.
    • Устойчивость к ошибкам:
      • Включает механизм try-except для перехвата различных ошибок HTTP-запросов и проблем с декодированием JSON.
      • Обработка ошибки 429 (Too Many Requests): Если API возвращает ошибку 429, скрипт автоматически пытается повторить запрос, используя следующий API-ключ из списка, до MAX_RETRIES раз. Это делает процесс генерации более устойчивым к временным ограничениям API.
  6. Точка входа (if __name__ == "__main__":-)
    • Это главный блок, который выполняется при запуске скрипта.
    • Загружает API-ключи и темы для рисования.
    • Если ключи и темы доступны, он берет первую тему из списка, генерирует изображение, а затем удаляет эту тему из файла, чтобы она не обрабатывалась повторно.
    • Предоставляет информативные сообщения о ходе выполнения и возможных ошибках.
Как это работает в реальном сценарии:
Представьте, что у вас есть файл drawing_details.txt со списком тем, например:
Закат над океаном с парусником
Городской пейзаж в стиле киберпанк
Лесной водопад осенью


При запуске скрипт:
  1. Прочитает ваши API-ключи.
  2. Возьмет "Закат над океаном с парусником".
  3. Сформирует полный промпт, например, "Создай фотореалистичное изображение на тему: Закат над океаном с парусником".
  4. Отправит запрос к Gemini.
  5. Получит изображение и сохранит его как zakant_nad_okeanom_s_parusnikom_YYYYMMDD_HHMMSS.png в папке generated_images.
  6. Удалит "Закат над океаном с парусником" из файла drawing_details.txt.
  7. При следующем запуске скрипт возьмет следующую строку ("Городской пейзаж в стиле киберпанк") и повторит процесс.
Этот скрипт идеально подходит для автоматизации процесса создания множества изображений на основе заранее определенных тем, обеспечивая при этом гибкость в управлении API-ключами и устойчивость к возможным ошибкам API.

 

Вложения

Последнее редактирование модератором:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)