La generazione visiva in Microsoft Foundry non è un blocco unico: sono due mestieri distinti che condividono gli stessi modelli. Da una parte creare pixel nuovi partendo da una descrizione testuale, dall’altra intervenire su un media che esiste già — una foto di riferimento, un video prodotto poco prima. Ogni scenario si risolve scegliendo prima la rotta e poi il controllo giusto.
Generare: due rotte e i modelli giusti
I modelli di immagini di Foundry sono la serie gpt-image-. GPT-Image-2 è generalmente disponibile ed è quello indicato per l’alta risoluzione; GPT-Image-1.5, GPT-Image-1 e GPT-Image-1-Mini sono in limited access preview e richiedono una domanda di accesso prima del deployment. Il vecchio DALL-E 3 è stato ritirato il 4 marzo 2026: non si distribuisce più e i deployment esistenti non funzionano. Se compare come opzione in una domanda, è la risposta sbagliata.
Le rotte sono due: /images/generations accetta solo un prompt testuale, /images/edits accetta un’immagine di partenza più il prompt. La formula “reference media” della study guide punta esattamente qui: appena si parte da un’immagine esistente si cambia endpoint, anche quando la modifica è descritta a parole e non con una maschera.
from openai import AzureOpenAI
import base64, os
client = AzureOpenAI(
api_version="2025-04-01-preview",
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_key=os.environ["AZURE_OPENAI_API_KEY"],
)
result = client.images.generate(
model="gpt-image-2", # nome del deployment
prompt="uno stand fieristico modulare, luce diffusa",
n=1,
size="1024x1024",
quality="high",
output_format="png",
)
open("out.png", "wb").write(base64.b64decode(result.data[0].b64_json))
Un dettaglio che spiazza spesso: il servizio può riscrivere il prompt prima di passarlo al modello. Si chiama prompt transformation, applica un system message di sicurezza e qualità che arricchisce la descrizione mantenendone l’intento, e il testo davvero usato torna nel campo revised_prompt della risposta. Se un deployment non restituisce quel campo, la funzione non è disponibile per quel modello.
I controlli che governano il risultato
I parametri della generazione si dividono in due gruppi, ed è utile tenerli separati mentalmente. Quelli che spostano costo e tempo: quality (low, medium, high — low è la leva giusta quando la latenza conta), size (la serie GPT-Image-1 ammette solo 1024x1024, 1024x1536 e 1536x1024, mentre GPT-Image-2 accetta risoluzioni arbitrarie purché entrambi i lati siano multipli di 16 pixel) e n, fino a dieci immagini per richiesta quando servono varianti da far scegliere a una persona.
Quelli che cambiano la forma del file: output_format (png o jpeg), output_compression, valido solo per JPEG, e background. Impostare background su transparent richiede output_format PNG — è la combinazione che viene sbagliata più spesso, perché JPEG non ha canale alfa. A parte c’è lo streaming: stream insieme a partial_images restituisce immagini parziali mentre la generazione procede. Non accorcia il tempo totale, migliora la latenza percepita.
Modificare: maschere, fedeltà e prompt
L’editing ha tre modalità, in ordine di precisione crescente. La prima è puramente prompt-driven: si passa l’immagine e si descrive la modifica, lasciando al modello decidere dove intervenire. La seconda è l’inpainting con maschera: si allega un file mask che indica quale porzione rigenerare. La maschera deve essere un PNG delle stesse dimensioni dell’immagine, con i pixel completamente trasparenti (alfa a zero) nelle aree da modificare e opachi in quelle da preservare. Gli errori tipici sono tre: maschera invertita, dimensioni diverse dall’originale, oppure un JPEG al posto del PNG.
Il terzo controllo è input_fidelity, che regola quanto il modello preserva stile e tratti dell’immagine di partenza, i volti in particolare. Non è supportato da GPT-Image-1-Mini: quel modello resta la scelta economica e veloce, ma non quella per far riconoscere lo stesso soggetto prima e dopo.
Se l’immagine deve nascere dentro una conversazione, il Foundry Agent Service espone un tool di image generation in preview. Richiede un deployment gpt-image-1 e un modello orchestratore nello stesso Foundry project, e la chiamata va accompagnata dall’header x-ms-oai-image-generation-deployment. L’immagine torna in un output item di tipo image_generation_call, in base64. Il criterio dichiarato è netto: il tool serve quando la generazione è un passo di un dialogo o di un flusso multistep; per editing, maschere e streaming parziale si chiama direttamente l’Image API.
Video: un job asincrono, non una chiamata
Sora 2, in preview, genera video da tre tipi di input: solo testo; immagine più testo, dove l’immagine fa da ancora visiva del primo fotogramma; video più testo, per estendere o modificare filmati esistenti. Produce anche l’audio.
Il flusso non è sincrono. Si crea un job di generazione, se ne interroga lo stato finché attraversa queued, preprocessing, running, processing e arriva a succeeded — oppure a failed o cancelled — e solo allora si scarica l’MP4 dall’URL restituito. I parametri principali sono il prompt, la dimensione (verticale 720x1280 o orizzontale 1280x720), i secondi (4, 8 o 12) e n_variants per ottenere più interpretazioni dello stesso prompt.
Per modificare un video già generato la strada è il remix: si passa remix_video_id, l’identificativo di un video completato, e il modello riusa struttura, movimento e inquadratura applicando aggiustamenti mirati invece di ripartire da zero. È l’opzione da citare quando la domanda parla di “edit generated videos”: rigenerare con lo stesso prompt non è la stessa cosa.
Le restrizioni di AI responsabile su Sora 2 non sono raccomandazioni ma cause di fallimento del job: solo contenuto adatto a un pubblico sotto i 18 anni, personaggi e musica sotto copyright rifiutati, persone reali (figure pubbliche comprese) non generabili, immagini di input con volti umani respinte.
Da ricordare per l’esame
- DALL-E 3 è ritirato dal 4 marzo 2026: i deployment esistenti non funzionano, si usa la serie
gpt-image-. GPT-Image-2 è GA, gli altri sono in limited access preview. - Prompt e basta va su
/images/generations; qualunque media di riferimento in ingresso porta su/images/edits. - La maschera dell’inpainting è un PNG delle stesse dimensioni con alfa a zero dove si vuole la modifica;
background: transparentfunziona solo conoutput_formatPNG. - La generazione video è asincrona: crea il job, fai polling sullo stato, scarica l’MP4. Per modificare un video generato si usa
remix_video_id. - Il tool image generation dell’agente serve alla generazione dentro una conversazione: per editing, maschere e streaming parziale si chiama l’Image API diretta.