Sdílet prostřednictvím


Získání přehledu o datech z chatovací aplikace .NET AI

Začněte s vývojem umělé inteligence pomocí konzolové aplikace .NET 8 pro připojení k modelu OpenAI gpt-3.5-turbo . K modelu AI se připojíte pomocí sémantického jádra k analýze dat pěší turistiky a poskytování přehledů.

Požadavky

  • .NET 8.0 SDK – Nainstalujte sadu .NET 8.0 SDK.
  • Klíč rozhraní API z OpenAI , abyste mohli tuto ukázku spustit.
  • Ve Windows se vyžaduje PowerShell v7+ . Pokud chcete ověřit svou verzi, spusťte pwsh v terminálu. Měla by vrátit aktuální verzi. Pokud vrátí chybu, spusťte následující příkaz: dotnet tool update --global PowerShell.

Začínáme s vývojem umělé inteligence pomocí konzolové aplikace .NET 8 pro připojení k modelu OpenAI gpt-3.5-turbo nasazeného v Azure. K modelu AI se připojíte pomocí sémantického jádra k analýze dat pěší turistiky a poskytování přehledů.

Požadavky

Získání ukázkového projektu

Naklonujte úložiště GitHub, které obsahuje ukázkové aplikace pro všechny rychlé starty:

git clone https://github.com/dotnet/ai-samples.git

Vytvoření služby Azure OpenAI

Ukázkové úložiště GitHubu je strukturované jako šablona Azure Developer CLI (azd), která azd umožňuje zřídit službu Azure OpenAI a model za vás.

  1. Z terminálu nebo příkazového řádku přejděte do adresáře src\quickstarts\azure-openai ukázkového úložiště.

  2. Spuštěním azd up příkazu zřiďte prostředky Azure OpenAI. Vytvoření služby Azure OpenAI a nasazení modelu může trvat několik minut.

    azd up
    

    azd také nakonfiguruje požadované tajné kódy uživatelů pro ukázkovou aplikaci, jako je přístupový klíč OpenAI.

    Poznámka:

    Pokud během azd up nasazení dojde k chybě, přejděte do části pro řešení potíží .

Vyzkoušejte ukázku chatu pro pěší turistiku

  1. Z terminálu nebo příkazového řádku přejděte do openai\03-ChattingAboutMyHikes adresáře.

  2. Spuštěním následujících příkazů nakonfigurujte klíč rozhraní API OpenAI jako tajný klíč pro ukázkovou aplikaci:

    dotnet user-secrets init
    dotnet user-secrets set OpenAIKey <your-openai-key>
    
  3. dotnet run Spuštění aplikace pomocí příkazu:

    dotnet run
    
  1. Z terminálu nebo příkazového řádku přejděte do azure-openai\02-HikerAI adresáře.

  2. dotnet run Spuštění aplikace pomocí příkazu:

    dotnet run
    

    Tip

    Pokud se zobrazí chybová zpráva, možná se nasazení prostředků Azure OpenAI nedokončily. Počkejte několik minut a zkuste to znovu.

Prozkoumání kódu

Aplikace používá Microsoft.SemanticKernel balíček k odesílání a přijímání požadavků do služby OpenAI.

Celá aplikace je obsažena v souboru Program.cs . Prvních několik řádků konfiguračních hodnot sady kódu a získá klíč OpenAI, který byl dříve nastaven pomocí dotnet user-secrets příkazu.

var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string model = "gpt-3.5-turbo";
string key = config["OpenAIKey"];

Služba OpenAIChatCompletionService usnadňuje požadavky a odpovědi.

// Create the OpenAI Chat Completion Service
OpenAIChatCompletionService service = new(model, key);

OpenAIChatCompletionService Po vytvoření klienta aplikace přečte obsah souboru hikes.md a použije ho k poskytnutí dalšího kontextu modelu přidáním systémové výzvy. To ovlivňuje chování modelu a vygenerované dokončování během konverzace.

Aplikace používá Microsoft.SemanticKernel balíček k odesílání a přijímání požadavků do služby Azure OpenAI nasazené v Azure.

Celá aplikace je obsažena v souboru Program.cs . Prvních několik řádků kódu načte tajné kódy a konfigurační hodnoty, které byly nastaveny ve dotnet user-secrets vámi během zřizování aplikace.

// == Retrieve the local secrets saved during the Azure deployment ==========
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string endpoint = config["AZURE_OPENAI_ENDPOINT"];
string deployment = config["AZURE_OPENAI_GPT_NAME"];
string key = config["AZURE_OPENAI_KEY"];

Služba AzureOpenAIChatCompletionService usnadňuje požadavky a odpovědi.

// == Create the Azure OpenAI Chat Completion Service  ==========
AzureOpenAIChatCompletionService service = new(deployment, endpoint, key);

OpenAIChatCompletionService Po vytvoření klienta aplikace přečte obsah souboru hikes.md a použije ho k poskytnutí dalšího kontextu modelu přidáním systémové výzvy. To ovlivňuje chování modelu a vygenerované dokončování během konverzace.

// Provide context for the AI model
ChatHistory chatHistory = new($"""
    You are upbeat and friendly. You introduce yourself when first saying hello. 
    Provide a short answer only based on the user hiking records below:  

    {File.ReadAllText("hikes.md")}
    """);
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");

Následující kód přidá uživateli výzvu k modelu pomocí AddUserMessage funkce. Funkce GetChatMessageContentAsync dává modelu pokyn, aby vygeneroval odpověď založenou na systémovém a uživatelském výzvě.

// Start the conversation
chatHistory.AddUserMessage("Hi!");
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");

chatHistory.Add(
    await service.GetChatMessageContentAsync(
        chatHistory,
        new OpenAIPromptExecutionSettings()
        { 
            MaxTokens = 400 
        }));
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");

Aplikace přidá odpověď z modelu do chatHistory údržby historie chatu nebo kontextu.

// Continue the conversation with a question.
chatHistory.AddUserMessage(
    "I would like to know the ratio of the hikes I've done in Canada compared to other countries.");

Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");

chatHistory.Add(await service.GetChatMessageContentAsync(
    chatHistory,
    new OpenAIPromptExecutionSettings()
    { 
        MaxTokens = 400 
    }));

Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");

Přizpůsobte si systémové nebo uživatelské výzvy k zadání různých otázek a kontextu:

  • Kolikrát jsem se vycházala, když pršelo?
  • Kolikrát jsem se v roce 2021 vydat?

Model vygeneruje relevantní odpověď na jednotlivé výzvy na základě vašich vstupů.

Vyčištění prostředků

Pokud už ukázkovou aplikaci nebo prostředky nepotřebujete, odeberte odpovídající nasazení a všechny prostředky.

azd down

Odstraňování potíží

Ve Windows se můžou po spuštění azd upzobrazit následující chybové zprávy:

postprovision.ps1 není digitálně podepsán. Skript se v systému nespustí.

Skript postprovision.ps1 se spustí a nastaví tajné kódy uživatele .NET používané v aplikaci. Pokud se chcete této chybě vyhnout, spusťte následující příkaz PowerShellu:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

Pak příkaz spusťte azd up znovu.

Další možná chyba:

"pwsh" není rozpoznán jako interní nebo externí příkaz, operovatelný program nebo dávkový soubor. UPOZORNĚNÍ: "postprovision" hook selhal s ukončovacím kódem: '1', Cesta: '.\infra\post-script\postprovision.ps1'. : ukončovací kód: 1 Provádění bude pokračovat, protože ContinueOnError byl nastaven na hodnotu true.

Skript postprovision.ps1 se spustí a nastaví tajné kódy uživatele .NET používané v aplikaci. Pokud se chcete této chybě vyhnout, spusťte skript ručně pomocí následujícího příkazu PowerShellu:

.\infra\post-script\postprovision.ps1

Aplikace .NET AI teď mají nakonfigurované tajné kódy uživatelů a dají se testovat.

Další kroky