public static async Task FindCognitiveServicesResourceDeployment()

in src/common/details/azcli/AzCliConsoleGui_CognitiveServicesResourceDeploymentPicker.cs [39:104]


        public static async Task<AzCli.CognitiveServicesDeploymentInfo?> FindCognitiveServicesResourceDeployment(bool interactive, bool allowSkipDeployment, string deploymentExtra, string subscriptionId, string groupName, string resourceName, string deploymentFilter, string allowCreateDeploymentOption)
        {
            var allowCreateDeployment = !string.IsNullOrEmpty(allowCreateDeploymentOption);

            var listDeploymentsFunc = async () => await AzCli.ListCognitiveServicesDeployments(subscriptionId, groupName, resourceName, "OpenAI");
            var response = await LoginHelpers.GetResponseOnLogin<AzCli.CognitiveServicesDeploymentInfo[]>(interactive, "deployment", listDeploymentsFunc);

            var lookForChatCompletionCapable = deploymentExtra.ToLower() == "chat" || deploymentExtra.ToLower() == "evaluation";
            var lookForEmbeddingCapable = deploymentExtra.ToLower() == "embeddings";
            var lookForRealtimeCapable = deploymentExtra.ToLower() == "realtime";

            var deployments = response.Payload
                .Where(x => MatchDeploymentFilter(x, deploymentFilter))
                .Where(x => !lookForChatCompletionCapable || x.ChatCompletionCapable)
                .Where(x => !lookForEmbeddingCapable || x.EmbeddingsCapable)
                .Where(x => !lookForRealtimeCapable || x.RealtimeCapable)
                .OrderBy(x => x.Name)
                .ToList();

            var exactMatch = deploymentFilter != null && deployments.Count(x => ExactMatchDeployment(x, deploymentFilter)) == 1;
            if (exactMatch) deployments = deployments.Where(x => ExactMatchDeployment(x, deploymentFilter)).ToList();

            if (deployments.Count() == 0)
            {
                if (!allowCreateDeployment)
                {
                    ConsoleHelpers.WriteLineError($"*** No deployments found ***");
                    return null;
                }
                else if (!interactive)
                {
                    Console.WriteLine(allowCreateDeploymentOption);
                    return new AzCli.CognitiveServicesDeploymentInfo();
                }
            }
            else if (deployments.Count() == 1 && (!interactive || exactMatch))
            {
                var deployment = deployments.First();
                DisplayName(deployment);
                return deployment;
            }
            else if (!interactive)
            {
                ConsoleHelpers.WriteLineError("*** More than 1 deployment found ***");
                Console.WriteLine();
                DisplayDeployments(deployments, "  ");
                return null;
            }

            var scanFor = deploymentExtra.ToLower() switch {
                "chat" => "gpt",
                "embeddings" => "embedding",
                "evaluation" => "gpt",
                _ => deploymentExtra.ToLower()
            };

            var choices = deployments.ToArray();
            var select = Array.FindIndex(choices, x => x.Name.Contains(scanFor));

            if (allowCreateDeployment && select >= 0) select++;
            select = Math.Max(0, select);

            return interactive
                ? ListBoxPickDeployment(choices, allowCreateDeploymentOption, allowSkipDeployment, select)
                : null;
        }