Share via


Azure OpenAI ügyfélkódtár a .NET-hez – 1.0.0-béta.5-ös verzió

A .NET-hez készült Azure OpenAI ügyfélkódtár az OpenAI REST API-jainak adaptációja, amely idiomatikus felületet és gazdag integrációt biztosít az Azure SDK-ökoszisztéma többi részével. Csatlakozhat az Azure OpenAI-erőforrásokhoz vagy a nem Azure OpenAI-következtetési végponthoz, így nagyszerű választás még a nem Azure OpenAI-fejlesztéshez is.

Használja az Azure OpenAI ügyfélkódtárát a következő célokra:

Az Azure OpenAI egy felügyelt szolgáltatás, amely lehetővé teszi a fejlesztők számára az OpenAI-modellekből származó tartalmak üzembe helyezését, finomhangolását és létrehozását az Azure-erőforrásokon.

Forráskód | Csomag (NuGet) | API-referenciadokumentáció | Termékdokumentáció | Minták

Első lépések

Előfeltételek

Ha Azure OpenAI-erőforrást szeretne használni, azure-előfizetéssel és Azure OpenAI-hozzáféréssel kell rendelkeznie. Így létrehozhat egy Azure OpenAI-erőforrást, és lekérheti a kapcsolati URL-címet és az API-kulcsokat is. További információ : Rövid útmutató: Szöveg létrehozása az Azure OpenAI szolgáltatással.

Ha az Azure OpenAI .NET ügyfélkódtárat szeretné használni a nem Azure OpenAI-hoz való csatlakozáshoz, szüksége lesz egy API-kulcsra egy fejlesztői fiókból a címen https://platform.openai.com/.

A csomag telepítése

Telepítse a .NET ügyfélkódtárát a NuGettel:

dotnet add package Azure.AI.OpenAI --prerelease

Az ügyfél hitelesítése

Az Azure OpenAI vagy az OpenAI használatához létre kell hoznia egy OpenAIClient osztálypéldányt. Ha egy ügyfelet az Azure OpenAI-val való használatra szeretne konfigurálni, adjon meg egy érvényes végponti URI-t egy Azure OpenAI-erőforrásnak, valamint egy, az Azure OpenAI-erőforrás használatára jogosult kulcs-hitelesítő adatokat, jogkivonat-hitelesítő adatokat vagy Azure-identitás hitelesítő adatait. Ha ehelyett úgy szeretné konfigurálni az ügyfelet, hogy csatlakozzon az OpenAI szolgáltatásához, adjon meg egy API-kulcsot az OpenAI fejlesztői portáljáról.

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 létrehozása Azure Active Directory hitelesítő adatokkal

Az első lépések útmutatójában szereplő legtöbb példában ügyfél-előfizetési kulcshitelesítést használunk, de az Azure Identity-kódtár használatával az Azure Active Directoryval is végezhet hitelesítést. Az alább látható DefaultAzureCredential szolgáltató vagy az Azure SDK-hoz biztosított egyéb hitelesítőadat-szolgáltatók használatához telepítse az Azure.Identity csomagot:

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

Fő fogalmak

A fő megérteni kívánt fogalom a Befejezések. Röviden ismertetve, a kiegészítések funkcióját szöveges parancssor formájában biztosítja, amely egy adott modell használatával megkísérli egyeztetni a környezetet és a mintákat, és kimeneti szöveget ad meg. Az alábbi kódrészlet durva áttekintést nyújt (további részletek a GenerateChatbotResponsesWithToken mintakódban találhatók):

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

Menetbiztonság

Garantáljuk, hogy minden ügyfélpéldány-metódus szálbiztos és független egymástól (iránymutatás). Ez biztosítja, hogy az ügyfélpéldányok újrafelhasználására vonatkozó javaslat mindig biztonságos legyen, még a szálak között is.

További fogalmak

Ügyfélbeállítások | A válasz | elérése Hosszú ideig futó műveletek | Hibák | kezelése Diagnosztika | Gúnyos | Ügyfélélettartam

Példák

A minták használatával megismerkedhet a különböző API-kkal.

Csevegőrobot-válasz létrehozása

A GenerateChatbotResponse metódus egy DefaultAzureCredential használatával hitelesít, majd szöveges válaszokat hoz létre a bemeneti kérésekre.

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

Több csevegőrobot-válasz létrehozása előfizetési kulccsal

A GenerateMultipleChatbotResponsesWithSubscriptionKey metódus példaként szolgál a bemeneti kérésekre adott szöveges válaszok Azure-előfizetési kulccsal történő létrehozására

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

Szöveg összegzése befejezéssel

A SummarizeText metódus a megadott bemeneti parancssor összegzését hozza létre.

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

Csevegési üzenetek streamelése nem Azure OpenAI-val

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

Hibaelhárítás

Amikor az Azure OpenAI-t a .NET SDK használatával használja, a szolgáltatás által visszaadott hibák megegyeznek a REST API-kérésekhez visszaadott HTTP-állapotkódokkal.

Ha például olyan végponttal próbál létrehozni egy ügyfelet, amely nem egyezik meg az Azure OpenAI-erőforrásvégponttal, a rendszer hibát 404 ad vissza, amely Resource Not Foundazt jelzi, hogy .

Következő lépések

  • Adjon meg egy hivatkozást további példakódokra, ideális esetben azokra, akik a csomag /samples könyvtárában a README mellett ülnek.
  • Szükség esetén mutasson a felhasználókra más, esetleg hasznos csomagokra.
  • Ha úgy gondolja, hogy jó esély van arra, hogy a fejlesztők hiba miatt belebotlanak a csomagba (mivel bizonyos funkciókat keresnek, és tévesen azt hiszik, hogy a csomag biztosítja ezt a funkciót), mutasson azokra a csomagokra, amelyeket esetleg keresnek.

Közreműködés

A kódtár létrehozásával, tesztelésével és közreműködésével kapcsolatos részletekért tekintse meg az OpenAI CONTRIBUTING.md .

A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. A részletekért látogasson el a cla.microsoft.com.

A lekéréses kérelmek elküldésekor egy CLA-robot automatikusan meghatározza, hogy kell-e biztosítania CLA-t, és megfelelően kitölti a lekéréses kérelmet (például címke, megjegyzés). Egyszerűen csak kövesse a robot által megadott utasításokat. Ezt csak egyszer kell elvégeznie az összes olyan tárházban, amely a CLA-t használja.

A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért lásd a viselkedési szabályzattal kapcsolatos gyakori kérdéseket , vagy vegye fel a kapcsolatot opencode@microsoft.com az esetleges további kérdésekkel vagy megjegyzésekkel.

Megjelenések