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ťtepwsh
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
- .NET 8 SDK – Nainstalujte sadu .NET 8 SDK.
- Předplatné Azure – Vytvořte si ho zdarma.
- Azure Developer CLI – Nainstalujte nebo aktualizujte Azure Developer CLI.
- Přístup ke službě Azure OpenAI
- Ve Windows se vyžaduje PowerShell
v7+
. Pokud chcete ověřit svou verzi, spusťtepwsh
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
.
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.
Z terminálu nebo příkazového řádku přejděte do adresáře src\quickstarts\azure-openai ukázkového úložiště.
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
Z terminálu nebo příkazového řádku přejděte do
openai\03-ChattingAboutMyHikes
adresáře.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>
dotnet run
Spuštění aplikace pomocí příkazu:dotnet run
Z terminálu nebo příkazového řádku přejděte do
azure-openai\02-HikerAI
adresáře.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 up
zobrazit 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.