Megosztás a következőn keresztül:


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 futtassa pwsh 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 futtassa pwsh 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ó.

  1. Egy terminálból vagy parancssorból keresse meg a mintaadattár src\quickstarts\azure-openai könyvtárát.

  2. 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

  1. Nyissa meg a openai\02-HikerAI könyvtárat egy terminálból vagy parancssorból.

  2. 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>
    
  3. Az alkalmazás futtatásához használja a dotnet run parancsot:

    dotnet run
    
  1. Nyissa meg a azure-openai\02-HikerAI könyvtárat egy terminálból vagy parancssorból.

  2. 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 uputá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.

Következő lépések