Aracılığıyla paylaş


.NET için Azure OpenAI istemci kitaplığı - sürüm 1.0.0-beta.5

.NET için Azure OpenAI istemci kitaplığı, OpenAI'nin REST API'lerinin, Azure SDK ekosisteminin geri kalanıyla idiomatic bir arabirim ve zengin tümleştirme sağlayan uyarlamasıdır. Azure OpenAI kaynaklarına veya Azure dışı OpenAI çıkarım uç noktasına bağlanarak Azure dışı OpenAI geliştirmesi için bile harika bir seçimdir.

Azure OpenAI için istemci kitaplığını kullanarak:

Azure OpenAI, geliştiricilerin Azure kaynaklarında OpenAI modellerinden içerik dağıtmasına, ayarlamasına ve oluşturmasına olanak tanıyan yönetilen bir hizmettir.

Kaynak kodu | Paket (NuGet) | API başvuru belgeleri | Ürün belgeleri | Örnekleri

Başlarken

Önkoşullar

Bir Azure OpenAI kaynağı kullanmak istiyorsanız, bir Azure aboneliğiniz ve Azure OpenAI erişiminiz olmalıdır. Bu, bir Azure OpenAI kaynağı oluşturmanıza ve hem bağlantı URL'sini hem de API anahtarlarını almanıza olanak sağlar. Daha fazla bilgi için bkz . Hızlı Başlangıç: Azure OpenAI Hizmeti'ni kullanarak metin oluşturmaya başlama.

Azure OpenAI olmayan bir kuruluşa bağlanmak için Azure OpenAI .NET istemci kitaplığını kullanmak isterseniz adresinden bir geliştirici hesabından https://platform.openai.com/API anahtarına ihtiyacınız olacaktır.

Paketi yükleme

NuGet ile .NET için istemci kitaplığını yükleyin:

dotnet add package Azure.AI.OpenAI --prerelease

İstemcinin kimliğini doğrulama

Azure OpenAI veya OpenAI ile etkileşim kurmak için OpenAIClient sınıfının bir örneğini oluşturmanız gerekir. Bir istemciyi Azure OpenAI ile kullanılacak şekilde yapılandırmak için, Azure OpenAI kaynağına geçerli bir uç nokta URI'si ve Azure OpenAI kaynağını kullanma yetkisi olan ilgili anahtar kimlik bilgileri, belirteç kimlik bilgileri veya Azure kimlik bilgileri sağlayın. Bunun yerine istemciyi OpenAI'nin hizmetine bağlanacak şekilde yapılandırmak için OpenAI'nin geliştirici portalından bir API anahtarı sağlayın.

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");

Azure Active Directory Kimlik Bilgileri ile OpenAIClient Oluşturma

İstemci abonelik anahtarı kimlik doğrulaması, bu başlangıç kılavuzundaki örneklerin çoğunda kullanılır, ancak Azure Kimlik kitaplığını kullanarak Azure Active Directory ile de kimlik doğrulaması yapabilirsiniz. Aşağıda gösterilen DefaultAzureCredential sağlayıcısını veya Azure SDK ile sağlanan diğer kimlik bilgileri sağlayıcılarını kullanmak için lütfen Azure.Identity paketini yükleyin:

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

Önemli kavramlar

Anlaşılması gereken ana kavram Tamamlamalar'dır. Özetle, tamamlamalar işlevini metin istemi biçiminde sağlar ve bu sayede belirli bir model kullanılarak bağlam ve desenlerle eşleşmeye çalışılır ve bir çıkış metni sağlanır. Aşağıdaki kod parçacığı kabaca bir genel bakış sağlar (örnek kodda GenerateChatbotResponsesWithToken daha fazla ayrıntı bulunabilir):

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);
}

İş parçacığı güvenliği

Tüm istemci örneği yöntemlerinin iş parçacığı açısından güvenli ve birbirinden bağımsız olduğunu garanti ediyoruz (kılavuz). Bu, istemci örneklerini yeniden kullanma önerisinin iş parçacıkları arasında bile her zaman güvenli olmasını sağlar.

Ek kavramlar

İstemci seçenekleri | Yanıta | erişme Uzun süre çalışan işlemler | Hataları | işleme Tanılama | Alaycı | İstemci ömrü

Örnekler

Örnekleri kullanarak farklı API'ler hakkında bilgi edinebilirsiniz.

Sohbet Botu Yanıtı Oluşturma

yöntemi DefaultAzureCredential GenerateChatbotResponse kullanarak kimlik doğrulaması yapar ve ardından giriş istemlerine metin yanıtları oluşturur.

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}");

Abonelik Anahtarıyla Birden Çok Sohbet Botu Yanıtı Oluşturma

yöntemi, GenerateMultipleChatbotResponsesWithSubscriptionKey Azure abonelik anahtarı kullanarak giriş istemlerine metin yanıtları oluşturma örneği verir

// 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}");
}

Tamamlanma ile Metni Özetleme

yöntemi, SummarizeText verilen giriş isteminin özetlemesi oluşturur.

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}");

Azure Dışı OpenAI ile Sohbet İletileri Akışı

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();
}

Sorun giderme

.NET SDK'sını kullanarak Azure OpenAI ile etkileşime geçtiğiniz zaman, hizmet tarafından döndürülen hatalar REST API istekleri için döndürülen aynı HTTP durum kodlarına karşılık gelir.

Örneğin, Azure OpenAI Kaynak uç noktanızla eşleşmeyen bir uç nokta kullanarak bir istemci oluşturmaya çalışırsanız, belirten Resource Not Foundbir 404 hata döndürülür.

Sonraki adımlar

  • Paketin /samples dizinindeki BENİOKU ile birlikte oturanlar için ideal olan ek kod örneklerinin bağlantısını sağlayın.
  • Uygunsa, kullanıcıları yararlı olabilecek diğer paketlere işaret edin.
  • Geliştiricilerin paketinize yanlışlıkla rastlayabileceğini düşünüyorsanız (belirli işlevleri aradıklarından ve yanlışlıkla paketin bu işlevselliği sağladığını düşündüklerinden), onları aradıkları paketlere yöneltin.

Katkıda bulunma

Bu kitaplığı oluşturma, test etme ve bu kitaplığa katkıda bulunma hakkında ayrıntılı bilgi için OpenAI CONTRIBUTING.md bakın.

Bu proje, katkı ve önerilere açıktır. Çoğu durumda, sağladığınız katkıyı kullanmamız için bize hak tanıma hakkına sahip olduğunuzu ve bu hakkı bize tanıdığınızı bildiren bir Katkıda Bulunan Lisans Sözleşmesi’ni (CLA) kabul etmeniz gerekir. Ayrıntılar için cla.microsoft.com adresini ziyaret edin.

Bir çekme isteği gönderdiğinizde, CLA robotu bir CLA sağlamanız gerekip gerekmediğini otomatik olarak belirler ve çekme isteğini uygun şekilde donatır (örn. etiket, açıklama). Robot tarafından sağlanan yönergeleri izlemeniz yeterlidir. Bu işlemi, CLA’mızı kullanarak tüm depolarda yalnızca bir kere yapmanız gerekir.

Bu proje Microsoft Open Source Code of Conduct (Microsoft Açık Kaynak Kullanım Kuralları) belgesinde listelenen kurallara uygundur. Daha fazla bilgi için Kullanım Kuralları SSS bölümüne bakın veya ek sorular veya yorumlarla iletişime geçin opencode@microsoft.com .

İzlenimler