Biblioteka klienta usługi Azure OpenAI dla platformy .NET — wersja 1.0.0-beta.5
Biblioteka klienta usługi Azure OpenAI dla platformy .NET to adaptacja interfejsów API REST platformy OpenAI, która zapewnia idiomatyczny interfejs i bogatą integrację z resztą ekosystemu zestawu Azure SDK. Może ona łączyć się z zasobami usługi Azure OpenAI lub z punktem końcowym wnioskowania spoza platformy Azure OpenAI, co czyni go doskonałym wyborem nawet w przypadku tworzenia aplikacji spoza platformy Azure OpenAI.
Użyj biblioteki klienta dla usługi Azure OpenAI, aby:
Azure OpenAI to zarządzana usługa, która umożliwia deweloperom wdrażanie, dostrajanie i generowanie zawartości z modeli OpenAI na zasobach platformy Azure.
Kod | źródłowy Pakiet (NuGet) | Dokumentacja referencyjna interfejsu | API Dokumentacja | produktu Próbki
Wprowadzenie
Wymagania wstępne
Jeśli chcesz użyć zasobu usługi Azure OpenAI, musisz mieć subskrypcję platformy Azure i dostęp do usługi Azure OpenAI. Pozwoli to utworzyć zasób usługi Azure OpenAI i uzyskać zarówno adres URL połączenia, jak i klucze interfejsu API. Aby uzyskać więcej informacji, zobacz Szybki start: wprowadzenie do generowania tekstu przy użyciu usługi Azure OpenAI Service.
Jeśli chcesz użyć biblioteki klienta platformy .NET platformy Azure OpenAI do nawiązania połączenia z usługą inną niż Azure OpenAI, musisz mieć klucz interfejsu API z konta dewelopera pod adresem https://platform.openai.com/.
Instalowanie pakietu
Zainstaluj bibliotekę klienta dla platformy .NET za pomocą narzędzia NuGet:
dotnet add package Azure.AI.OpenAI --prerelease
Uwierzytelnianie klienta
Aby wchodzić w interakcje z usługą Azure OpenAI lub OpenAI, należy utworzyć wystąpienie klasy OpenAIClient . Aby skonfigurować klienta do użycia z usługą Azure OpenAI, podaj prawidłowy identyfikator URI punktu końcowego dla zasobu usługi Azure OpenAI wraz z odpowiednimi poświadczeniami klucza, poświadczeniami tokenu lub poświadczeniami tożsamości platformy Azure, które są autoryzowane do korzystania z zasobu usługi Azure OpenAI. Aby zamiast tego skonfigurować klienta w celu nawiązania połączenia z usługą OpenAI, podaj klucz interfejsu API z portalu dla deweloperów 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");
Tworzenie obiektu OpenAIClient przy użyciu poświadczeń usługi Azure Active Directory
Uwierzytelnianie klucza subskrypcji klienta jest używane w większości przykładów w tym przewodniku wprowadzającym, ale można również uwierzytelniać się w usłudze Azure Active Directory przy użyciu biblioteki tożsamości platformy Azure. Aby użyć przedstawionego poniżej dostawcy DefaultAzureCredential lub innych dostawców poświadczeń dostarczanych z zestawem Azure SDK, zainstaluj pakiet Azure.Identity:
dotnet add package Azure.Identity
string endpoint = "https://myaccount.openai.azure.com/";
var client = new OpenAIClient(new Uri(endpoint), new DefaultAzureCredential());
Kluczowe pojęcia
Główną koncepcją do zrozumienia jest uzupełnianie. Krótko wyjaśnione, ukończenia zapewniają jego funkcjonalność w postaci monitu tekstowego, który przy użyciu określonego modelu podejmie próbę dopasowania kontekstu i wzorców, dostarczając tekst wyjściowy. Poniższy fragment kodu zawiera przybliżone omówienie (więcej szczegółów można znaleźć w przykładowym GenerateChatbotResponsesWithToken
kodzie):
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);
}
Bezpieczeństwo wątkowe
Gwarantujemy, że wszystkie metody wystąpienia klienta są bezpieczne wątkowo i niezależne od siebie (wytyczne). Dzięki temu zalecenie ponownego obsługi wystąpień klienta jest zawsze bezpieczne, nawet w wątkach.
Dodatkowe pojęcia
Opcje | klienta Uzyskiwanie dostępu do odpowiedzi | Długotrwałe operacje | Obsługa błędów | Diagnostyka | Szyderczy | Okres istnienia klienta
Przykłady
Możesz zapoznać się z różnymi interfejsami API przy użyciu przykładów.
Generuj odpowiedź czatbota
Metoda GenerateChatbotResponse
uwierzytelnia się przy użyciu elementu DefaultAzureCredential, a następnie generuje odpowiedzi tekstowe na monity wejściowe.
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}");
Generowanie wielu odpowiedzi czatbota przy użyciu klucza subskrypcji
Metoda GenerateMultipleChatbotResponsesWithSubscriptionKey
przedstawia przykład generowania odpowiedzi tekstowych na monity wejściowe przy użyciu klucza subskrypcji platformy 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}");
}
Podsumuj tekst z uzupełnianiem
Metoda SummarizeText
generuje podsumowanie danego monitu wejściowego.
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}");
Przesyłanie strumieniowe komunikatów czatu za pomocą interfejsu OpenAI platformy 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();
}
Rozwiązywanie problemów
W przypadku interakcji z usługą Azure OpenAI przy użyciu zestawu SDK platformy .NET błędy zwracane przez usługę odpowiadają tym samym kodom stanu HTTP zwracanym dla żądań interfejsu API REST .
Jeśli na przykład spróbujesz utworzyć klienta przy użyciu punktu końcowego, który nie jest zgodny z punktem końcowym zasobu usługi Azure OpenAI, 404
zostanie zwrócony błąd wskazujący Resource Not Found
wartość .
Następne kroki
- Podaj link do dodatkowych przykładów kodu, najlepiej dla osób znajdujących się obok pliku README w katalogu pakietu
/samples
. - W razie potrzeby wskaż użytkownikom inne pakiety, które mogą być przydatne.
- Jeśli uważasz, że istnieje prawdopodobieństwo, że deweloperzy mogą napotkać błąd pakietu (ponieważ wyszukują określone funkcje i błędnie uważają, że pakiet zapewnia tę funkcjonalność), wskaż im pakiety, których mogą szukać.
Współtworzenie
Zobacz CONTRIBUTING.md OpenAI , aby uzyskać szczegółowe informacje na temat kompilowania, testowania i współtworzenia tej biblioteki.
W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź cla.microsoft.com.
Po przesłaniu żądania ściągnięcia robot CLA automatycznie określi, czy musisz przekazać umowę CLA, i doda odpowiednie informacje do tego żądania (na przykład etykietę czy komentarz). Po prostu postępuj zgodnie z instrukcjami robota. Wystarczy zrobić to raz dla wszystkich repozytoriów, w przypadku których jest używana nasza umowa CLA.
W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące kodeksu postępowania lub skontaktuj się z opencode@microsoft.com dodatkowymi pytaniami lub komentarzami.