Script Automazione Generazione Immagini con Dall-E3 senza API

Quando si vuole creare un processo di generazione di centinaia immagini con DALL-E3 senza utilizzare le API di OpenAI e quindi andando a risparmiare concretamente un bel po’ di soldi, è possibile strutturare degli script in Python che, a seconda del tipo di esigenze generative, possano automatizzare la produzione di immagini direttamente dal ChatBot di OpenAI, attraverso la creazione di prompt dinamici, fruibili sia con Dall-E3 ma anche con modelli specifici come “Cosmic Dream” (sempre di OpenAI), consentendoci quindi di non dover pagare alcun costo di generazione.

Le principali problematiche

Evitare un prompt ripetitivo

Una volta generate un tot numero di immagini con uno stesso prompt, il sistema potrebbe interrompere la produzione e richiedere ulteriori specifiche o dettagli nei prompt successi. Per questo è molto importante creare delle variabili nel prompt di automazione della generazione di immagini, in modo da evitare il “blocco” del sistema e procedere regolarmente con una produzione continuata.

Limiti di tempo

Attualmente i ChatBot di OpenAI hanno una capacità dei ricezione messaggi (quindi dei prompt) limitata a 40 messaggi ogni 3 ore. Per questo diventa fondamentale ponderare la tempistica delle richieste, in modo tale da rispettare i limiti imposti da OpenAI ed evitare un ulteriori tipo di blocco possibile.

Struttura dello Script

import pyautogui
import time
import random
import keyboard

num_iterazioni = 500

parolevarie = [
    "AI", "Intelligenza Artificiale", "Code", "Script", "Scripting", 
    "Coding", "Hacking", "Machine Learning", "Deep Learning", "Data Science", 
    "Algoritmi", "Neural Networks", "Python", "JavaScript", "Automazione", 
    "Big Data", "Cloud Computing", "Cybersecurity", "Rete Neurale", "Programmazione",
    "Software Development", "Mobile App", "NPL", "Editing"
]

random.shuffle(parolevarie)
num_parole_selezionate = random.randint(3, 5)
parole_selezionate = random.sample(parolevarie, num_parole_selezionate)
parole_selezionate_str = ', '.join(parole_selezionate)

for i in range(num_iterazioni):
    time.sleep(5)
    prompt_ripetuto = f"""Elabora l'immagine orizzontale, in stile cyber, neon-illuminated, code, scripting, digital, 3D, rappresentante: {parole_selezionate_str}"""
    pyautogui.moveTo(986, 1310, duration=random.uniform(2, 8)) # Coordinate da Modificare in Base al punto di immissione del Prompt su Browser
    pyautogui.click(button='left')
    pyautogui.write(prompt_ripetuto)
    time.sleep(0.1)
    keyboard.press_and_release('enter')
    time.sleep(random.uniform(1, 3))
    pyautogui.moveTo(900, 1290, duration=random.uniform(2, 8))
    time.sleep(random.uniform(1, 3))
    sleep_time = random.uniform(180, 240)
    time.sleep(sleep_time)

Lo script è strutturato per prevedere una serie di argomenti suggeriti per la produzione delle immagini che vengono selezionati casualmente, sia nel numero che negli elementi, ad ogni singolo prompt, che a sua volta è impostato con un iniziale parte statica. Lo script prevede l’uso della libreria pyautogui e keyboard per i meccanismi di automazione ed interazione con il browser, librerie che devono essere preventivamente installate (tramite pip).

pip install pyautogui
pip install keyboard

Aggiungendo un altra variabile come “parolevarie” relativa invece agli stili grafici, avrete modo di cambiare anche le indicazioni stilistiche ad ogni prompt, ma questo certo dipende dal tipo di risultato che si vuole ottenere.

Importante notare come sia necessario variare le coordinate presenti nella stringa pyautogui.moveTo(986, 1310, duration=random.uniform(2, 8)) in quanto necessarie per l’individuazione sul browser dell’esatto punto di immissione del prompt dinamico.

Nella penultima riga dello script dove troviamo la stringa sleep_time = random.uniform(180, 240) sono impostati i valori 180 e 240 che indicano il range di secondi di attesa tra una richiesta di generazione e l’altra.