Skip to content

Commit 37fa6fb

Browse files
included gpt-image-1.5 option
1 parent 70ff58e commit 37fa6fb

4 files changed

Lines changed: 37 additions & 20 deletions

File tree

content-gen/infra/main.bicep

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,10 @@ param gptModelName string = 'gpt-5.1'
5454
@description('Optional. Version of the GPT model to deploy.')
5555
param gptModelVersion string = '2025-11-13'
5656

57-
@description('Optional. Image model to deploy: gpt-image-1, dall-e-3, or none to skip.')
57+
@description('Optional. Image model to deploy: gpt-image-1, gpt-image-1.5, dall-e-3, or none to skip.')
5858
@allowed([
5959
'gpt-image-1'
60+
'gpt-image-1.5'
6061
'dall-e-3'
6162
'none'
6263
])
@@ -268,6 +269,11 @@ var imageModelConfig = {
268269
version: '2025-04-15'
269270
sku: 'GlobalStandard'
270271
}
272+
'gpt-image-1.5': {
273+
name: 'gpt-image-1.5'
274+
version: '2025-12-16'
275+
sku: 'GlobalStandard'
276+
}
271277
'dall-e-3': {
272278
name: 'dall-e-3'
273279
version: '3.0'

content-gen/infra/main.json

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"_generator": {
77
"name": "bicep",
88
"version": "0.39.26.7824",
9-
"templateHash": "9035268371577303624"
9+
"templateHash": "16137819665558470436"
1010
},
1111
"name": "Intelligent Content Generation Accelerator",
1212
"description": "Solution Accelerator for multimodal marketing content generation using Microsoft Agent Framework.\n"
@@ -99,11 +99,12 @@
9999
"defaultValue": "gpt-image-1",
100100
"allowedValues": [
101101
"gpt-image-1",
102+
"gpt-image-1.5",
102103
"dall-e-3",
103104
"none"
104105
],
105106
"metadata": {
106-
"description": "Optional. Image model to deploy: gpt-image-1, dall-e-3, or none to skip."
107+
"description": "Optional. Image model to deploy: gpt-image-1, gpt-image-1.5, dall-e-3, or none to skip."
107108
}
108109
},
109110
"azureOpenaiAPIVersion": {
@@ -334,6 +335,11 @@
334335
"version": "2025-04-15",
335336
"sku": "GlobalStandard"
336337
},
338+
"gpt-image-1.5": {
339+
"name": "gpt-image-1.5",
340+
"version": "2025-12-16",
341+
"sku": "GlobalStandard"
342+
},
337343
"dall-e-3": {
338344
"name": "dall-e-3",
339345
"version": "3.0",
@@ -10858,6 +10864,11 @@
1085810864
"roleDefinitionIdOrName": "5e0bd9bd-7b93-4f28-af87-19fc36ad61bd",
1085910865
"principalId": "[reference('userAssignedIdentity').outputs.principalId.value]",
1086010866
"principalType": "ServicePrincipal"
10867+
},
10868+
{
10869+
"roleDefinitionIdOrName": "53ca6127-db72-4b80-b1b0-d745d6d5456d",
10870+
"principalId": "[deployer().objectId]",
10871+
"principalType": "User"
1086110872
}
1086210873
]
1086310874
},

content-gen/src/backend/agents/image_content_agent.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
"""Image Content Agent - Generates marketing images via DALL-E 3 or gpt-image-1.
1+
"""Image Content Agent - Generates marketing images via DALL-E 3, gpt-image-1, or gpt-image-1.5.
22
33
Provides the generate_image function used by the orchestrator
4-
to create marketing images using either DALL-E 3 or gpt-image-1.
4+
to create marketing images using either DALL-E 3, gpt-image-1, or gpt-image-1.5.
55
"""
66

77
import logging
@@ -74,7 +74,7 @@ async def generate_dalle_image(
7474
quality: str = None
7575
) -> dict:
7676
"""
77-
Generate a marketing image using DALL-E 3 or gpt-image-1.
77+
Generate a marketing image using DALL-E 3, gpt-image-1, or gpt-image-1.5.
7878
7979
The model used is determined by AZURE_OPENAI_IMAGE_MODEL setting.
8080
@@ -84,10 +84,10 @@ async def generate_dalle_image(
8484
scene_description: Scene/setting description from creative brief
8585
size: Image size (model-specific, uses settings default if not provided)
8686
- dall-e-3: 1024x1024, 1024x1792, 1792x1024
87-
- gpt-image-1: 1024x1024, 1536x1024, 1024x1536, auto
87+
- gpt-image-1/1.5: 1024x1024, 1536x1024, 1024x1536, auto
8888
quality: Image quality (model-specific, uses settings default if not provided)
8989
- dall-e-3: standard, hd
90-
- gpt-image-1: low, medium, high, auto
90+
- gpt-image-1/1.5: low, medium, high, auto
9191
9292
Returns:
9393
Dictionary containing generated image data and metadata
@@ -97,7 +97,7 @@ async def generate_dalle_image(
9797
logger.info(f"Using image generation model: {image_model}")
9898

9999
# Use appropriate generator based on model
100-
if image_model == "gpt-image-1":
100+
if image_model in ["gpt-image-1", "gpt-image-1.5"]:
101101
return await _generate_gpt_image(prompt, product_description, scene_description, size, quality)
102102
else:
103103
return await _generate_dalle_image(prompt, product_description, scene_description, size, quality)
@@ -236,9 +236,9 @@ async def _generate_gpt_image(
236236
quality: str = None
237237
) -> dict:
238238
"""
239-
Generate a marketing image using gpt-image-1.
239+
Generate a marketing image using gpt-image-1 or gpt-image-1.5.
240240
241-
gpt-image-1 has different capabilities than DALL-E 3:
241+
gpt-image models have different capabilities than DALL-E 3:
242242
- Supports larger prompt sizes
243243
- Different size options: 1024x1024, 1536x1024, 1024x1536, auto
244244
- Different quality options: low, medium, high, auto
@@ -257,18 +257,18 @@ async def _generate_gpt_image(
257257
brand = app_settings.brand_guidelines
258258

259259
# Use defaults from settings if not provided
260-
# Map DALL-E quality settings to gpt-image-1 equivalents if needed
260+
# Map DALL-E quality settings to gpt-image-1 or gpt-image-1.5 equivalents if needed
261261
size = size or app_settings.azure_openai.image_size
262262
quality = quality or app_settings.azure_openai.image_quality
263263

264-
# Map DALL-E quality values to gpt-image-1 equivalents
264+
# Map DALL-E quality values to gpt-image-1 or gpt-image-1.5 equivalents
265265
quality_mapping = {
266266
"standard": "medium",
267267
"hd": "high",
268268
}
269269
quality = quality_mapping.get(quality, quality)
270270

271-
# Map DALL-E sizes to gpt-image-1 equivalents if needed
271+
# Map DALL-E sizes to gpt-image-1 or gpt-image-1.5 equivalents if needed
272272
size_mapping = {
273273
"1024x1792": "1024x1536", # Closest equivalent
274274
"1792x1024": "1536x1024", # Closest equivalent
@@ -332,10 +332,10 @@ async def _generate_gpt_image(
332332
)
333333

334334
try:
335-
# gpt-image-1 API call - note: gpt-image-1 doesn't support response_format parameter
335+
# gpt-image-1/1.5 API call - note: gpt-image doesn't support response_format parameter
336336
# It returns base64 data directly in the response
337337
response = await client.images.generate(
338-
model="gpt-image-1",
338+
model=app_settings.azure_openai.effective_image_model,
339339
prompt=full_prompt,
340340
size=size,
341341
quality=quality,

content-gen/src/backend/settings.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,12 @@ class _AzureOpenAISettings(BaseSettings):
6666
model: str = "gpt-5"
6767

6868
# Image generation model settings
69-
# Supported models: "dall-e-3" or "gpt-image-1"
69+
# Supported models: "dall-e-3" or "gpt-image-1" or "gpt-image-1.5"
7070
image_model: str = Field(default="dall-e-3", alias="AZURE_OPENAI_IMAGE_MODEL")
7171
dalle_model: str = Field(default="dall-e-3", alias="AZURE_OPENAI_DALLE_MODEL") # Legacy alias
7272
dalle_endpoint: Optional[str] = Field(default=None, alias="AZURE_OPENAI_DALLE_ENDPOINT")
7373

74-
# gpt-image-1 specific endpoint (if different from DALL-E endpoint)
74+
# gpt-image-1 or gpt-image-1.5 specific endpoint (if different from DALL-E endpoint)
7575
gpt_image_endpoint: Optional[str] = Field(default=None, alias="AZURE_OPENAI_GPT_IMAGE_ENDPOINT")
7676

7777
resource: Optional[str] = None
@@ -100,7 +100,7 @@ def effective_image_model(self) -> str:
100100
@property
101101
def image_endpoint(self) -> Optional[str]:
102102
"""Get the appropriate endpoint for the configured image model."""
103-
if self.effective_image_model == "gpt-image-1" and self.gpt_image_endpoint:
103+
if self.effective_image_model in ["gpt-image-1", "gpt-image-1.5"] and self.gpt_image_endpoint:
104104
return self.gpt_image_endpoint
105105
return self.dalle_endpoint
106106

@@ -110,7 +110,7 @@ def image_generation_enabled(self) -> bool:
110110
111111
Image generation requires either:
112112
- A DALL-E endpoint configured, OR
113-
- A gpt-image-1 endpoint configured, OR
113+
- A gpt-image-1 or gpt-image-1.5 endpoint configured, OR
114114
- Using the main OpenAI endpoint with an image model configured
115115
116116
Returns False if image_model is explicitly set to empty string or "none".

0 commit comments

Comments
 (0)