Assign OpenAI model based on Azure OpenAI deployment ID (#8835)

Marshall Bowers created

Following up on #8646, this PR makes it so we select an OpenAI model
based on the deployment ID when using Azure OpenAI.

Release Notes:

- N/A

Change summary

crates/assistant/src/assistant_settings.rs | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)

Detailed changes

crates/assistant/src/assistant_settings.rs 🔗

@@ -111,9 +111,23 @@ impl AssistantSettings {
             AiProviderSettings::OpenAi(settings) => {
                 Ok(settings.default_model.unwrap_or(OpenAiModel::FourTurbo))
             }
-            AiProviderSettings::AzureOpenAi(_settings) => {
-                // TODO: We need to use an Azure OpenAI model here.
-                Ok(OpenAiModel::FourTurbo)
+            AiProviderSettings::AzureOpenAi(settings) => {
+                let deployment_id = settings
+                    .deployment_id
+                    .as_deref()
+                    .ok_or_else(|| anyhow!("no Azure OpenAI deployment ID"))?;
+
+                match deployment_id {
+                    // https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models#gpt-4-and-gpt-4-turbo-preview
+                    "gpt-4" | "gpt-4-32k" => Ok(OpenAiModel::Four),
+                    // https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models#gpt-35
+                    "gpt-35-turbo" | "gpt-35-turbo-16k" | "gpt-35-turbo-instruct" => {
+                        Ok(OpenAiModel::ThreePointFiveTurbo)
+                    }
+                    _ => Err(anyhow!(
+                        "no matching OpenAI model found for deployment ID: '{deployment_id}'"
+                    )),
+                }
             }
         }
     }