Cvičení – instalace sady .NET SDK pro Azure OpenAI a vytvoření první aplikace

Dokončeno

Teď, když už rozumíme dokončování textu a chatu, vytvoříme základní aplikaci, která je používá.

Pracujete pro organizaci, která pomáhá pěším výletníkům prozkoumávat venku doporučením tras. Zvažujete přidání konverzační umělé inteligence do funkce doporučení a chcete vytvořit prototyp.

Rozhodnete se použít rozhraní API pro dokončování chatu, které poskytuje model GPT-35-Turbo.

Vytvoření prostředku Azure OpenAI

Prvním krokem je vytvoření prostředku Azure OpenAI a nasazení modelu. Pojďme v tomto cvičení použít model GPT-3 Turbo. Jak je uvedeno v dokumentaci, GPT-3.5 Turbo používá rozhraní API pro dokončování chatu a je skvělé pro náš případ použití.

Požadavky

  • Předplatné Azure

  • Přístup udělený službě Azure OpenAI v požadovaném předplatném

    V současné době je přístup k této službě udělován pouze aplikací. Pokud chcete získat přístup k Azure OpenAI, vyplňte formulář na adrese https://aka.ms/oai/access.

  • Nainstalované rozhraní Azure CLI

Vytvoření prostředku a nasazení modelu

Vytvoření prostředku a nasazení modelu je proces s více kroky. Azure CLI můžete použít, protože může být rychlejší než použití webu Azure Portal. Mějte ale na paměti, že pokud chcete, můžete použít Azure Portal.

  1. az login Pokud jste to ještě neudělali, spusťte příkaz pro přihlášení.

  2. Když vytvoříte nový prostředek Azure, můžete vytvořit novou skupinu prostředků nebo použít existující. Tento příkaz ukazuje, jak vytvořit novou skupinu prostředků. Použijte název HikingConversations-RG , ale můžete ho nahradit podle svého výběru nebo použít název existující skupiny.

    az group create \
    --name HikingConversations-RG \
    --location eastus
    
    az group create `
    --name HikingConversations-RG `
    --location eastus
    
  3. Spuštěním následujícího příkazu vytvořte prostředek OpenAI ve skupině prostředků HikingConversations-RG . Pojmenujte prostředek OpenAI HikingConversationsAI.

    az cognitiveservices account create \
    -n HikingConversationsAI \
    -g HikingConversations-RG \
    -l eastus \
    --kind OpenAI \
    --sku s0
    
    az cognitiveservices account create `
    -n HikingConversationsAI `
    -g HikingConversations-RG `
    -l eastus `
    --kind OpenAI `
    --sku s0
    
  4. Dále chceme nasadit model GPT-35-Turbo do prostředku OpenAI, který jsme vytvořili. Zavolejte nasazení modelu HikingRecommendationTurbo. Všimněte si, že jako název skupiny prostředků používáme hikingConversations-RG , hikingConversationsAI jako název prostředku OpenAI , pokud jste použili jiné hodnoty, ujistěte se, že tyto hodnoty nahradíte.

    az cognitiveservices account deployment create \
    -g HikingConversations-RG \
    -n HikingConversationsAI \
    --deployment-name HikingRecommendationTurbo \
    --model-name gpt-35-turbo \
    --model-version "0301" \
    --model-format OpenAI \
    --scale-settings-scale-type "Standard"
    
    az cognitiveservices account deployment create `
    -g HikingConversations-RG `
    -n HikingConversationsAI `
    --deployment-name HikingRecommendationTurbo `
    --model-name gpt-35-turbo `
    --model-version "0301" `
    --model-format OpenAI `
    --scale-settings-scale-type "Standard"
    
  5. Po vytvoření prostředku a modelu potřebujeme získat základní adresu URL a přístupové klíče, aby sada .NET SDK měla přístup k prostředku Azure OpenAI. Pomocí těchto příkazů získejte koncový bod a primární klíče rozhraní API a poznamenejte si je pro pozdější použití:

    Koncový bod

    az cognitiveservices account show \
    -g HikingConversations-RG \
    -n HikingConversationsAI \
    --query "properties.endpoint"
    
    az cognitiveservices account show `
    -g HikingConversations-RG `
    -n HikingConversationsAI `
    --query "properties.endpoint"
    

    Primární klíč rozhraní API

    az cognitiveservices account keys list \
    -g HikingConversations-RG \
    -n HikingConversationsAI \
    --query "key1"
    
    az cognitiveservices account keys list `
    -g HikingConversations-RG `
    -n HikingConversationsAI `
    --query "key1"
    

Vytvoření konzolové aplikace a přidání sady OpenAI SDK

Dále chceme vytvořit holou konzolovou aplikaci .NET a přidat sadu Azure OpenAI SDK.

  1. Spuštěním následujícího příkazu vytvořte novou aplikaci .NET s názvem HikingConversationsAI.

    dotnet new console -n HikingConversationsAI
    
  2. Přejděte do nově vytvořeného adresáře HikingConversationsAI .

    cd HikingConversationsAI
    
  3. Pak přidejte sadu Azure Open AI SDK.

    dotnet add package Azure.AI.OpenAI --prerelease
    
  4. Otevřete projekt v editoru VS Code nebo v sadě Visual Studio.

  5. V souboru Program.cs odstraňte veškerý existující kód.

  6. Přidejte using Azure.AI.OpenAI; na začátek Program.cs.

  7. Přidejte using Azure; na začátek Program.cs.

  8. Přidejte do tří proměnných na úrovni třídy, které obsahují odkazy na koncový bod prostředku Azure OpenAI, primární klíč rozhraní API a název modelu, který jste nasadili.

    string openAIEndpoint = "<YOUR ENDPOINT URL VALUE>";
    string openAIAPIKey = "<YOUR PRIMARY API KEY VALUE>";
    string openAIDeploymentName = "HikingRecommendationTurbo";
    

    V předchozích krocích jsme nasazení HikingRecommendationTurbo pojmenovali, pokud jste použili jinou hodnotu, ujistěte se, že místo toho použijete jinou hodnotu.

  9. Nakonec vytvořte instanci třídy potřebné ke komunikaci s prostředkem Azure OpenAI.

    var endpoint = new Uri(openAIEndpoint);
    var credentials = new AzureKeyCredential(openAIAPIKey);
    var openAIClient = new AzureOpenAIClient(endpoint, credentials);
    

Vytvoření systémové výzvy

Pojďme vytvořit výzvu k počáteční roli systému, která poskytne počáteční pokyny k modelu.

  1. Nejprve vytvořte výzvu, která dává modelu pokyn, jak se má během konverzace chovat, když doporučíte pěší turistiku.

    var systemPrompt = 
    """
    You are a hiking enthusiast who helps people discover fun hikes. You are upbeat and friendly. 
    You ask people what type of hikes they like to take and then suggest some.
    """;
    
  2. Dále vytvořte zprávu, List<ChatMessage> která bude obsahovat všechny zprávy, které budou odeslány do a z modelu.

    List<ChatMessage> chatHistory = new();
    
  3. Pak vytvořte nový SystemChatMessage objekt a přidejte ho chatHistory do seznamu. ChatMessage Nastavíme, aby tato role pochází z role Systému.

    SystemChatMessage systemMessage = ChatMessage.CreateSystemMessage(systemPrompt);
    
    chatHistory.Add(systemMessage);
    

Zahájení konverzace

V dalším kroku odešleme první zprávu do modelu a zahájíme konverzaci.

  1. Vytvořte výzvu pro uživatele a přidejte ji do chatHistory zprávy uživatele.

    string userGreeting = """
    Hi there hiking recommendation bot! 
    Can't wait to hear what you have in store for me!
    """;
    
    UserChatMessage userGreetingMessage = ChatMessage.CreateUserMessage(userGreeting);
    chatHistory.Add(userGreetingMessage);
    
    Console.WriteLine($"User >>> {userGreeting}");
    
  2. Teď budete muset získat odkaz na ChatClient objekt. Tento objekt je zodpovědný za usnadnění chatových konverzací s modelem. V takovém případě budete muset informovat objekt klienta Azure OpenAI, který model jste nasadili, který chcete použít.

    var chatClient = openAIClient.GetChatClient(openAIDeploymentName);
    
  3. Dále zavolejte CompleteChatAsync funkci ChatClient třídy, která chatHistorypředává .

    var response = await chatClient.CompleteChatAsync(chatHistory);
    
  4. Nakonec si přečtěte hodnotu, kterou model vrátil.

    Console.WriteLine($"AI >>> {response.Value.Content.Last().Text}");
    
  5. Pojďme se podívat, co zatím máme, můžete aplikaci spustit tak, že vstoupíte dotnet run do terminálu.

  6. Experimentujte změnou userGreetingMessagehodnoty, abyste viděli, jak model může reagovat odlišně.

V jednom příkladu jsme obdrželi následující:

Hello! Great to hear from you. What type of hikes are you interested in? Do you enjoy easy scenic walks, challenging trails, or something in between? Do you prefer hikes with waterfalls, mountain views, or unique geological formations?

Můžete obdržet něco jiného, protože model je nedeterministický nebo může vytvořit jiný výstup i se stejným vstupem.

Pokračování v konverzaci

Pokračujme tak, že odpovíme na konverzaci a pak vypíšeme odpověď.

  1. Ujistěte se, že zachováváme kontext konverzace, takže přidejte odpověď, která se vrátila přímo do chatHistory seznamu.

    var assistantMessage = ChatMessage.CreateAssistantMessage(response.Value.Content.Last().Text);
    
    chatHistory.Add(assistantMessage); 
    
  2. Dále vytvořte výzvu jiného uživatele a odešlete ho do modelu.

    var hikeRequest = 
    """
    I would like a strenuous hike near where I live that ends with
    a view that is amazing.
    """;
    
    Console.WriteLine($"User >>> {hikeRequest}");
    
    UserChatMessage hikeMessage = ChatMessage.CreateUserMessage(hikeRequest);
    
    chatHistory.Add(hikeMessage);
    
    response = await chatClient.CompleteChatAsync(chatHistory); 
    
    Console.WriteLine($"AI >>> {response.Value.Content.Last().Text}");
    
  3. Můžete experimentovat tak, že proměnnou změníte hikeRequest tak, aby požadovala různé typy pěších tras. V jednom příkladu jsme obdrželi:

    Great choice! If you're up for a challenge, I recommend checking out the hike to Poo Poo Point in Issaquah, Washington. The hike is 7.2 miles roundtrip, with an elevation gain of 1,858 feet, so it's definitely a workout. But the stunning views of Mount Rainier and the Cascade Mountains make it all worthwhile. Plus, you'll get to see paragliders taking off from Poo Poo Point. It's a popular hike, so I recommend going early to avoid crowds. Let me know if you need more information!
    

Shrnutí

Teď můžeme použít sadu Azure OpenAI SDK spolu s modelem gpt-35-turbo k vytváření konverzací, které pomáhají poskytovat doporučení pro pěší turistiku. V dalším kroku se podíváme, jak můžeme vylepšit výzvy, které odesíláme do modelu.