Cvičení – připojení k Azure OpenAI
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.
Otevřete nový terminál.
Slouží
dotnet add package
k importuAzure.AI.OpenAI
balíčku z NuGetu, který určuje předběžnou verzi1.0.0-beta.14
souboru .dotnet add package Azure.AI.OpenAI --version 1.0.0-beta.14
Znovu sestavte projekt .NET.
dotnet build
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íč.
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.
V souboru vytvořte nový objekt JSON se zástupnou vlastností pro
OpenAi
nastavení.{ "OpenAi": { } }
V rámci
OpenAi
vlastnosti vytvořte dvě nové vlastnosti pro objektEndpoint
aKey
. 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í.
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.
Otevřete soubor Services/OpenAiService.cs.
Přidejte direktivy using pro obory
Azure
názvů aAzure.AI.OpenAI
obory názvů.using Azure; using Azure.AI.OpenAI;
V rámci
OpenAiService
třídy přidejte novou proměnnou s názvem_client
typuOpenAIClient
.private readonly OpenAIClient _client;
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;
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;
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.
Dále vezměte název modelu, který je parametrem konstruktoru, a uložte ho do
_modelName
proměnné._modelName = modelName;
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 );
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.
Otevřete nový terminál.
Sestavte projekt .NET.
dotnet build
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
Zavřete terminál.