Dela via


Skapa en AI-chattapp med .NET

I den här snabbstarten lär du dig hur du skapar en konversationsbaserad .NET-konsolchattapp med hjälp av en OpenAI- eller Azure OpenAI-modell. Appen använder Microsoft.Extensions.AI-biblioteket så att du kan skriva kod med AI-abstraktioner i stället för ett specifikt SDK. MED AI-abstraktioner kan du ändra den underliggande AI-modellen med minimala kodändringar.

Förutsättningar

Förutsättningar

Anmärkning

Du kan också använda semantisk kernel för att utföra uppgifterna i den här artikeln. Semantisk kernel är en enkel SDK med öppen källkod som gör att du kan skapa AI-agenter och integrera de senaste AI-modellerna i dina .NET-appar.

Skapa appen

Slutför följande steg för att skapa en .NET-konsolapp för att ansluta till en AI-modell.

  1. I en tom katalog på datorn använder du kommandot dotnet new för att skapa en ny konsolapp:

    dotnet new console -o ChatAppAI
    
  2. Ändra katalog till appmappen:

    cd ChatAppAI
    
  3. Installera de paket som krävs:

    dotnet add package Azure.Identity
    dotnet add package Azure.AI.OpenAI
    dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
    dotnet add package OpenAI
    dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease
    dotnet add package Microsoft.Extensions.Configuration
    dotnet add package Microsoft.Extensions.Configuration.UserSecrets
    
  4. Öppna appen i Visual Studio Code (eller valfri redigerare).

    code .
    

Skapa AI-tjänsten

  1. Om du vill etablera en Azure OpenAI-tjänst och modell slutför du stegen i artikeln Skapa och distribuera en Azure OpenAI-tjänstresurs .

  2. Från en terminal eller kommandotolk navigerar du till roten av din projektkatalog.

  3. Kör följande kommandon för att konfigurera Azure OpenAI-slutpunkten och modellnamnet för exempelappen:

    dotnet user-secrets init
    dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint>
    dotnet user-secrets set AZURE_OPENAI_GPT_NAME <your-Azure-OpenAI-model-name>
    

Konfigurera appen

  1. Navigera till roten av ditt .NET-projekt från en terminal eller kommandotolk.

  2. Kör följande kommandon för att konfigurera din OpenAI API-nyckel som en hemlighet för exempelappen:

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-OpenAI-key>
    dotnet user-secrets set ModelName <your-OpenAI-model-name>
    

Lägg till appkoden

Den här appen använder Microsoft.Extensions.AI paketet för att skicka och ta emot begäranden till AI-modellen. Appen ger användarna information om vandringsleder.

  1. Program.cs I filen lägger du till följande kod för att ansluta och autentisera till AI-modellen.

    IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string endpoint = config["AZURE_OPENAI_ENDPOINT"];
    string deployment = config["AZURE_OPENAI_GPT_NAME"];
    
    IChatClient chatClient =
        new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
        .GetChatClient(deployment)
        .AsIChatClient();
    

    Anmärkning

    DefaultAzureCredential söker efter autentiseringsuppgifter från ditt lokala verktyg. Om du inte använder azd-mallen för att etablera Azure OpenAI-resursen måste du tilldela Azure AI Developer rollen till det konto som du använde för att logga in på Visual Studio eller Azure CLI. Mer information finns i Autentisera till Azure AI-tjänster med .NET.

    var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
    string model = config["ModelName"];
    string key = config["OpenAIKey"];
    
    // Create the IChatClient
    IChatClient chatClient =
        new OpenAIClient(key).GetChatClient(model).AsIChatClient();
    
  2. Skapa en systemprompt för att tillhandahålla AI-modellen med inledande rollkontext och instruktioner om vandringsrekommendationer:

    // Start the conversation with context for the AI model
    List<ChatMessage> chatHistory =
        [
            new ChatMessage(ChatRole.System, """
                You are a friendly hiking enthusiast who helps people discover fun hikes in their area.
                You introduce yourself when first saying hello.
                When helping people out, you always ask them for this information
                to inform the hiking recommendation you provide:
    
                1. The location where they would like to hike
                2. What hiking intensity they are looking for
    
                You will then provide three suggestions for nearby hikes that vary in length
                after you get that information. You will also share an interesting fact about
                the local nature on the hikes when making a recommendation. At the end of your
                response, ask if there is anything else you can help with.
            """)
        ];
    
  3. Skapa en konversationsloop som accepterar en indataprompt från användaren, skickar uppmaningen till modellen och skriver ut svarsslut:

    // Loop to get user input and stream AI response
    while (true)
    {
        // Get user prompt and add to chat history
        Console.WriteLine("Your prompt:");
        string? userPrompt = Console.ReadLine();
        chatHistory.Add(new ChatMessage(ChatRole.User, userPrompt));
    
        // Stream the AI response and add to chat history
        Console.WriteLine("AI Response:");
        string response = "";
        await foreach (ChatResponseUpdate item in
            chatClient.GetStreamingResponseAsync(chatHistory))
        {
            Console.Write(item.Text);
            response += item.Text;
        }
        chatHistory.Add(new ChatMessage(ChatRole.Assistant, response));
        Console.WriteLine();
    }
    
  4. Använd kommandot dotnet run för att köra appen:

    dotnet run
    

    Appen skriver ut svar om slutförande från AI-modellen. Skicka ytterligare uppföljningsprompter och ställ andra frågor för att experimentera med AI-chattfunktionen.

Rensa resurser

Om du inte längre behöver dem tar du bort Azure OpenAI-resursen och GPT-4-modelldistributionen.

  1. I Azure-portalengår du till Azure OpenAI-resursen.
  2. Välj Azure OpenAI-resursen och välj sedan Ta bort.

Nästa steg