Biblioteca de cliente do Azure OpenAI para .NET – versão 1.0.0-beta.5
A biblioteca de cliente do Azure OpenAI para .NET é uma adaptação das APIs REST da OpenAI que fornece uma interface idiomática e uma integração avançada com o resto do ecossistema do SDK do Azure. Pode ligar-se aos recursos do Azure OpenAI ou ao ponto final de inferência não Azure OpenAI, tornando-o uma ótima opção para o desenvolvimento não Azure OpenAI.
Utilize a biblioteca de cliente do Azure OpenAI para:
O Azure OpenAI é um serviço gerido que permite aos programadores implementar, otimizar e gerar conteúdo a partir de modelos OpenAI em recursos do Azure.
Código fonte | Pacote (NuGet) | Documentação | de referência da APIDocumentação do | produto Exemplos
Introdução
Pré-requisitos
Se quiser utilizar um recurso do Azure OpenAI, tem de ter uma subscrição do Azure e acesso openAI do Azure. Isto permite-lhe criar um recurso do Azure OpenAI e obter um URL de ligação, bem como chaves de API. Para obter mais informações, veja Início Rápido: Começar a gerar texto com o Serviço OpenAI do Azure.
Se quiser utilizar a biblioteca de cliente .NET do Azure OpenAI para ligar ao OpenAI não Azure, precisará de uma chave de API de uma conta de programador em https://platform.openai.com/.
Instalar o pacote
Instale a biblioteca de cliente para .NET com NuGet:
dotnet add package Azure.AI.OpenAI --prerelease
Autenticar o cliente
Para interagir com o Azure OpenAI ou o OpenAI, terá de criar uma instância da classe OpenAIClient . Para configurar um cliente para utilização com o Azure OpenAI, forneça um URI de ponto final válido a um recurso do Azure OpenAI juntamente com uma credencial de chave correspondente, credencial de token ou credencial de identidade do Azure autorizada a utilizar o recurso do Azure OpenAI. Para, em vez disso, configurar o cliente para ligar ao serviço do OpenAI, forneça uma chave de API a partir do portal de programador da 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");
Criar OpenAIClient com uma Credencial do Azure Active Directory
A autenticação da chave de subscrição de cliente é utilizada na maioria dos exemplos neste guia de introdução, mas também pode autenticar com o Azure Active Directory com a biblioteca de Identidade do Azure. Para utilizar o fornecedor DefaultAzureCredential apresentado abaixo ou outros fornecedores de credenciais fornecidos com o SDK do Azure, instale o pacote Azure.Identity:
dotnet add package Azure.Identity
string endpoint = "https://myaccount.openai.azure.com/";
var client = new OpenAIClient(new Uri(endpoint), new DefaultAzureCredential());
Conceitos-chave
O principal conceito a compreender é Conclusãos. Resumidamente, as conclusões fornecem a respetiva funcionalidade na forma de uma linha de texto que, ao utilizar um modelo específico, tentará, em seguida, corresponder ao contexto e aos padrões, fornecendo um texto de saída. O fragmento de código seguinte fornece uma descrição geral aproximada (podem ser encontrados mais detalhes no código de GenerateChatbotResponsesWithToken
exemplo):
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);
}
Segurança de threads
Garantimos que todos os métodos de instância de cliente são seguros para threads e independentes uns dos outros (orientação). Isto garante que a recomendação de reutilização de instâncias de cliente é sempre segura, mesmo entre threads.
Conceitos adicionais
Opções de | cliente Aceder à resposta | Operações de execução prolongada | Lidar com falhas | Diagnósticos | A gozar | Duração do cliente
Exemplos
Pode familiarizar-se com diferentes APIs com Exemplos.
Gerar Resposta do Chatbot
O GenerateChatbotResponse
método autentica-se com um DefaultAzureCredential e, em seguida, gera respostas de texto a pedidos de entrada.
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}");
Gerar Múltiplas Respostas do Chatbot com a Chave de Subscrição
O GenerateMultipleChatbotResponsesWithSubscriptionKey
método dá um exemplo de geração de respostas de texto a pedidos de entrada com uma chave de subscrição do 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}");
}
Resumir Texto com Conclusão
O SummarizeText
método gera um resumo do pedido de entrada especificado.
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}");
Transmitir Mensagens de Chat em Fluxo com o OpenAI não 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();
}
Resolução de problemas
Quando interage com o Azure OpenAI com o SDK .NET, os erros devolvidos pelo serviço correspondem aos mesmos códigos de estado HTTP devolvidos para pedidos de API REST .
Por exemplo, se tentar criar um cliente com um ponto final que não corresponda ao ponto final do Recurso openAI do Azure, é devolvido um 404
erro que indica Resource Not Found
.
Passos seguintes
- Forneça uma ligação para exemplos de código adicionais, idealmente para aqueles que estão sentados ao lado do README no diretório do
/samples
pacote. - Se for adequado, aponte os utilizadores para outros pacotes que possam ser úteis.
- Se acha que existe uma boa hipótese de os programadores encontrarem o seu pacote por engano (porque estão à procura de funcionalidades específicas e pensam erradamente que o pacote fornece essa funcionalidade), aponte-os para os pacotes que podem estar à procura.
Contribuir
Veja o CONTRIBUTING.md OpenAI para obter detalhes sobre como criar, testar e contribuir para esta biblioteca.
Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para obter detalhes, visite cla.microsoft.com.
Quando submete um pedido Pull, um bot do CLA determina automaticamente se tem de fornecer um CLA e decorar o PR de forma adequada (por exemplo, etiqueta, comentário). Só tem de seguir as instruções fornecidas pelo bot. Apenas terá de fazer isto uma vez em todos os repositórios com o nosso CLA.
Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, consulte as FAQ do Código de Conduta ou o contacto opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.