Vytvoření chatovací aplikace AI pomocí .NET

Začněte používat OpenAI a sémantické jádro vytvořením jednoduché konzolové chatovací aplikace .NET 8. Aplikace se spustí místně a použije model OpenAI gpt-3.5-turbo . Pomocí těchto kroků získáte přístup k OpenAI a naučíte se používat sémantické jádro.

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ěte používat OpenAI a sémantické jádro vytvořením jednoduché konzolové chatovací aplikace .NET 8. Aplikace se spustí místně a připojí se k modelu OpenAI gpt-35-turbo nasazeného do Azure OpenAI. Pomocí těchto kroků zřiďte Azure OpenAI a zjistěte, jak používat sémantické jádro.

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 HikerAI

  1. Z terminálu nebo příkazového řádku přejděte do openai\02-HikerAI 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.

Kód aplikace je obsažený v souboru Program.cs . Prvních několik řádků konfiguračních hodnot sady kódu a získání klíče 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);

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

Přidejte systémovou výzvu k poskytnutí dalšího kontextu modelu, který ovlivňuje chování modelu a vygenerované dokončení během konverzace.

// Start the conversation with context for the AI model
ChatHistory chatHistory = new("""
    You are a hiking enthusiast who helps people discover fun hikes in their area. 
    You are upbeat and friendly. 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. Where they are located
    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.
    """);

Pomocí funkce přidejte do historie chatu AddUserMessage zprávu uživatele. GetChatMessageContentAsync Pomocí funkce dejte modelu pokyn, aby vygeneroval odpověď na základě systémové výzvy a požadavku uživatele.


// Add user message to chat history
chatHistory.AddUserMessage("Hi! Apparently you can help me find a hike that I will like?");

// Print User Message to console
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");

// Get response
var response = await service.GetChatMessageContentAsync(
    chatHistory, new OpenAIPromptExecutionSettings() { MaxTokens = 400 });

Přidejte odpověď z režimu, abyste zachovali historii chatu.

// Add response to chat history
chatHistory.Add(response);

// Print Response to console
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");

Přizpůsobte si výzvu systému a uživatelskou zprávu, abyste viděli, jak model reaguje, aby vám pomohl najít trasu, která se vám bude líbit.

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

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

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