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;
}