Azure OpenAI-clientbibliotheek voor .NET - versie 1.0.0-beta.5
De Azure OpenAI-clientbibliotheek voor .NET is een aanpassing van de REST API's van OpenAI die een idiomatische interface en uitgebreide integratie met de rest van het Azure SDK-ecosysteem biedt. Het kan verbinding maken met Azure OpenAI-resources of met het niet-Azure OpenAI-deductie-eindpunt, waardoor het een uitstekende keuze is voor zelfs niet-Azure OpenAI-ontwikkeling.
Gebruik de clientbibliotheek voor Azure OpenAI voor het volgende:
Azure OpenAI is een beheerde service waarmee ontwikkelaars inhoud van OpenAI-modellen op Azure-resources kunnen implementeren, afstemmen en genereren.
Broncode | Pakket (NuGet) | API-referentiedocumentatie | Productdocumentatie | Monsters
Aan de slag
Vereisten
Als u een Azure OpenAI-resource wilt gebruiken, moet u een Azure-abonnement en Azure OpenAI-toegang hebben. Hiermee kunt u een Azure OpenAI-resource maken en zowel een verbindings-URL als API-sleutels ophalen. Zie Quickstart: Aan de slag met het genereren van tekst met behulp van Azure OpenAI Service voor meer informatie.
Als u de Azure OpenAI .NET-clientbibliotheek wilt gebruiken om verbinding te maken met niet-Azure OpenAI, hebt u een API-sleutel nodig van een ontwikkelaarsaccount op https://platform.openai.com/.
Het pakket installeren
Installeer de clientbibliotheek voor .NET met NuGet:
dotnet add package Azure.AI.OpenAI --prerelease
De client verifiëren
Als u wilt communiceren met Azure OpenAI of OpenAI, moet u een exemplaar van de OpenAIClient-klasse maken. Als u een client wilt configureren voor gebruik met Azure OpenAI, geeft u een geldige eindpunt-URI op voor een Azure OpenAI-resource, samen met een bijbehorende sleutelreferentie, tokenreferentie of Azure-identiteitsreferentie die is gemachtigd om de Azure OpenAI-resource te gebruiken. Als u in plaats daarvan de client wilt configureren om verbinding te maken met de service van OpenAI, geeft u een API-sleutel op vanuit de Ontwikkelaarsportal van 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 maken met een Azure Active Directory-referentie
Verificatie van clientabonnementssleutels wordt in de meeste voorbeelden in deze introductiehandleiding gebruikt, maar u kunt zich ook verifiëren met Azure Active Directory met behulp van de Azure Identity-bibliotheek. Als u de DefaultAzureCredential-provider wilt gebruiken die hieronder wordt weergegeven, of andere referentieproviders die bij de Azure SDK worden geleverd, installeert u het pakket Azure.Identity:
dotnet add package Azure.Identity
string endpoint = "https://myaccount.openai.azure.com/";
var client = new OpenAIClient(new Uri(endpoint), new DefaultAzureCredential());
Belangrijkste concepten
Het belangrijkste concept om te begrijpen is Voltooiingen. Kort uitgelegd biedt voltooiingen de functionaliteit ervan in de vorm van een tekstprompt, die vervolgens met behulp van een specifiek model wordt geprobeerd de context en patronen aan te passen en een uitvoertekst op te geven. Het volgende codefragment biedt een globaal overzicht (meer informatie vindt u in de GenerateChatbotResponsesWithToken
voorbeeldcode):
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);
}
Veiligheid van schroefdraad
We garanderen dat alle clientexemplaren veilig zijn en onafhankelijk van elkaar zijn (richtlijn). Dit zorgt ervoor dat de aanbeveling om clientexemplaren opnieuw te gebruiken altijd veilig is, zelfs voor alle threads.
Aanvullende concepten
Clientopties | Toegang tot het antwoord | Langlopende bewerkingen | Fouten | afhandelen Diagnostics | Spottende | Clientlevensduur
Voorbeelden
U kunt uzelf vertrouwd maken met verschillende API's met behulp van Voorbeelden.
Chatbot-antwoord genereren
De GenerateChatbotResponse
methode verifieert met behulp van een DefaultAzureCredential en genereert vervolgens tekstreacties op invoerprompts.
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}");
Meerdere chatbotreacties genereren met abonnementssleutel
De GenerateMultipleChatbotResponsesWithSubscriptionKey
methode geeft een voorbeeld van het genereren van tekstantwoorden op invoerprompts met behulp van een Azure-abonnementssleutel
// 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}");
}
Tekst samenvatten met voltooiing
De SummarizeText
methode genereert een samenvatting van de opgegeven invoerprompt.
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}");
Chatberichten streamen met niet-Azure OpenAI
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();
}
Problemen oplossen
Wanneer u met Azure OpenAI communiceert met behulp van de .NET SDK, komen fouten die door de service worden geretourneerd, overeen met dezelfde HTTP-statuscodes die zijn geretourneerd voor REST API-aanvragen .
Als u bijvoorbeeld een client probeert te maken met behulp van een eindpunt dat niet overeenkomt met uw Azure OpenAI-resource-eindpunt, wordt er een 404
fout geretourneerd die aangeeft Resource Not Found
.
Volgende stappen
- Geef een koppeling naar aanvullende codevoorbeelden, idealiter voor degenen die naast het LEESMIJ-bestand in de map van
/samples
het pakket zitten. - Verwijs gebruikers, indien van toepassing, naar andere pakketten die nuttig kunnen zijn.
- Als u denkt dat er een goede kans is dat ontwikkelaars uw pakket per ongeluk tegenkomen (omdat ze op zoek zijn naar specifieke functionaliteit en ten onrechte denken dat het pakket die functionaliteit biedt), wijst u ze naar de pakketten die ze mogelijk zoeken.
Bijdragen
Zie de OpenAI CONTRIBUTING.md voor meer informatie over het bouwen, testen en bijdragen aan deze bibliotheek.
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar cla.microsoft.com voor meer informatie.
Wanneer u een pull-aanvraag indient, wordt met een CLA-bot automatisch bepaald of u een CLA moet verschaffen en wordt de pull-aanvraag dienovereenkomstig opgemaakt (bijvoorbeeld met een label of commentaar). Volg gewoon de instructies van de bot. U hoeft dit maar eenmaal te doen voor alle repo's waar gebruik wordt gemaakt van onze CLA.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.