Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/deploy-orchestrator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@ on:
required: true
type: string
image_model_choice:
description: 'Image model to deploy (gpt-image-1, gpt-image-1.5, none)'
description: 'Image model to deploy (gpt-image-1-mini, gpt-image-1.5, none)'
required: false
default: 'gpt-image-1'
default: 'gpt-image-1-mini'
type: string

env:
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/deploy-v2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,10 +103,10 @@ on:
image_model_choice:
description: 'Image Model to Deploy'
required: false
default: 'gpt-image-1'
default: 'gpt-image-1-mini'
type: choice
options:
- 'gpt-image-1'
- 'gpt-image-1-mini'
- 'gpt-image-1.5'
- 'none'

Expand Down Expand Up @@ -307,8 +307,8 @@ jobs:
echo "existing_webapp_url=$INPUT_EXISTING_WEBAPP_URL" >> $GITHUB_OUTPUT

# Validate and output image_model_choice
IMAGE_MODEL="${INPUT_IMAGE_MODEL_CHOICE:-gpt-image-1}"
ALLOWED_MODELS=("gpt-image-1" "gpt-image-1.5" "none")
IMAGE_MODEL="${INPUT_IMAGE_MODEL_CHOICE:-gpt-image-1-mini}"
ALLOWED_MODELS=("gpt-image-1-mini" "gpt-image-1.5" "none")
if [[ ! " ${ALLOWED_MODELS[@]} " =~ " ${IMAGE_MODEL} " ]]; then
echo "❌ ERROR: image_model_choice '$IMAGE_MODEL' is invalid. Allowed: ${ALLOWED_MODELS[*]}"
exit 1
Expand All @@ -333,5 +333,5 @@ jobs:
AZURE_EXISTING_AI_PROJECT_RESOURCE_ID: ${{ needs.validate-inputs.outputs.azure_existing_ai_project_resource_id || '' }}
existing_webapp_url: ${{ needs.validate-inputs.outputs.existing_webapp_url || '' }}
trigger_type: ${{ github.event_name }}
image_model_choice: ${{ needs.validate-inputs.outputs.image_model_choice || 'gpt-image-1' }}
image_model_choice: ${{ needs.validate-inputs.outputs.image_model_choice || 'gpt-image-1-mini' }}
secrets: inherit
6 changes: 3 additions & 3 deletions .github/workflows/job-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ on:
default: ''
type: string
image_model_choice:
description: 'Image model to deploy (gpt-image-1, gpt-image-1.5, none)'
description: 'Image model to deploy (gpt-image-1-mini, gpt-image-1.5, none)'
required: false
default: 'gpt-image-1'
default: 'gpt-image-1-mini'
type: string
outputs:
RESOURCE_GROUP_NAME:
Expand Down Expand Up @@ -334,7 +334,7 @@ jobs:
env:
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
GPT_MIN_CAPACITY: ${{ env.GPT_MIN_CAPACITY }}
IMAGE_MODEL_CHOICE: ${{ inputs.image_model_choice || 'gpt-image-1' }}
IMAGE_MODEL_CHOICE: ${{ inputs.image_model_choice || 'gpt-image-1-mini' }}
IMAGE_MODEL_MIN_CAPACITY: ${{ env.IMAGE_MODEL_MIN_CAPACITY }}
AZURE_REGIONS: ${{ vars.AZURE_REGIONS }}
run: |
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ _Note: This is not meant to outline all costs as selected SKUs, scaled use, cust
|---|---|---|
| [Azure AI Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry/) | Free tier. Build generative AI applications on an enterprise-grade platform. | [Pricing](https://azure.microsoft.com/pricing/details/ai-studio/) |
| [Azure Storage Account](https://learn.microsoft.com/en-us/azure/storage/blobs/) | Standard tier, LRS. Pricing is based on storage and operations. Blob storage for product images and generated content. | [Pricing](https://azure.microsoft.com/pricing/details/storage/blobs/) |
| [Azure AI Services](https://learn.microsoft.com/en-us/azure/ai-services/) | S0 tier, defaults to gpt-5.1 (GPT) and gpt-image-1 models. Pricing is based on token count. | [Pricing](https://azure.microsoft.com/pricing/details/cognitive-services/) |
| [Azure AI Services](https://learn.microsoft.com/en-us/azure/ai-services/) | S0 tier, defaults to gpt-5.1 (GPT) and gpt-image-1-mini models. Pricing is based on token count. | [Pricing](https://azure.microsoft.com/pricing/details/cognitive-services/) |
| [Azure Container Instance](https://learn.microsoft.com/en-us/azure/container-instances/) | Backend API hosting with private VNet integration. Pricing is based on resource allocation. | [Pricing](https://azure.microsoft.com/pricing/details/container-instances/) |
| [Azure App Service](https://learn.microsoft.com/en-us/azure/app-service/) | B1 tier. Frontend hosting with Node.js proxy server. | [Pricing](https://azure.microsoft.com/pricing/details/app-service/) |
| [Azure Container Registry](https://learn.microsoft.com/en-us/azure/container-registry/) | Basic tier. Build, store, and manage container images and artifacts in a private registry for all types of container deployments | [Pricing](https://azure.microsoft.com/pricing/details/container-registry/) |
Expand Down
2 changes: 1 addition & 1 deletion archive-doc-gen/docs/TroubleShootingSteps.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Use these as quick reference guides to unblock your deployments.
| **Unauthorized - Operation cannot be completed without additional quota** | Insufficient quota for requested operation | <ul><li>Check your quota usage using:<br>`az vm list-usage --location "<Location>" -o table`</li><li> To request more quota refer to [VM Quota Request](https://techcommunity.microsoft.com/blog/startupsatmicrosoftblog/how-to-increase-quota-for-specific-types-of-azure-virtual-machines/3792394)</li></ul> |
| **CrossTenantDeploymentNotPermitted** | Deployment across different Azure AD tenants not allowed | <ul><li> **Check tenant match:** Ensure your deployment identity (user/SP) and the target resource group are in the same tenant:<br>`az account show`<br>`az group show --name <RG_NAME>`</li><li> **Verify pipeline/service principal:** If using CI/CD, confirm the service principal belongs to the same tenant and has permissions on the resource group</li><li> **Avoid cross-tenant references:** Make sure your Bicep doesn't reference subscriptions, resource groups, or resources in another tenant</li><li> **Test minimal deployment:** Deploy a simple resource to the same resource group to confirm identity and tenant are correct</li><li> **Guest/external accounts:** Avoid using guest users from other tenants; use native accounts or SPs in the tenant</li></ul> |
| **RequestDisallowedByPolicy** | Azure Policy blocking the requested operation | <ul><li> This typically indicates that an Azure Policy is preventing the requested action due to policy restrictions in your subscription</li><li> For more details and guidance on resolving this issue, refer to: [RequestDisallowedByPolicy](https://learn.microsoft.com/en-us/troubleshoot/azure/azure-kubernetes/create-upgrade-delete/error-code-requestdisallowedbypolicy) </li></ul> |
| **SpecialFeatureOrQuotaIdRequired** | Subscription lacks access to specific Azure OpenAI models | This error occurs when your subscription does not have access to certain Azure OpenAI models.<br><br>**Example error message:**<br>`SpecialFeatureOrQuotaIdRequired: The current subscription does not have access to this model 'Format:OpenAI,Name:o3,Version:2025-04-16'.`<br><br>**Resolution:**<br>To gain access, submit a request using the official form:<br>👉 [Azure OpenAI Model Access Request](https://customervoice.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xUQ1VGQUEzRlBIMVU2UFlHSFpSNkpOR0paRSQlQCN0PWcu)<br><br>You'll need to use this form if you require access to the following restricted models:<br><ul><li> gpt-5</li><li> o3</li><li> o3-pro</li><li> deep research</li><li> reasoning summary</li><li> gpt-image-1</li></ul>Once your request is approved, redeploy your resource. |
| **SpecialFeatureOrQuotaIdRequired** | Subscription lacks access to specific Azure OpenAI models | This error occurs when your subscription does not have access to certain Azure OpenAI models.<br><br>**Example error message:**<br>`SpecialFeatureOrQuotaIdRequired: The current subscription does not have access to this model 'Format:OpenAI,Name:o3,Version:2025-04-16'.`<br><br>**Resolution:**<br>To gain access, submit a request using the official form:<br>👉 [Azure OpenAI Model Access Request](https://customervoice.microsoft.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR7en2Ais5pxKtso_Pz4b1_xUQ1VGQUEzRlBIMVU2UFlHSFpSNkpOR0paRSQlQCN0PWcu)<br><br>You'll need to use this form if you require access to the following restricted models:<br><ul><li> gpt-5</li><li> o3</li><li> o3-pro</li><li> deep research</li><li> reasoning summary</li><li> gpt-image-1-mini</li></ul>Once your request is approved, redeploy your resource. |
| **ResourceProviderError** | Resource provider not registered in subscription | <ul><li> This error occurs when the resource provider is not registered in your subscription</li><li> To register it, refer to [Register Resource Provider](https://learn.microsoft.com/en-us/azure/azure-resource-manager/troubleshooting/error-register-resource-provider?tabs=azure-cli) documentation </li></ul>|

--------------------------------
Expand Down
12 changes: 6 additions & 6 deletions content-gen/.env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ USE_FOUNDRY=false
# Format: https://<project-name>.services.ai.azure.com
AZURE_AI_PROJECT_ENDPOINT=

# Image model deployment name in Foundry (e.g., gpt-image-1)
AZURE_AI_IMAGE_DEPLOYMENT=gpt-image-1
# Image model deployment name in Foundry (e.g., gpt-image-1-mini)
AZURE_AI_IMAGE_DEPLOYMENT=gpt-image-1-mini

# =============================================================================
# Azure OpenAI Configuration
Expand All @@ -31,14 +31,14 @@ AZURE_OPENAI_ENDPOINT=https://your-openai.openai.azure.com/
AZURE_OPENAI_GPT_MODEL=gpt-5.1

# Image Generation Model Configuration
# Supported models: gpt-image-1 or gpt-image-1.5
AZURE_OPENAI_IMAGE_MODEL=gpt-image-1
# Supported models: gpt-image-1-mini or gpt-image-1.5
AZURE_OPENAI_IMAGE_MODEL=gpt-image-1-mini

# For gpt-image-1 or gpt-image-1.5, the endpoint is the same as the main OpenAI endpoint, but you can specify a different one if needed
# For gpt-image-1-mini or gpt-image-1.5, the endpoint is the same as the main OpenAI endpoint, but you can specify a different one if needed
AZURE_OPENAI_GPT_IMAGE_ENDPOINT=https://your-openai.openai.azure.com

# Image generation settings
# For gpt-image-1/1.5: sizes are 1024x1024, 1536x1024, 1024x1536, auto; quality is low, medium, high, auto
# For gpt-image-1-mini/1.5: sizes are 1024x1024, 1536x1024, 1024x1536, auto; quality is low, medium, high, auto
AZURE_OPENAI_IMAGE_SIZE=1024x1024
AZURE_OPENAI_IMAGE_QUALITY=medium

Expand Down
2 changes: 1 addition & 1 deletion content-gen/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ See `src/backend/settings.py` for all configuration options. Key settings:
| `AZURE_OPENAI_ENDPOINT` | Azure OpenAI endpoint for GPT model |
| `AZURE_OPENAI_GPT_MODEL` | GPT model deployment name |
| `AZURE_OPENAI_GPT_IMAGE_ENDPOINT` | Azure OpenAI endpoint for GPT image model (if separate) |
| `AZURE_OPENAI_IMAGE_MODEL` | GPT image model deployment name (gpt-image-1) |
| `AZURE_OPENAI_IMAGE_MODEL` | GPT image model deployment name (gpt-image-1-mini) |
| `COSMOS_ENDPOINT` | Azure Cosmos DB endpoint |
| `COSMOS_DATABASE` | Cosmos DB database name |
| `AZURE_STORAGE_ACCOUNT_NAME` | Storage account name |
Expand Down
6 changes: 3 additions & 3 deletions content-gen/docs/AZD_DEPLOYMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ This guide covers deploying the Content Generation Solution Accelerator using Az

- An Azure subscription with the following permissions:
- Create Resource Groups
- Deploy Azure AI Services (GPT-5.1, GPT-Image-1)
- Deploy Azure AI Services (GPT-5.1, GPT-Image-1-mini)
- Create Container Registry, Container Instances, App Service
- Create Cosmos DB, Storage Account, AI Search
- Assign RBAC roles

- **Quota**: Ensure you have sufficient quota for:
- GPT-5.1 (or your chosen model)
- GPT-Image-1 (or GPT-Image-1.5 - for image generation)
- GPT-Image-1-mini (or GPT-Image-1.5 - for image generation)

## Quick Start

Expand Down Expand Up @@ -300,7 +300,7 @@ When `enablePrivateNetworking` is enabled:
│ │ │
│ ┌───────▼──────────┐ ┌───────────────────────────────┐ │
│ │ Storage Account │ │ Azure AI Services │ │
│ └──────────────────┘ │ (GPT-5.1, GPT-Image-1) │ │
│ └──────────────────┘ │ (GPT-5.1, GPT-Image-1-mini) │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
Expand Down
4 changes: 2 additions & 2 deletions content-gen/docs/CustomizingAzdParameters.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ By default this template will use the environment name as the prefix to prevent
| `gptModelVersion` | string | `2025-11-13` | Sets the GPT model version. |
| `gptModelDeploymentType` | string | `GlobalStandard` | Defines the model deployment type (allowed: `Standard`, `GlobalStandard`). |
| `gptModelCapacity` | integer | `150` | Sets the GPT model token capacity (minimum: `10`). |
| `imageModelChoice` | string | `gpt-image-1` | Image model to deploy (allowed: `gpt-image-1`, `gpt-image-1.5`, `none`). |
| `imageModelChoice` | string | `gpt-image-1-mini` | Image model to deploy (allowed: `gpt-image-1-mini`, `gpt-image-1.5`, `none`). |
| `imageModelCapacity` | integer | `1` | Sets the image model deployment capacity in RPM (minimum: `1`). |
| `azureOpenaiAPIVersion` | string | `2025-01-01-preview` | Specifies the API version for Azure OpenAI service. |
| `AZURE_ENV_OPENAI_LOCATION` | string | `<User selects during deployment>` | Sets the Azure region for OpenAI resource deployment. |
Expand All @@ -38,6 +38,6 @@ azd env set <PARAMETER_NAME> <VALUE>
azd env set AZURE_LOCATION westus2
azd env set gptModelName gpt-5.1
azd env set gptModelDeploymentType Standard
azd env set imageModelChoice gpt-image-1
azd env set imageModelChoice gpt-image-1-mini
azd env set ACR_NAME contentgencontainerreg
```
6 changes: 3 additions & 3 deletions content-gen/docs/DEPLOYMENT.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ When you start the deployment, most parameters will have **default values**, but
| **GPT Model Version** | The version of the selected GPT model. | 2025-11-13 |
| **OpenAI API Version** | The Azure OpenAI API version to use. | 2025-01-01-preview |
| **GPT Model Deployment Capacity** | Configure capacity for **GPT models** (in thousands). | 150k |
| **Image Model** | Choose from **gpt-image-1, gpt-image-1.5** | gpt-image-1 |
| **Image Model** | Choose from **gpt-image-1-mini, gpt-image-1.5** | gpt-image-1-mini |
| **Image Tag** | Docker image tag to deploy. Common values: `latest`, `dev`, `hotfix`. | latest |
| **Existing Log Analytics Workspace** | To reuse an existing Log Analytics Workspace ID. | *(empty)* |
| **Existing Azure AI Foundry Project** | To reuse an existing Azure AI Foundry Project ID instead of creating a new one. | *(empty)* |
Expand All @@ -151,7 +151,7 @@ By default, the **GPT-5.1 model capacity** in deployment is set to **150k tokens

> **For GPT-5.1 - increase the capacity post-deployment for optimal performance if required.**

> **For GPT-Image-1 - ensure you have sufficient capacity for image generation requests.**
> **For GPT-Image-1-mini - ensure you have sufficient capacity for image generation requests.**

Depending on your subscription quota and capacity, you can adjust quota settings to better meet your specific needs.

Expand Down Expand Up @@ -217,7 +217,7 @@ az webapp config set -g $RESOURCE_GROUP -n <app-name> --http20-enabled false
**Cause**: Missing GPT-Image model deployment or incorrect endpoint

**Solution**:
1. Verify GPT-Image-1 or GPT-Image-1.5 deployment exists in Azure OpenAI resource
1. Verify GPT-Image-1-mini or GPT-Image-1.5 deployment exists in Azure OpenAI resource
2. Check `AZURE_OPENAI_IMAGE_MODEL` and `AZURE_OPENAI_GPT_IMAGE_ENDPOINT` environment variables

</details>
Expand Down
12 changes: 6 additions & 6 deletions content-gen/docs/IMAGE_GENERATION.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# Image Generation (gpt-image-1 / gpt-image-1.5)
# Image Generation (gpt-image-1-mini / gpt-image-1.5)

## Overview

The accelerator supports image generation through Azure OpenAI image models:

- `gpt-image-1`
- `gpt-image-1-mini`
- `gpt-image-1.5`

Both models are used through `images.generate()` in the backend image agent. The selected model is controlled by `AZURE_OPENAI_IMAGE_MODEL`.
Expand All @@ -15,7 +15,7 @@ Both models are used through `images.generate()` in the backend image agent. The

| Model | Status | Primary Use |
|-------|--------|-------------|
| `gpt-image-1` | Supported | General marketing image generation |
| `gpt-image-1-mini` | Supported | General marketing image generation |
| `gpt-image-1.5` | Supported | Higher-quality marketing image generation |

### Prompting Strategy
Expand All @@ -39,7 +39,7 @@ The agent enforces no-text-in-image constraints and color fidelity requirements
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Marketing Image │◀────│ gpt-image-1/1.5 │◀────│ Combined Prompt │
│ Marketing Image │◀────│ gpt-image-1-mini/1.5 │◀────│ Combined Prompt │
│ (Output) │ │ (Generate) │ │ (Desc + Brief) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
Expand Down Expand Up @@ -140,7 +140,7 @@ async def generate_marketing_image(

- `AZURE_OPENAI_ENDPOINT`
- `AZURE_OPENAI_GPT_MODEL`
- `AZURE_OPENAI_IMAGE_MODEL` (`gpt-image-1`, `gpt-image-1.5`, or `none`)
- `AZURE_OPENAI_IMAGE_MODEL` (`gpt-image-1-mini`, `gpt-image-1.5`, or `none`)
- `AZURE_OPENAI_GPT_IMAGE_ENDPOINT` (optional if same as main endpoint)
- `AZURE_OPENAI_API_VERSION`
- `AZURE_OPENAI_IMAGE_API_VERSION`
Expand Down Expand Up @@ -183,7 +183,7 @@ The backend image generator calls Azure OpenAI with:

### Model Availability Notes

1. Deploy either `gpt-image-1` or `gpt-image-1.5` based on quota and regional availability.
1. Deploy either `gpt-image-1-mini` or `gpt-image-1.5` based on quota and regional availability.
2. Set `AZURE_OPENAI_IMAGE_MODEL` to the deployed model name.
3. If using a separate image endpoint, set `AZURE_OPENAI_GPT_IMAGE_ENDPOINT`.
4. Keep `AZURE_OPENAI_IMAGE_API_VERSION` aligned with the image model API version required by your deployment.
Expand Down
Loading
Loading