Cvičení – připojení k Azure OpenAI

Dokončeno

Třída OpenAiService obsahuje implementaci zástupných procedur služby, která může odesílat výzvy asistentovi AI a parsovat odpovědi.

V tomto cvičení je potřeba splnit několik klíčových požadavků:

  • Import sady .NET SDK pro Azure OpenAI
  • Přidání koncového bodu Azure OpenAI a klíče do nastavení aplikace
  • Úprava třídy služby s různými členy a instancí klienta

Import sady .NET SDK

Balíček Azure.AI.OpenAI na NuGetu poskytuje typovou sadu SDK pro přístup k různým nasazením modelu z koncového bodu vašeho účtu.

  1. Otevřete nový terminál.

  2. Slouží dotnet add package k importu Azure.AI.OpenAI balíčku z NuGetu, který určuje předběžnou verzi 1.0.0-beta.14souboru .

    dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.14
    
  3. Znovu sestavte projekt .NET.

    dotnet build
    
  4. Zavřete terminál.

Přidání nastavení aplikace

V aplikaci .NET je běžné použít zprostředkovatele konfigurace k vložení nových nastavení do vaší aplikace. Pro tuto aplikaci použijte appsettings.Development.json soubor k zadání nejaktuálnějších hodnot pro koncový bod Azure OpenAI a klíč.

  1. V kořenovém adresáři projektu vytvořte nový soubor s názvem appsettings. Development.json.

    Důležité

    V Linuxu se u souborů rozlišují malá a velká písmena. Prostředí .NET pro tento projekt má název Vývoj a název souboru musí odpovídat názvu prostředí, aby fungoval.

  2. V souboru vytvořte nový objekt JSON se zástupnou vlastností pro OpenAi nastavení.

    {
      "OpenAi": {            
      }
    }
    
  3. V rámci OpenAi vlastnosti vytvořte dvě nové vlastnosti pro objekt Endpoint a Key. Použijte nastavení koncového bodu Azure OpenAI a klíče, které jste si poznamenali dříve v tomto projektu.

    {
      "OpenAi": {
        "Endpoint": "<your-azure-openai-endpoint>",
        "Key": "<your-azure-openai-key>"
      }
    }
    

    Za předpokladu, že název účtu Azure OpenAI je nybncrsna76fo-openai a klíč je 4bf98cb194cdf0f9001eae3259a76ed8, nakonfigurujete objekt JSON jako v tomto příkladu.

    {
      "OpenAi": {
        "Endpoint": "https://nybncrsna76fo-openai.openai.azure.com/",
        "Key": "4bf98cb194cdf0f9001eae3259a76ed8"
      }
    }
    

    Poznámka:

    Klíč v tomto příkladu je fiktivní.

  4. Uložte nastavení aplikace. Development.json soubor.

Přidání požadovaných členů a instance klienta

Nakonec implementujte proměnné třídy potřebné k použití klienta Azure OpenAI. V tomto kroku implementujte několik statických výzev a vytvořte novou instanci OpenAIClient třídy.

  1. Otevřete soubor Services/OpenAiService.cs.

  2. Přidejte direktivy using pro obory Azure názvů a Azure.AI.OpenAI obory názvů.

    using Azure;
    using Azure.AI.OpenAI;
    
  3. V rámci OpenAiService třídy přidejte novou proměnnou s názvem _client typu OpenAIClient.

    private readonly OpenAIClient _client;
    
  4. Definujte statický blok textu, který se má odeslat asistentovi AI před každým výzvou s novou proměnnou řetězce s názvem _systemPromptText.

    private readonly string _systemPrompt = @"
        You are an AI assistant that helps people find information.
        Provide concise answers that are polite and professional." + Environment.NewLine;
    
  5. Definujte druhý statický blok textu, který se má odeslat do umělé inteligence, s pokyny, jak shrnout konverzaci s novou řetězcovou proměnnou s názvem _summarizePrompt.

    private readonly string _summarizePrompt = @"
        Summarize this prompt in one or two words to use as a label in a button on a web page.
        Do not use any punctuation." + Environment.NewLine;
    
  6. V konstruktoru třídy přidejte dva další řádky kódu, abyste zkontrolovali, jestli má koncový bod nebo klíč hodnotu null. Používá ArgumentNullException.ThrowIfNullOrEmpty se k předčasnému vyvolání chyby, pokud některé z těchto hodnot mají hodnotu null.

    ArgumentNullException.ThrowIfNullOrEmpty(endpoint);
    ArgumentNullException.ThrowIfNullOrEmpty(key);
    

    Tip

    Když spustíte aplikaci, zobrazí se chyba hned, pokud některé z těchto nastavení nemá platnou hodnotu zadanou prostřednictvím nastavení aplikace. Development.json soubor.

  7. Dále vezměte název modelu, který je parametrem konstruktoru, a uložte ho do _modelName proměnné.

    _modelName = modelName;
    
  8. Nakonec vytvořte novou instanci OpenAIClient třídy pomocí koncového bodu k sestavení Uri a klíče pro sestavení AzureKeyCredential.

    Uri uri = new(endpoint);
    AzureKeyCredential credential = new(key);
    _client = new(
        endpoint: uri,
        keyCredential: credential
    );
    
  9. Uložte soubor Služby/OpenAiService.cs.

Kontrola práce

V tomto okamžiku by měl konstruktor obsahovat dostatečnou logiku pro vytvoření instance klienta. Vzhledem k tomu, že třída ještě s klientem nic nedělá, neexistuje žádný bod ve spuštění webové aplikace, ale při vytváření aplikace existuje hodnota, aby se zajistilo, že váš kód nemá žádné vynechání ani chyby.

  1. Otevřete nový terminál.

  2. Sestavte projekt .NET.

    dotnet build
    
  3. Prohlédněte si výstup sestavení a zkontrolujte, jestli nedošlo k žádným chybám sestavení.

    MSBuild version 17.5.1+f6fdcf537 for .NET
      Determining projects to restore...
      All projects are up-to-date for restore.
      cosmoschatgpt -> /workspaces/cosmosdb-chatgpt/bin/Debug/net8.0/cosmoschatgpt.dll
    
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    
    Time Elapsed 00:00:02.93
    
  4. Zavřete terminál.