in src/common/details/ai_python_generative_sdk/AiSdkConsoleGui_PickOrCreate_AiHubProject.cs [254:344]
public static void GetOrCreateAiHubProjectConnections(ICommandValues values, bool create, string subscription, string groupName, string projectName, string openAiEndpoint, string openAiKey, string searchEndpoint, string searchKey)
{
var checkForExistingOpenAiConnection = true;
var createOpenAiConnection = !string.IsNullOrEmpty(openAiEndpoint) && !string.IsNullOrEmpty(openAiKey) && !checkForExistingOpenAiConnection;
var checkForExistingSearchConnection = !create;
var createSearchConnection = !string.IsNullOrEmpty(searchEndpoint) && !string.IsNullOrEmpty(searchKey) && !checkForExistingSearchConnection;
var connectionsOk = createOpenAiConnection || createSearchConnection || checkForExistingOpenAiConnection || checkForExistingSearchConnection;
if (connectionsOk) ConsoleHelpers.WriteLineWithHighlight($"\n`AZURE AI PROJECT CONNECTIONS`\n");
var connectionCount = 0;
if (createOpenAiConnection || checkForExistingOpenAiConnection)
{
if (connectionCount > 0) Console.WriteLine();
var connectionName = "Default_AzureOpenAI";
Console.WriteLine($"Connection: {connectionName}");
Console.Write(createOpenAiConnection ? "*** CREATING ***" : "*** CHECKING ***");
var connectionType = "azure_open_ai";
var connectionJson = createOpenAiConnection
? PythonSDKWrapper.CreateConnection(values, subscription, groupName, projectName, connectionName, connectionType, null, openAiEndpoint, openAiKey)
: GetConnection(values, subscription, groupName, projectName, connectionName);
var message = createSearchConnection ? "\r*** CREATED *** " : null;
if (checkForExistingOpenAiConnection)
{
var parsed = !string.IsNullOrEmpty(connectionJson) ? JsonDocument.Parse(connectionJson) : null;
var connection = parsed?.GetPropertyElementOrNull("connection");
var target = connection?.GetPropertyStringOrNull("target");
var endpointOk = !string.IsNullOrEmpty(openAiEndpoint);
var targetOk = !string.IsNullOrEmpty(target);
var targetMatch = targetOk && endpointOk &&
(target == openAiEndpoint ||
target.Replace(".openai.azure.com/", ".cognitiveservices.azure.com/") == openAiEndpoint);
message = !targetOk ?
$"\r*** WARNING: {connectionName} no connection found *** "
: !endpointOk
? $"\r*** FOUND: {connectionName} found *** "
: !targetMatch
? $"\r*** WARNING: {connectionName} found but target is {target} *** "
: $"\r*** MATCHED: {connectionName} *** ";
}
Console.WriteLine(message);
connectionCount++;
}
if (createSearchConnection || checkForExistingSearchConnection)
{
if (connectionCount > 0) Console.WriteLine();
var connectionName = "AzureAISearch";
Console.WriteLine($"Connection: {connectionName}");
Console.Write(createSearchConnection ? "*** CREATING ***" : "*** CHECKING ***");
var connectionType = "cognitive_search";
var connectionJson = createSearchConnection
? PythonSDKWrapper.CreateConnection(values, subscription, groupName, projectName, connectionName, connectionType, null, searchEndpoint, searchKey)
: GetConnection(values, subscription, groupName, projectName, connectionName);
var message = createSearchConnection ? "\r*** CREATED *** " : null;
if (checkForExistingSearchConnection)
{
var parsed = !string.IsNullOrEmpty(connectionJson) ? JsonDocument.Parse(connectionJson) : null;
var connection = parsed?.GetPropertyElementOrNull("connection");
var target = connection?.GetPropertyStringOrNull("target");
var targetOk = !string.IsNullOrEmpty(target);
var endpointOk = !string.IsNullOrEmpty(searchEndpoint);
var targetMatch = targetOk && endpointOk && target == searchEndpoint;
message = !targetOk
? $"\r*** WARNING: {connectionName} no connection found *** "
: !endpointOk
? $"\r*** FOUND: {connectionName} found *** "
: !targetMatch
? $"\r*** WARNING: {connectionName} found but target is {target} *** "
: $"\r*** MATCHED: {connectionName} *** ";
}
Console.WriteLine(message);
connectionCount++;
}
}