Клиентская библиотека 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 с любыми дополнительными вопросами или комментариями.

Просмотры