Клиентская библиотека Azure OpenAI для .NET версии 1.0.0-beta.5
Клиентская библиотека Azure OpenAI для .NET — это адаптация REST API OpenAI, которая предоставляет идиоматический интерфейс и полнофункциончную интеграцию с остальной частью экосистемы пакета SDK Для Azure. Он может подключаться к ресурсам Azure OpenAI или к конечной точке вывода OpenAI, отличной от Azure, что делает его отличным выбором даже для разработки OpenAI, отличной от Azure.
Используйте клиентную библиотеку для Azure OpenAI, чтобы:
Azure OpenAI — это управляемая служба, которая позволяет разработчикам развертывать, настраивать и создавать содержимое из моделей OpenAI в ресурсах Azure.
Исходный код | Пакет (NuGet) | Справочная документация по | API Документация по продукту | Образцы
Начало работы
Предварительные требования
Если вы хотите использовать ресурс Azure OpenAI, у вас должна быть подписка Azure и доступ к Azure OpenAI. Это позволит вам создать ресурс Azure OpenAI и получить URL-адрес подключения, а также ключи API. Дополнительные сведения см. в статье Краткое руководство. Начало создания текста с помощью Службы Azure OpenAI.
Если вы хотите использовать клиентскую библиотеку Azure OpenAI .NET для подключения к OpenAI, отличному от Azure, вам потребуется ключ API из учетной записи разработчика по адресу https://platform.openai.com/.
Установка пакета
Установите клиентную библиотеку для .NET с помощью NuGet:
dotnet add package Azure.AI.OpenAI --prerelease
Аутентификация клиента
Для взаимодействия с Azure OpenAI или OpenAI необходимо создать экземпляр класса OpenAIClient . Чтобы настроить клиент для использования с Azure OpenAI, укажите допустимый URI конечной точки для ресурса Azure OpenAI вместе с соответствующими учетными данными ключа, учетными данными маркера или учетными данными удостоверений Azure, авторизованными для использования ресурса Azure OpenAI. Чтобы вместо этого настроить клиент для подключения к службе OpenAI, укажите ключ API на портале разработчика 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");
Создание OpenAIClient с учетными данными Azure Active Directory
Проверка подлинности с помощью ключа подписки клиента используется в большинстве примеров в этом руководстве по началу работы, но вы также можете пройти проверку подлинности в Azure Active Directory с помощью библиотеки удостоверений Azure. Чтобы использовать поставщик DefaultAzureCredential, показанный ниже, или другие поставщики учетных данных, предоставляемые пакетом SDK для Azure, установите пакет Azure.Identity:
dotnet add package Azure.Identity
string endpoint = "https://myaccount.openai.azure.com/";
var client = new OpenAIClient(new Uri(endpoint), new DefaultAzureCredential());
Основные понятия
Main концепция, для понимания , — завершения. Кратко описано, что завершения предоставляют свои функциональные возможности в виде текстового запроса, который, используя определенную модель, затем пытается сопоставить контекст и шаблоны, предоставляя выходной текст. В следующем фрагменте кода представлен приблизительный обзор (дополнительные сведения см. в GenerateChatbotResponsesWithToken
примере кода):
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);
}
Потокобезопасность
Мы гарантируем, что все методы экземпляра клиента являются потокобезопасны и независимы друг от друга (руководство). Это гарантирует, что рекомендация по повторному использованию экземпляров клиента всегда будет безопасной, даже в разных потоках.
Дополнительные понятия
Параметры | клиента Доступ к ответу | Длительные операции | Обработка сбоев | Диагностики | Насмешливый | Время существования клиента
Примеры
Вы можете ознакомиться с различными API с помощью примеров.
Создание ответа чат-бота
Метод GenerateChatbotResponse
выполняет проверку подлинности с помощью DefaultAzureCredential, а затем создает текстовые ответы на запросы ввода.
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}");
Создание нескольких ответов чат-бота с помощью ключа подписки
Метод GenerateMultipleChatbotResponsesWithSubscriptionKey
предоставляет пример создания текстовых ответов на запросы ввода с помощью ключа подписки 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}");
}
Суммирование текста с помощью завершения
Метод SummarizeText
создает сводные данные по заданному запросу ввода.
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}");
Потоковая передача сообщений чата с помощью OpenAI, отличного от 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();
}
Устранение неполадок
При взаимодействии с Azure OpenAI с помощью пакета SDK для .NET ошибки, возвращаемые службой, соответствуют тем же кодам состояния HTTP, которые возвращаются для запросов REST API .
Например, при попытке создать клиент с помощью конечной точки, которая не соответствует конечной 404
точке ресурса Azure OpenAI, возвращается ошибка, указывающая Resource Not Found
на .
Дальнейшие действия
- Укажите ссылку на дополнительные примеры кода, в идеале для тех, кто находится рядом с файлом сведений в каталоге
/samples
пакета. - При необходимости укажите пользователям другие пакеты, которые могут быть полезны.
- Если вы считаете, что есть хорошая вероятность того, что разработчики могут наткнуться на ваш пакет по ошибке (потому что они ищут конкретные функции и ошибочно думают, что пакет предоставляет эту функциональность), укажите им пакеты, которые они могут искать.
Участие
Дополнительные сведения о создании, тестировании и участии в этой библиотеке см. в CONTRIBUTING.md OpenAI .
На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см. на странице cla.microsoft.com.
При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.