AI-csevegőalkalmazás létrehozása a .NET-tel
Az OpenAI és a Szemantic Kernel használatának első lépései egy egyszerű .NET 8-konzolos csevegőalkalmazás létrehozásával. Az alkalmazás helyileg fog futni, és az OpenAI-modellt gpt-3.5-turbo
használja. Az alábbi lépéseket követve hozzáférhet az OpenAI-hoz, és megtudhatja, hogyan használhatja a Szemantic Kernelt.
Előfeltételek
- .NET 8.0 SDK – Telepítse a .NET 8.0 SDK-t.
- Egy API-kulcs az OpenAI-ból , hogy futtathassa ezt a mintát.
- Windows rendszeren a PowerShellre
v7+
van szükség. A verzió ellenőrzéséhez futtassapwsh
a terminálban. Az aktuális verziót kell visszaadnia. Ha hibát ad vissza, hajtsa végre a következő parancsot:dotnet tool update --global PowerShell
.
Az OpenAI és a Szemantic Kernel használatának első lépései egy egyszerű .NET 8-konzolos csevegőalkalmazás létrehozásával. Az alkalmazás helyileg fog futni, és csatlakozik az Azure OpenAI-ban üzembe helyezett OpenAI-modellhez gpt-35-turbo
. Kövesse ezeket a lépéseket az Azure OpenAI kiépítéséhez, és ismerje meg a Szemantic Kernel használatát.
Előfeltételek
- .NET 8 SDK – Telepítse a .NET 8 SDK-t.
- Azure-előfizetés – Hozzon létre egyet ingyenesen.
- Azure Developer CLI – Az Azure Developer CLI telepítése vagy frissítése.
- Hozzáférés az Azure OpenAI szolgáltatáshoz.
- Windows rendszeren a PowerShellre
v7+
van szükség. A verzió ellenőrzéséhez futtassapwsh
a terminálban. Az aktuális verziót kell visszaadnia. Ha hibát ad vissza, hajtsa végre a következő parancsot:dotnet tool update --global PowerShell
.
A mintaprojekt lekérése
Klónozza a GitHub-adattárat, amely az összes rövid útmutatóhoz tartalmazza a mintaalkalmazásokat:
git clone https://github.com/dotnet/ai-samples.git
Az Azure OpenAI szolgáltatás létrehozása
A GitHub-mintaadattár Azure Developer CLI-sablonként vanazd
felépítve, amely azd
az Azure OpenAI szolgáltatás és modell kiépítésére használható.
Egy terminálból vagy parancssorból keresse meg a mintaadattár src\quickstarts\azure-openai könyvtárát.
Futtassa a
azd up
parancsot az Azure OpenAI-erőforrások kiépítéséhez. Az Azure OpenAI szolgáltatás létrehozása és a modell üzembe helyezése több percet is igénybe vehet.azd up
azd
Emellett konfigurálja a mintaalkalmazáshoz szükséges felhasználói titkos kulcsokat, például az OpenAI hozzáférési kulcsot.Feljegyzés
Ha az
azd up
üzembe helyezés során hibát tapasztal, keresse fel a hibaelhárítási szakaszt .
Próbálja ki a HikerAI-mintát
Nyissa meg a
openai\02-HikerAI
könyvtárat egy terminálból vagy parancssorból.Futtassa a következő parancsokat az OpenAI API-kulcs titkos kódként való konfigurálásához a mintaalkalmazáshoz:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-openai-key>
Az alkalmazás futtatásához használja a
dotnet run
parancsot:dotnet run
Nyissa meg a
azure-openai\02-HikerAI
könyvtárat egy terminálból vagy parancssorból.Az alkalmazás futtatásához használja a
dotnet run
parancsot:dotnet run
Tipp.
Ha hibaüzenet jelenik meg, előfordulhat, hogy az Azure OpenAI-erőforrások nem fejezték be az üzembe helyezést. Várjon néhány percet, és próbálkozzon újra.
A kód megismerése
Az alkalmazás a Microsoft.SemanticKernel
csomag használatával küld és fogad kéréseket az OpenAI szolgáltatásnak.
Az alkalmazáskód a Program.cs fájlban található. Az első több sornyi kódkészlet konfigurációs értékei és a parancs használatával korábban beállított OpenAI-kulcs lekérése dotnet user-secrets
.
var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build();
string model = "gpt-3.5-turbo";
string key = config["OpenAIKey"];
A OpenAIChatCompletionService
szolgáltatás megkönnyíti a kéréseket és a válaszokat.
// Create the OpenAI Chat Completion Service
OpenAIChatCompletionService service = new(model, key);
A kód megismerése
Az alkalmazás a Microsoft.SemanticKernel
csomag használatával küld és fogad kéréseket egy Azure-ban üzembe helyezett Azure OpenAI-szolgáltatásnak.
A teljes alkalmazás a Program.cs fájlban található. Az első több sornyi kód lekéri azokat a titkos kulcsokat és konfigurációs értékeket, amelyek az dotnet user-secrets
alkalmazás kiépítése során lettek beállítva az Ön számára.
// 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"];
A AzureOpenAIChatCompletionService
szolgáltatás megkönnyíti a kéréseket és a válaszokat.
// Create the Azure OpenAI Chat Completion Service
AzureOpenAIChatCompletionService service = new(deployment, endpoint, key);
Adjon hozzá egy rendszerkérést, amely több kontextust biztosít a modellnek, ami befolyásolja a modell viselkedését és a beszélgetés során generált befejezéseket.
// 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.
""");
Adjon hozzá egy felhasználói üzenetet a csevegési előzményekhez a AddUserMessage
függvény használatával. GetChatMessageContentAsync
A függvény használatával utasíthatja a modellt, hogy a rendszerkérés és a felhasználói kérés alapján hozzon létre választ.
// 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 });
Adja hozzá a mód válaszát a csevegési előzmények fenntartásához.
// Add response to chat history
chatHistory.Add(response);
// Print Response to console
Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last().Content}");
Testre szabhatja a rendszerüzenetet és a felhasználói üzenetet, hogy lássa, hogyan reagál a modell, hogy segítsen megtalálni a kívánt túrát.
Az erőforrások eltávolítása
Távolítsa el a megfelelő üzembe helyezést és az összes erőforrást, ha már nincs szüksége a mintaalkalmazásra vagy erőforrásokra.
azd down
Hibaelhárítás
Windows rendszeren a következő hibaüzenetek jelenhetnek meg a futtatás azd up
után:
A postprovision.ps1 nincs digitálisan aláírva. A szkript nem lesz végrehajtva a rendszeren
A postprovision.ps1 szkript végrehajtása az alkalmazásban használt .NET-felhasználói titkos kódok beállításához történik. A hiba elkerülése érdekében futtassa a következő PowerShell-parancsot:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Ezután futtassa újra a azd up
parancsot.
Egy másik lehetséges hiba:
A "pwsh" nem ismerhető fel belső vagy külső parancsként, kezelhető programként vagy kötegelt fájlként. FIGYELMEZTETÉS: A "postprovision" horog a következő kilépési kóddal meghiúsult: '1', Elérési út: '.\infra\post-script\postprovision.ps1'. : kilépési kód: 1 A végrehajtás folytatódik, mivel a ContinueOnError értéke igaz.
A postprovision.ps1 szkript végrehajtása az alkalmazásban használt .NET-felhasználói titkos kódok beállításához történik. A hiba elkerülése érdekében futtassa manuálisan a szkriptet a következő PowerShell-paranccsal:
.\infra\post-script\postprovision.ps1
A .NET AI-alkalmazásokban már konfigurálva vannak a felhasználói titkos kódok, és tesztelhetők.