Monday, December 8, 2025

Develop Azure AI services applications securely by using Azure Key Vault and Run Text Analytics (C#)


//Develop Azure AI services applications securely by using Azure Key Vault
and Run Text Analytics (C#)
//Create an Azure AI services account
//Create an Azure Key Vault

using Azure;
using Azure.AI.TextAnalytics;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using System;
using System.Threading.Tasks;

namespace WhizConsoleApp1
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var keyVaultName = "mykeyvalut85"; //"your-key-vault-name";

            const string keySecretName = "CognitiveServicesKey"; //"Your-Key-Secret-Name";
            const string endpointSecretName = "CognitiveServicesEndpoint"; //"Your-Endpoint-Secret-Name";

            var kvUri = $"https://{keyVaultName}.vault.azure.net/";

            // Try DefaultAzureCredential first and fall back to
                InteractiveBrowserCredential if authentication is unavailable.
            TokenCredential credential = new DefaultAzureCredential();
            SecretClient keyVaultClient = new SecretClient(new Uri(kvUri), credential);

            Console.WriteLine($"Retrieving your secrets from {keyVaultName}.");

            KeyVaultSecret keySecret = null;
            KeyVaultSecret endpointSecret = null;

            try
            {
                var keyResponse = await keyVaultClient.GetSecretAsync(keySecretName);
                keySecret = keyResponse.Value;
                var endpointResponse = await keyVaultClient.GetSecretAsync(endpointSecretName);
                endpointSecret = endpointResponse.Value;
            }
            catch (Azure.Identity.CredentialUnavailableException)
            {
                Console.WriteLine("DefaultAzureCredential could not authenticate
                    with any of the configured credential sources.");
                Console.WriteLine("Falling back to InteractiveBrowserCredential.
                    A browser window will open for authentication.");

                credential = new InteractiveBrowserCredential();
                keyVaultClient = new SecretClient(new Uri(kvUri), credential);

                try
                {
                    var keyResponse =
                        await keyVaultClient.GetSecretAsync(keySecretName);
                    keySecret = keyResponse.Value;
                    var endpointResponse =
                        await keyVaultClient.GetSecretAsync(endpointSecretName);
                    endpointSecret = endpointResponse.Value;
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Failed to retrieve secrets after falling
                        back: {ex.Message}");
                    Console.WriteLine("Recommendations: run 'az login', or set
                        AZURE_CLIENT_ID / AZURE_TENANT_ID / AZURE_CLIENT_SECRET
                        environment variables for a service principal.");
                    Console.ReadLine();
                    return;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Failed to retrieve secrets: {ex.Message}");
                Console.ReadLine();
                return;
            }

            Console.WriteLine($"Your key secret value is: {keySecret.Value}");
            Console.WriteLine($"Your endpoint secret value is: {endpointSecret.Value}");
            Console.WriteLine("Secrets retrieved successfully");

            EntityRecognitionExample(keySecret.Value, endpointSecret.Value);

            Console.ReadLine();
        }

        private static void EntityRecognitionExample(
            string keySecret, string endpointSecret
        )
        {
            var exampleString = "I had a wonderful trip to Seattle last week.";

            AzureKeyCredential azureKeyCredential = new AzureKeyCredential(keySecret);
            Uri endpoint = new Uri(endpointSecret);
            var languageServiceClient =
                new TextAnalyticsClient(endpoint, azureKeyCredential);

            Console.WriteLine("Sending a Named Entity Recognition (NER) request");
            var response = languageServiceClient.RecognizeEntities(exampleString);

            Console.WriteLine("Named Entities:");
            foreach (var entity in response.Value)
            {
                Console.WriteLine($"\tText: {entity.Text},\tCategory:
                    {entity.Category},\tSub-Category: {entity.SubCategory}");
                Console.WriteLine($"\t\tScore: {entity.ConfidenceScore:F2},\tLength:
                    {entity.Length},\tOffset: {entity.Offset}\n");
            }
        }

    }
}


OutPut:



No comments:

Post a Comment

Featured Post

Develop Azure AI services applications securely by using Azure Key Vault and Run Text Analytics (C#)

//Develop Azure AI services applications securely by using Azure Key Vault and Run Text Analytics (C#) //Create an Azure AI services account...

Popular posts