diff --git a/docs/migration.md b/docs/migration.md index 3e71e7d2d..82de9c1db 100644 --- a/docs/migration.md +++ b/docs/migration.md @@ -1,4 +1,8 @@ -# Migration +# Migration 2.1 + +The new changes merges GPT-4 and GPT-4 Vision models into a single GPT-4o model. This allows multi-modal inputs and generates text as an output. The new model is available within the following [regions](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-preview-model-availability). + +# Migration 2.0 The following changes and services are required to migrate from the old version to the new version. @@ -6,10 +10,10 @@ Refer the `.env.example` file for the latest environment variable changes. If you previously had Azure Chat running and have pulled the v2 version you will need at minimum to make the following changes: -* Change the "OPENAI_API_KEY" environment setting to "AZURE_OPENAI_API_KEY" -* Add an additional container to your Cosmos DB database called "config" with a partition key of "/userId" -* Add the "AZURE_KEY_VAULT_NAME" environment setting with the name of your Azure Key Vault -* Add the "New Azure Services" settings below if you wish to use these features +- Change the "OPENAI_API_KEY" environment setting to "AZURE_OPENAI_API_KEY" +- Add an additional container to your Cosmos DB database called "config" with a partition key of "/userId" +- Add the "AZURE_KEY_VAULT_NAME" environment setting with the name of your Azure Key Vault +- Add the "New Azure Services" settings below if you wish to use these features ## New Azure Services diff --git a/infra/main.bicep b/infra/main.bicep index c6e2f3ad7..60eaa51b2 100644 --- a/infra/main.bicep +++ b/infra/main.bicep @@ -20,12 +20,12 @@ param location string param openAILocation string param openAISku string = 'S0' -param openAIApiVersion string = '2023-12-01-preview' +param openAIApiVersion string ='2024-05-13' -param chatGptDeploymentCapacity int = 120 -param chatGptDeploymentName string = 'chat-gpt-35-turbo' -param chatGptModelName string = 'gpt-35-turbo' -param chatGptModelVersion string = '1106' +param chatGptDeploymentCapacity int = 30 +param chatGptDeploymentName string = 'gpt-4o' +param chatGptModelName string = 'gpt-4o' +param chatGptModelVersion string = '2024-05-13' param embeddingDeploymentName string = 'embedding' param embeddingDeploymentCapacity int = 120 param embeddingModelName string = 'text-embedding-ada-002' @@ -40,17 +40,6 @@ param dalleDeploymentName string = 'dall-e-3' param dalleModelName string = 'dall-e-3' param dalleApiVersion string = '2023-12-01-preview' -// DALL-E v3 only supported in Sweden Central for now -@description('Location for the GPT vision instance resource') -@allowed(['swedencentral','westus',]) -param gptvisionLocation string - -param gptvisionDeploymentCapacity int = 1 -param gptvisionDeploymentName string = 'gpt-4-vision' -param gptvisionModelName string = 'gpt-4' -param gptvisionApiVersion string = '2023-12-01-preview' -param gptvisionModelVersion string = 'vision-preview' - param formRecognizerSkuName string = 'S0' param searchServiceIndexName string = 'azure-chat' param searchServiceSkuName string = 'standard' @@ -93,12 +82,6 @@ module resources 'resources.bicep' = { dalleDeploymentName: dalleDeploymentName dalleModelName: dalleModelName dalleApiVersion: dalleApiVersion - gptvisionLocation: gptvisionLocation - gptvisionApiVersion: gptvisionApiVersion - gptvisionDeploymentCapacity: gptvisionDeploymentCapacity - gptvisionDeploymentName: gptvisionDeploymentName - gptvisionModelName: gptvisionModelName - gptvisionModelVersion: gptvisionModelVersion formRecognizerSkuName: formRecognizerSkuName searchServiceIndexName: searchServiceIndexName searchServiceSkuName: searchServiceSkuName diff --git a/infra/main.json b/infra/main.json index 25d7ee091..397308da6 100644 --- a/infra/main.json +++ b/infra/main.json @@ -4,8 +4,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.24.24.22086", - "templateHash": "16779160080190232837" + "version": "0.29.47.4906", + "templateHash": "18214004695586675733" } }, "parameters": { @@ -48,23 +48,23 @@ }, "openAIApiVersion": { "type": "string", - "defaultValue": "2023-12-01-preview" + "defaultValue": "2024-05-13" }, "chatGptDeploymentCapacity": { "type": "int", - "defaultValue": 120 + "defaultValue": 30 }, "chatGptDeploymentName": { "type": "string", - "defaultValue": "chat-gpt-35-turbo" + "defaultValue": "gpt-4o" }, "chatGptModelName": { "type": "string", - "defaultValue": "gpt-35-turbo" + "defaultValue": "gpt-4o" }, "chatGptModelVersion": { "type": "string", - "defaultValue": "1106" + "defaultValue": "2024-05-13" }, "embeddingDeploymentName": { "type": "string", @@ -103,36 +103,6 @@ "type": "string", "defaultValue": "2023-12-01-preview" }, - "gptvisionLocation": { - "type": "string", - "allowedValues": [ - "swedencentral", - "westus" - ], - "metadata": { - "description": "Location for the GPT vision instance resource" - } - }, - "gptvisionDeploymentCapacity": { - "type": "int", - "defaultValue": 1 - }, - "gptvisionDeploymentName": { - "type": "string", - "defaultValue": "gpt-4-vision" - }, - "gptvisionModelName": { - "type": "string", - "defaultValue": "gpt-4" - }, - "gptvisionApiVersion": { - "type": "string", - "defaultValue": "2023-12-01-preview" - }, - "gptvisionModelVersion": { - "type": "string", - "defaultValue": "vision-preview" - }, "formRecognizerSkuName": { "type": "string", "defaultValue": "S0" @@ -239,24 +209,6 @@ "dalleApiVersion": { "value": "[parameters('dalleApiVersion')]" }, - "gptvisionLocation": { - "value": "[parameters('gptvisionLocation')]" - }, - "gptvisionApiVersion": { - "value": "[parameters('gptvisionApiVersion')]" - }, - "gptvisionDeploymentCapacity": { - "value": "[parameters('gptvisionDeploymentCapacity')]" - }, - "gptvisionDeploymentName": { - "value": "[parameters('gptvisionDeploymentName')]" - }, - "gptvisionModelName": { - "value": "[parameters('gptvisionModelName')]" - }, - "gptvisionModelVersion": { - "value": "[parameters('gptvisionModelVersion')]" - }, "formRecognizerSkuName": { "value": "[parameters('formRecognizerSkuName')]" }, @@ -282,8 +234,8 @@ "metadata": { "_generator": { "name": "bicep", - "version": "0.24.24.22086", - "templateHash": "14077555141603956691" + "version": "0.29.47.4906", + "templateHash": "18109441359842852578" } }, "parameters": { @@ -301,36 +253,28 @@ "type": "string" }, "openAiSkuName": { - "type": "string", - "defaultValue": "S0" + "type": "string" }, "chatGptDeploymentCapacity": { - "type": "int", - "defaultValue": 30 + "type": "int" }, "chatGptDeploymentName": { - "type": "string", - "defaultValue": "chat-gpt-35-turbo" + "type": "string" }, "chatGptModelName": { - "type": "string", - "defaultValue": "chat-gpt-35-turbo" + "type": "string" }, "chatGptModelVersion": { - "type": "string", - "defaultValue": "1106" + "type": "string" }, "embeddingDeploymentName": { - "type": "string", - "defaultValue": "text-embedding-ada-002" + "type": "string" }, "embeddingDeploymentCapacity": { - "type": "int", - "defaultValue": 10 + "type": "int" }, "embeddingModelName": { - "type": "string", - "defaultValue": "text-embedding-ada-002" + "type": "string" }, "dalleLocation": { "type": "string" @@ -347,29 +291,6 @@ "dalleApiVersion": { "type": "string" }, - "gptvisionLocation": { - "type": "string" - }, - "gptvisionDeploymentCapacity": { - "type": "int", - "defaultValue": 30 - }, - "gptvisionDeploymentName": { - "type": "string", - "defaultValue": "gpt-4-vision" - }, - "gptvisionModelName": { - "type": "string", - "defaultValue": "gpt-4" - }, - "gptvisionApiVersion": { - "type": "string", - "defaultValue": "2023-12-01-preview" - }, - "gptvisionModelVersion": { - "type": "string", - "defaultValue": "vision-preview" - }, "speechServiceSkuName": { "type": "string", "defaultValue": "S0" @@ -408,7 +329,6 @@ "variables": { "openai_name": "[toLower(format('{0}-aillm-{1}', parameters('name'), parameters('resourceToken')))]", "openai_dalle_name": "[toLower(format('{0}-aidalle-{1}', parameters('name'), parameters('resourceToken')))]", - "openai_gpt_vision_name": "[toLower(format('{0}-aivision-{1}', parameters('name'), parameters('resourceToken')))]", "form_recognizer_name": "[toLower(format('{0}-form-{1}', parameters('name'), parameters('resourceToken')))]", "speech_service_name": "[toLower(format('{0}-speech-{1}', parameters('name'), parameters('resourceToken')))]", "cosmos_name": "[toLower(format('{0}-cosmos-{1}', parameters('name'), parameters('resourceToken')))]", @@ -435,7 +355,7 @@ "version": "[parameters('chatGptModelVersion')]" }, "sku": { - "name": "Standard", + "name": "GlobalStandard", "capacity": "[parameters('chatGptDeploymentCapacity')]" } }, @@ -479,19 +399,6 @@ "[resourceId('Microsoft.Web/sites', variables('webapp_name'))]" ] }, - { - "type": "Microsoft.KeyVault/vaults/secrets", - "apiVersion": "2021-06-01-preview", - "name": "[format('{0}/{1}', variables('keyVaultName'), 'AZURE-OPENAI-VISION-API-KEY')]", - "properties": { - "contentType": "text/plain", - "value": "[listKeys(resourceId('Microsoft.CognitiveServices/accounts', variables('openai_gpt_vision_name')), '2023-05-01').key1]" - }, - "dependsOn": [ - "[resourceId('Microsoft.CognitiveServices/accounts', variables('openai_gpt_vision_name'))]", - "[resourceId('Microsoft.KeyVault/vaults', variables('keyVaultName'))]" - ] - }, { "type": "Microsoft.KeyVault/vaults/secrets", "apiVersion": "2021-06-01-preview", @@ -613,25 +520,6 @@ "[resourceId('Microsoft.CognitiveServices/accounts', variables('openai_dalle_name'))]" ] }, - { - "type": "Microsoft.CognitiveServices/accounts/deployments", - "apiVersion": "2023-05-01", - "name": "[format('{0}/{1}', variables('openai_gpt_vision_name'), parameters('gptvisionDeploymentName'))]", - "properties": { - "model": { - "format": "OpenAI", - "name": "[parameters('gptvisionModelName')]", - "version": "[parameters('gptvisionModelVersion')]" - } - }, - "sku": { - "name": "Standard", - "capacity": "[parameters('gptvisionDeploymentCapacity')]" - }, - "dependsOn": [ - "[resourceId('Microsoft.CognitiveServices/accounts', variables('openai_gpt_vision_name'))]" - ] - }, { "type": "Microsoft.Storage/storageAccounts/blobServices/containers", "apiVersion": "2022-05-01", @@ -693,22 +581,6 @@ "name": "SCM_DO_BUILD_DURING_DEPLOYMENT", "value": "true" }, - { - "name": "AZURE_OPENAI_VISION_API_KEY", - "value": "[format('@Microsoft.KeyVault(VaultName={0};SecretName={1})', variables('keyVaultName'), 'AZURE-OPENAI-VISION-API-KEY')]" - }, - { - "name": "AZURE_OPENAI_VISION_API_INSTANCE_NAME", - "value": "[variables('openai_gpt_vision_name')]" - }, - { - "name": "AZURE_OPENAI_VISION_API_DEPLOYMENT_NAME", - "value": "[parameters('gptvisionDeploymentName')]" - }, - { - "name": "AZURE_OPENAI_VISION_API_VERSION", - "value": "[parameters('gptvisionApiVersion')]" - }, { "name": "AZURE_OPENAI_API_KEY", "value": "[format('@Microsoft.KeyVault(VaultName={0};SecretName={1})', variables('keyVaultName'), 'AZURE-OPENAI-API-KEY')]" @@ -809,7 +681,6 @@ "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), 'AZURE-DOCUMENT-INTELLIGENCE-KEY')]", "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), 'AZURE-OPENAI-API-KEY')]", "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), 'AZURE-OPENAI-DALLE-API-KEY')]", - "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), 'AZURE-OPENAI-VISION-API-KEY')]", "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), 'AZURE-SEARCH-API-KEY')]", "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), 'AZURE-SPEECH-KEY')]", "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), 'AZURE-STORAGE-ACCOUNT-KEY')]", @@ -1024,21 +895,6 @@ "name": "[parameters('openAiSkuName')]" } }, - { - "type": "Microsoft.CognitiveServices/accounts", - "apiVersion": "2023-05-01", - "name": "[variables('openai_gpt_vision_name')]", - "location": "[parameters('gptvisionLocation')]", - "tags": "[parameters('tags')]", - "kind": "OpenAI", - "properties": { - "customSubDomainName": "[variables('openai_gpt_vision_name')]", - "publicNetworkAccess": "Enabled" - }, - "sku": { - "name": "[parameters('openAiSkuName')]" - } - }, { "type": "Microsoft.CognitiveServices/accounts", "apiVersion": "2023-05-01", diff --git a/infra/resources.bicep b/infra/resources.bicep index 110672927..49b3a1c29 100644 --- a/infra/resources.bicep +++ b/infra/resources.bicep @@ -4,14 +4,14 @@ param resourceToken string param openai_api_version string param openAiLocation string -param openAiSkuName string = 'S0' -param chatGptDeploymentCapacity int = 30 -param chatGptDeploymentName string = 'chat-gpt-35-turbo' -param chatGptModelName string = 'chat-gpt-35-turbo' -param chatGptModelVersion string = '1106' -param embeddingDeploymentName string = 'text-embedding-ada-002' -param embeddingDeploymentCapacity int = 10 -param embeddingModelName string = 'text-embedding-ada-002' +param openAiSkuName string +param chatGptDeploymentCapacity int +param chatGptDeploymentName string +param chatGptModelName string +param chatGptModelVersion string +param embeddingDeploymentName string +param embeddingDeploymentCapacity int +param embeddingModelName string param dalleLocation string param dalleDeploymentCapacity int @@ -19,13 +19,6 @@ param dalleDeploymentName string param dalleModelName string param dalleApiVersion string -param gptvisionLocation string -param gptvisionDeploymentCapacity int = 30 -param gptvisionDeploymentName string = 'gpt-4-vision' -param gptvisionModelName string = 'gpt-4' -param gptvisionApiVersion string = '2023-12-01-preview' -param gptvisionModelVersion string = 'vision-preview' - param speechServiceSkuName string = 'S0' param formRecognizerSkuName string = 'S0' @@ -45,7 +38,6 @@ param tags object = {} var openai_name = toLower('${name}-aillm-${resourceToken}') var openai_dalle_name = toLower('${name}-aidalle-${resourceToken}') -var openai_gpt_vision_name = toLower('${name}-aivision-${resourceToken}') var form_recognizer_name = toLower('${name}-form-${resourceToken}') var speech_service_name = toLower('${name}-speech-${resourceToken}') @@ -79,7 +71,7 @@ var llmDeployments = [ version: chatGptModelVersion } sku: { - name: 'Standard' + name: 'GlobalStandard' capacity: chatGptDeploymentCapacity } } @@ -133,22 +125,6 @@ resource webApp 'Microsoft.Web/sites@2020-06-01' = { name: 'SCM_DO_BUILD_DURING_DEPLOYMENT' value: 'true' } - { - name: 'AZURE_OPENAI_VISION_API_KEY' - value: '@Microsoft.KeyVault(VaultName=${kv.name};SecretName=${kv::AZURE_OPENAI_VISION_API_KEY.name})' - } - { - name: 'AZURE_OPENAI_VISION_API_INSTANCE_NAME' - value: openai_gpt_vision_name - } - { - name: 'AZURE_OPENAI_VISION_API_DEPLOYMENT_NAME' - value: gptvisionDeploymentName - } - { - name: 'AZURE_OPENAI_VISION_API_VERSION' - value: gptvisionApiVersion - } { name: 'AZURE_OPENAI_API_KEY' value: '@Microsoft.KeyVault(VaultName=${kv.name};SecretName=${kv::AZURE_OPENAI_API_KEY.name})' @@ -298,14 +274,6 @@ resource kv 'Microsoft.KeyVault/vaults@2021-06-01-preview' = { enabledForTemplateDeployment: false } - resource AZURE_OPENAI_VISION_API_KEY 'secrets' = { - name: 'AZURE-OPENAI-VISION-API-KEY' - properties: { - contentType: 'text/plain' - value: azureopenaivision.listKeys().key1 - } - } - resource AZURE_OPENAI_API_KEY 'secrets' = { name: 'AZURE-OPENAI-API-KEY' properties: { @@ -516,35 +484,6 @@ resource azureopenaidalle 'Microsoft.CognitiveServices/accounts@2023-05-01' = { -resource azureopenaivision 'Microsoft.CognitiveServices/accounts@2023-05-01' = { - name: openai_gpt_vision_name - location: gptvisionLocation - tags: tags - kind: 'OpenAI' - properties: { - customSubDomainName: openai_gpt_vision_name - publicNetworkAccess: 'Enabled' - } - sku: { - name: openAiSkuName - } - - resource dalleDeployment 'deployments' = { - name: gptvisionDeploymentName - properties: { - model: { - format: 'OpenAI' - name: gptvisionModelName - version:gptvisionModelVersion - } - } - sku: { - name: 'Standard' - capacity: gptvisionDeploymentCapacity - } - } -} - resource speechService 'Microsoft.CognitiveServices/accounts@2023-05-01' = { name: speech_service_name location: location diff --git a/src/.env.example b/src/.env.example index 915f905e7..2ebc01512 100644 --- a/src/.env.example +++ b/src/.env.example @@ -18,12 +18,6 @@ AZURE_OPENAI_DALLE_API_INSTANCE_NAME=azurechat-dall-e AZURE_OPENAI_DALLE_API_DEPLOYMENT_NAME=dall-e AZURE_OPENAI_DALLE_API_VERSION=2023-12-01-preview -# GPT4 V OpenaAI details -AZURE_OPENAI_VISION_API_KEY=333333 -AZURE_OPENAI_VISION_API_INSTANCE_NAME=azurechat-vision -AZURE_OPENAI_VISION_API_DEPLOYMENT_NAME=gpt-4-vision -AZURE_OPENAI_VISION_API_VERSION=2023-12-01-preview - # Update your admin email addresses - comma separated ADMIN_EMAIL_ADDRESS=you@email.com,you2@email.com