Sdílet prostřednictvím


Klientská knihovna Azure OpenAI pro .NET – verze 1.0.0-beta.5

Klientská knihovna Azure OpenAI pro .NET je adaptací rozhraní REST API OpenAI, která poskytuje idiomatické rozhraní a bohatou integraci se zbytkem ekosystému sady Azure SDK. Může se připojit k prostředkům Azure OpenAI nebo ke koncovému bodu odvozování OpenAI mimo Azure, takže je skvělou volbou i pro vývoj mimo Azure OpenAI.

Pomocí klientské knihovny pro Azure OpenAI:

Azure OpenAI je spravovaná služba, která vývojářům umožňuje nasazovat, ladit a generovat obsah z modelů OpenAI na prostředcích Azure.

Zdrojový kód | Balíček (NuGet) | Referenční dokumentace k | rozhraní API Dokumentace k | produktu Vzorky

Začínáme

Požadavky

Pokud chcete použít prostředek Azure OpenAI, musíte mít předplatné Azure a přístup k Azure OpenAI. To vám umožní vytvořit prostředek Azure OpenAI a získat adresu URL připojení i klíče rozhraní API. Další informace najdete v tématu Rychlý start: Začínáme s generováním textu pomocí služby Azure OpenAI.

Pokud chcete použít klientskou knihovnu Azure OpenAI .NET pro připojení k rozhraní OpenAI mimo Azure, budete potřebovat klíč rozhraní API z vývojářského účtu na adrese https://platform.openai.com/.

Instalace balíčku

Nainstalujte klientskou knihovnu pro .NET pomocí NuGetu:

dotnet add package Azure.AI.OpenAI --prerelease

Ověření klienta

Abyste mohli pracovat s Azure OpenAI nebo OpenAI, budete muset vytvořit instanci třídy OpenAIClient . Pokud chcete nakonfigurovat klienta pro použití s Azure OpenAI, zadejte platný identifikátor URI koncového bodu prostředku Azure OpenAI spolu s odpovídajícími přihlašovacími údaji klíče, přihlašovacími údaji tokenu nebo přihlašovacími údaji identity Azure, které mají oprávnění používat prostředek Azure OpenAI. Pokud chcete místo toho nakonfigurovat klienta pro připojení ke službě OpenAI, zadejte klíč rozhraní API z portálu pro vývojáře OpenAI.

OpenAIClient client = useAzureOpenAI
    ? new OpenAIClient(
        new Uri("https://your-azure-openai-resource.com/"),
        new AzureKeyCredential("your-azure-openai-resource-api-key"))
    : new OpenAIClient("your-api-key-from-platform.openai.com");

Vytvoření OpenAIClient s přihlašovacími údaji Azure Active Directory

Ověřování klíče předplatného klienta se používá ve většině příkladů v této příručce Začínáme, ale můžete se také ověřit pomocí Azure Active Directory pomocí knihovny identit Azure. Pokud chcete použít zprostředkovatele DefaultAzureCredential uvedeného níže nebo jiné zprostředkovatele přihlašovacích údajů poskytované se sadou Azure SDK, nainstalujte balíček Azure.Identity:

dotnet add package Azure.Identity
string endpoint = "https://myaccount.openai.azure.com/";
var client = new OpenAIClient(new Uri(endpoint), new DefaultAzureCredential());

Klíčové koncepty

Hlavním konceptem, který je třeba pochopit , je Dokončení. Stručně vysvětleno, dokončování poskytuje své funkce ve formě textové výzvy, která se pomocí konkrétního modelu pokusí shodovat kontext a vzory a poskytne výstupní text. Následující fragment kódu poskytuje hrubý přehled (další podrobnosti najdete v ukázkovém GenerateChatbotResponsesWithToken kódu):

OpenAIClient client = useAzureOpenAI
    ? new OpenAIClient(
        new Uri("https://your-azure-openai-resource.com/"),
        new AzureKeyCredential("your-azure-openai-resource-api-key"))
    : new OpenAIClient("your-api-key-from-platform.openai.com");

Response<Completions> response = await client.GetCompletionsAsync(
    "text-davinci-003", // assumes a matching model deployment or model name
    "Hello, world!");

foreach (Choice choice in response.Value.Choices)
{
    Console.WriteLine(choice.Text);
}

Bezpečnost vlákna

Zaručujeme, že všechny metody instance klienta jsou bezpečné pro přístup z více vláken a nezávislé na sobě (pokyny). Tím se zajistí, že doporučení opakovaného použití instancí klienta bude vždy bezpečné, a to i napříč vlákny.

Další koncepty

Možnosti | klienta Přístup k odpovědi | Dlouhotrvající operace | Zpracování selhání | Diagnostika | Zesměšňovat | Životnost klienta

Příklady

Pomocí ukázek se můžete seznámit s různými rozhraními API.

Vygenerovat odpověď chatbota

Metoda GenerateChatbotResponse se ověří pomocí DefaultAzureCredential a pak vygeneruje textové odpovědi na vstupní výzvy.

string endpoint = "https://myaccount.openai.azure.com/";
var client = new OpenAIClient(new Uri(endpoint), new DefaultAzureCredential());

string deploymentName = "text-davinci-003";
string prompt = "What is Azure OpenAI?";
Console.Write($"Input: {prompt}");

Response<Completions> completionsResponse = client.GetCompletions(deploymentName, prompt);
string completion = completionsResponse.Value.Choices[0].Text;
Console.WriteLine($"Chatbot: {completion}");

Generování více odpovědí chatbota pomocí klíče předplatného

Metoda GenerateMultipleChatbotResponsesWithSubscriptionKey poskytuje příklad generování textových odpovědí na vstupní výzvy pomocí klíče předplatného Azure.

// Replace with your Azure OpenAI key
string key = "YOUR_AZURE_OPENAI_KEY";
string endpoint = "https://myaccount.openai.azure.com/";
var client = new OpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));

List<string> examplePrompts = new(){
    "How are you today?",
    "What is Azure OpenAI?",
    "Why do children love dinosaurs?",
    "Generate a proof of Euler's identity",
    "Describe in single words only the good things that come into your mind about your mother.",
};

string deploymentName = "text-davinci-003";

foreach (string prompt in examplePrompts)
{
    Console.Write($"Input: {prompt}");
    CompletionsOptions completionsOptions = new CompletionsOptions();
    completionsOptions.Prompts.Add(prompt);

    Response<Completions> completionsResponse = client.GetCompletions(deploymentName, completionsOptions);
    string completion = completionsResponse.Value.Choices[0].Text;
    Console.WriteLine($"Chatbot: {completion}");
}

Shrnutí textu s dokončením

Metoda SummarizeText vygeneruje souhrn dané vstupní výzvy.

string endpoint = "https://myaccount.openai.azure.com/";
var client = new OpenAIClient(new Uri(endpoint), new DefaultAzureCredential());

string textToSummarize = @"
    Two independent experiments reported their results this morning at CERN, Europe's high-energy physics laboratory near Geneva in Switzerland. Both show convincing evidence of a new boson particle weighing around 125 gigaelectronvolts, which so far fits predictions of the Higgs previously made by theoretical physicists.

    ""As a layman I would say: 'I think we have it'. Would you agree?"" Rolf-Dieter Heuer, CERN's director-general, asked the packed auditorium. The physicists assembled there burst into applause.
:";

string summarizationPrompt = @$"
    Summarize the following text.

    Text:
    """"""
    {textToSummarize}
    """"""

    Summary:
";

Console.Write($"Input: {summarizationPrompt}");
var completionsOptions = new CompletionsOptions()
{
    Prompts = { summarizationPrompt },
};

string deploymentName = "text-davinci-003";

Response<Completions> completionsResponse = client.GetCompletions(deploymentName, completionsOptions);
string completion = completionsResponse.Value.Choices[0].Text;
Console.WriteLine($"Summarization: {completion}");

Streamování zpráv chatu s využitím OpenAI mimo Azure

string nonAzureOpenAIApiKey = "your-api-key-from-platform.openai.com";
var client = new OpenAIClient(nonAzureOpenAIApiKey, new OpenAIClientOptions());
var chatCompletionsOptions = new ChatCompletionsOptions()
{
    Messages =
    {
        new ChatMessage(ChatRole.System, "You are a helpful assistant. You will talk like a pirate."),
        new ChatMessage(ChatRole.User, "Can you help me?"),
        new ChatMessage(ChatRole.Assistant, "Arrrr! Of course, me hearty! What can I do for ye?"),
        new ChatMessage(ChatRole.User, "What's the best way to train a parrot?"),
    }
};

Response<StreamingChatCompletions> response = await client.GetChatCompletionsStreamingAsync(
    deploymentOrModelName: "gpt-3.5-turbo",
    chatCompletionsOptions);
using StreamingChatCompletions streamingChatCompletions = response.Value;

await foreach (StreamingChatChoice choice in streamingChatCompletions.GetChoicesStreaming())
{
    await foreach (ChatMessage message in choice.GetMessageStreaming())
    {
        Console.Write(message.Content);
    }
    Console.WriteLine();
}

Řešení potíží

Při interakci s Azure OpenAI pomocí sady .NET SDK odpovídají chyby vrácené službou stejným stavovým kódům HTTP vráceným pro požadavky rozhraní REST API .

Pokud se například pokusíte vytvořit klienta pomocí koncového bodu, který neodpovídá vašemu koncovému bodu prostředku Azure OpenAI, 404 vrátí se chyba s informací Resource Not Found.

Další kroky

  • Uveďte odkaz na další příklady kódu, ideálně na ty, kteří sedí vedle souboru README v adresáři balíčku /samples .
  • V případě potřeby nasměrovat uživatele na jiné balíčky, které by mohly být užitečné.
  • Pokud si myslíte, že existuje dobrá šance, že vývojáři můžou narazit na váš balíček omylem (protože hledají konkrétní funkce a mylně se domnívají, že balíček tuto funkci poskytuje), nasměrujte je na balíčky, které můžou hledat.

Přispívání

Podrobnosti o sestavování, testování a přispívání do této knihovny najdete v CONTRIBUTING.md OpenAI .

Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete na cla.microsoft.com.

Při odesílání žádosti o přijetí změn robot CLA automaticky určí, jestli je potřeba poskytnout smlouvu CLA, a příslušným způsobem žádost o přijetí změn upraví (např. přidáním jmenovky nebo komentáře). Stačí postupovat podle pokynů robota. Pro všechna úložiště používající naši smlouvu CLA to stačí udělat jenom jednou.

Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování nebo se obraťte na opencode@microsoft.com případné další dotazy nebo komentáře.

Imprese