Image generation functionality using Azure OpenAI's DALL-E models for creating images from text descriptions. Supports various image sizes, quality settings, and style options.
Creates Azure OpenAI DALL-E models for image generation.
/**
* Creates an Azure OpenAI DALL-E model for image generation
* @param deploymentId - Azure OpenAI DALL-E deployment name (e.g., "dall-e-3")
* @param settings - Optional image generation settings
* @returns Image model instance for generating images from text descriptions
*/
imageModel(deploymentId: string, settings?: OpenAIImageSettings): ImageModelV1;Usage Example:
import { azure } from "@ai-sdk/azure";
import { generateImage } from "ai";
const imageModel = azure.imageModel("dall-e-3");
const { image } = await generateImage({
model: imageModel,
prompt: "A serene mountain landscape at sunset with a crystal clear lake reflecting the colorful sky",
size: "1024x1024",
providerOptions: {
openai: {
quality: "hd",
style: "vivid",
},
},
});
console.log("Generated image URL:", image.url);
console.log("Image dimensions:", image.width, "x", image.height);This method is deprecated and will be removed in future versions. Use imageModel instead.
/**
* @deprecated Use imageModel instead
* Creates an Azure OpenAI DALL-E model for image generation
*/
image(deploymentId: string, settings?: OpenAIImageSettings): ImageModelV1;interface OpenAIImageSettings {
maxImagesPerCall?: number;
}Additional DALL-E parameters are passed via providerOptions.openai in the generateImage() call:
// OpenAI-specific options passed via providerOptions.openai
interface OpenAIImageOptions {
style?: "vivid" | "natural"; // DALL-E 3 only
quality?: "standard" | "hd" | "high";
response_format?: "url" | "b64_json";
user?: string;
}
// Core AI SDK parameters for generateImage()
interface ImageGenerationOptions {
prompt: string;
n?: number;
size?: "256x256" | "512x512" | "1024x1024" | "1792x1024" | "1024x1792";
headers?: Record<string, string>;
providerOptions?: {
openai?: OpenAIImageOptions;
};
}import { azure } from "@ai-sdk/azure";
import { generateImage } from "ai";
const imageModel = azure.imageModel("dall-e-3");
const prompts = [
"A futuristic city skyline with flying cars and neon lights",
"A peaceful garden with cherry blossoms and a wooden bridge",
"An abstract geometric pattern in blue and gold colors",
];
const images = await Promise.all(
prompts.map(async (prompt) => {
const { image } = await generateImage({
model: imageModel,
prompt,
});
return { prompt, image };
})
);
images.forEach(({ prompt, image }, index) => {
console.log(`Image ${index + 1}: ${prompt}`);
console.log(`URL: ${image.url}`);
console.log(`Size: ${image.width}x${image.height}`);
console.log("---");
});import { azure } from "@ai-sdk/azure";
import { generateImage } from "ai";
const portraitModel = azure.imageModel("dall-e-3");
const { image } = await generateImage({
model: portraitModel,
prompt: "Professional headshot of a confident business executive, studio lighting, neutral background, high quality photography",
size: "1024x1024",
providerOptions: {
openai: {
quality: "hd",
style: "natural", // More realistic for portraits
},
},
});
console.log("High-quality portrait generated:", image.url);import { azure } from "@ai-sdk/azure";
import { generateImage } from "ai";
const artisticModel = azure.imageModel("dall-e-3");
const { image } = await generateImage({
model: artisticModel,
prompt: "Van Gogh style painting of a starry night over a modern city, swirling clouds, vibrant colors, impressionist brushstrokes",
size: "1792x1024", // Wide format for landscape
providerOptions: {
openai: {
quality: "hd",
style: "vivid", // More artistic and stylized
},
},
});
console.log("Artistic image generated:", image.url);
console.log("Dimensions:", image.width, "x", image.height);import { azure } from "@ai-sdk/azure";
import { generateImage } from "ai";
import { writeFileSync } from "fs";
const imageModel = azure.imageModel("dall-e-3");
const { image } = await generateImage({
model: imageModel,
prompt: "A detailed technical diagram showing the components of a solar panel system",
size: "1024x1024",
providerOptions: {
openai: {
response_format: "b64_json", // Return base64 instead of URL
},
},
});
if (image.base64) {
// Save the image locally
const buffer = Buffer.from(image.base64, "base64");
writeFileSync("solar-panel-diagram.png", buffer);
console.log("Image saved as solar-panel-diagram.png");
} else {
console.log("Image URL:", image.url);
}import { azure } from "@ai-sdk/azure";
import { generateImage } from "ai";
const imageModel = azure.imageModel("dall-e-3");
async function generateImageSafely(prompt: string) {
try {
const { image } = await generateImage({
model: imageModel,
prompt,
});
return {
success: true,
image,
error: null,
};
} catch (error) {
console.error("Image generation failed:", error);
return {
success: false,
image: null,
error: error instanceof Error ? error.message : "Unknown error",
};
}
}
// Safe image generation
const result = await generateImageSafely(
"A photograph that might violate content policy"
);
if (result.success) {
console.log("Image generated successfully:", result.image.url);
} else {
console.log("Image generation failed:", result.error);
}Image models implement the ImageModelV1 interface and are compatible with AI SDK image generation functions:
generateImage() - Generate single image from text promptThe generated images include metadata such as dimensions, URLs (or base64 data), and can be used immediately in applications or saved for later use.
Azure OpenAI's DALL-E models have content policies that restrict generation of:
Ensure your prompts comply with Azure OpenAI's usage policies to avoid generation failures.