Azure Taalondersteuning voor OpenAI SDK

Gebruik de OpenAI SDK's met het Azure OpenAI v1-eindpunt om modeldeductietoepassingen te bouwen in Python, C#, JavaScript, Java of Go. In de voorbeelden wordt de Antwoorden-API gebruikt voor nieuwe toepassingen en worden chatvoltooiingen weergegeven voor toepassingen die nog steeds gebruikmaken van de interface op basis van berichten.

Voorwaarden

  • Een Azure-abonnement. Maak er gratis een als u er nog geen hebt.
  • Een Azure OpenAI-resource met een gpt-5-mini modelimplementatie.
  • Uw Azure OpenAI-resource-eindpunt, zoals https://YOUR-RESOURCE-NAME.openai.azure.com.
  • Voor Microsoft Entra ID-verificatie is een identiteit die gemachtigd is om deductie uit te voeren. Zie Microsoft Entra ID-verificatie configureren voor opties voor rollen.
  • Voor VERIFICATIE van API-sleutels, een Azure OpenAI-resourcesleutel. Microsoft Entra ID wordt aanbevolen voor productietoepassingen.
  • Een ondersteunde taalruntime en pakketbeheer voor de taal die u selecteert.

De model waarde in elke aanvraag is de naam van uw Azure modelimplementatie. De voorbeelden gebruiken gpt-5-mini; vervang deze als uw implementatie een andere naam heeft.

Broncode | Pakket | API-oppervlak

De voorbeelden zijn getest met OpenAI 2.12.0, Azure.Identity 1.21.0 en .NET 8. Het OpenAI-pakket is ook gericht op .NET Standard 2.0 en hoger .NET versies.

De pakketten installeren

Installeer de OpenAI- en Azure Identity-pakketten:

dotnet add package OpenAI
dotnet add package Azure.Identity

Met de opdrachten worden beide pakketverwijzingen aan uw project toegevoegd.

Een antwoord maken met Microsoft Entra ID

Gebruik DefaultAzureCredential en BearerTokenPolicy om te verifiëren zonder een API-sleutel op te slaan.

using Azure.Identity;
using OpenAI.Responses;
using System.ClientModel.Primitives;

#pragma warning disable OPENAI001

var endpoint = new Uri(
    "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/");
var tokenPolicy = new BearerTokenPolicy(
    new DefaultAzureCredential(),
    "https://ai.azure.com/.default");
var openAIClient = new ResponsesClient(
    tokenPolicy,
    new ResponsesClientOptions { Endpoint = endpoint });

var response = await openAIClient.CreateResponseAsync(
    "gpt-5-mini",
    "Explain the purpose of an API in one sentence.");
Console.WriteLine(response.Value.GetOutputText());

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: ResponsesClient

Een antwoord maken met een API-sleutel

API-sleutels worden niet aanbevolen voor productiegebruik. Sla de sleutel op in de AZURE_OPENAI_API_KEY omgevingsvariabele in plaats van deze in de broncode te plaatsen.

export AZURE_OPENAI_API_KEY="<your-api-key>"

Maak vervolgens de client en aanvraag:

using OpenAI.Responses;
using System.ClientModel;

#pragma warning disable OPENAI001

var endpoint = new Uri(
    "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/");
var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY")
    ?? throw new InvalidOperationException("AZURE_OPENAI_API_KEY is required.");
var openAIClient = new ResponsesClient(
    new ApiKeyCredential(apiKey),
    new ResponsesClientOptions { Endpoint = endpoint });

var response = await openAIClient.CreateResponseAsync(
    "gpt-5-mini",
    "Explain the purpose of an API in one sentence.");
Console.WriteLine(response.Value.GetOutputText());

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: CreateResponseAsync

Chatvoltooiingen gebruiken

Gebruik de Antwoorden-API voor nieuwe toepassingen. Gebruik Chatvoltooiingen wanneer u de interface op basis van berichten nodig hebt of een bestaande toepassing onderhoudt.

using Azure.Identity;
using OpenAI;
using OpenAI.Chat;
using System.ClientModel.Primitives;

#pragma warning disable OPENAI001

var endpoint = new Uri(
    "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/");
var tokenPolicy = new BearerTokenPolicy(
    new DefaultAzureCredential(),
    "https://ai.azure.com/.default");
var openAIClient = new ChatClient(
    model: "gpt-5-mini",
    authenticationPolicy: tokenPolicy,
    options: new OpenAIClientOptions { Endpoint = endpoint });

var completion = await openAIClient.CompleteChatAsync([
    new SystemChatMessage("You are a helpful assistant."),
    new UserChatMessage("Explain the purpose of an API.")
]);
Console.WriteLine(completion.Value.Content[0].Text);

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: ChatClient

Een antwoord streamen

Delta-updates voor aanroepen CreateResponseStreamingAsync en verwerken terwijl het model deze genereert:

using OpenAI.Responses;
using System.ClientModel;

#pragma warning disable OPENAI001

var endpoint = new Uri(
    "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/");
var apiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY")
    ?? throw new InvalidOperationException("AZURE_OPENAI_API_KEY is required.");
var openAIClient = new ResponsesClient(
    new ApiKeyCredential(apiKey),
    new ResponsesClientOptions { Endpoint = endpoint });

// Stream text as the model generates it.
var updates = openAIClient.CreateResponseStreamingAsync(
    "gpt-5-mini",
    "Explain the purpose of an API in one sentence.");
await foreach (var update in updates)
{
    if (update is StreamingResponseOutputTextDeltaUpdate delta)
    {
        Console.Write(delta.Delta);
    }
}

De volgende gestreamde uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: CreateResponseStreamingAsync

Fouten en nieuwe pogingen verwerken

De client probeert automatisch HTTP 408-, 429-, 500-, 502-, 503- en 504-antwoorden met exponentieel uitstel opnieuw. Configureer het beleid voor opnieuw proberen via de clientopties wanneer u ander gedrag nodig hebt. Catch ClientResultException om de HTTP-status en foutdetails voor een mislukte aanvraag te controleren.

Voor diagnostische gegevens behoudt u de ClientResult<T> geretourneerde bewerking en inspecteert u de onbewerkte antwoordheaders. Mislukte bewerkingen maken statusinformatie beschikbaar via ClientResultException.

Naslaginformatie: Foutafhandeling en details van clientresultaten

Meer SDK-voorbeelden

Broncode | Pakket | REST API-naslaginformatie | Go-API-verwijzing

Voor de voorbeelden is Go 1.25 of hoger vereist. Ze zijn getest met github.com/openai/openai-go/v3 3.44.0 en azidentity 1.14.0.

De modules installeren

Installeer de OpenAI- en Azure Identity-modules:

go get github.com/openai/openai-go/v3
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

Het /v3 achtervoegsel is vereist omdat hiermee de huidige primaire versie van de Go-module wordt geïdentificeerd.

Een antwoord maken met Microsoft Entra ID

Gebruik DefaultAzureCredential en de Azure verificatieoptie om te verifiëren zonder een API-sleutel op te slaan.

package main

import (
	"context"
	"fmt"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/openai/openai-go/v3"
	"github.com/openai/openai-go/v3/azure"
	"github.com/openai/openai-go/v3/option"
	"github.com/openai/openai-go/v3/responses"
)

func main() {
	credential, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil { panic(err) }
	endpoint := "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
	openaiClient := openai.NewClient(
		option.WithBaseURL(endpoint),
		azure.WithTokenCredential(credential, azure.WithTokenCredentialScopes(
			[]string{"https://ai.azure.com/.default"})))
	response, err := openaiClient.Responses.New(context.Background(), responses.ResponseNewParams{
		Model: openai.ChatModel("gpt-5-mini"),
		Input: responses.ResponseNewParamsInputUnion{OfString: openai.String(
			"Explain the purpose of an API in one sentence.")},
	})
	if err != nil { panic(err) }
	fmt.Println(response.OutputText())
}

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Naslaginformatie: ResponseService.New en WithTokenCredentialScopes

Een antwoord maken met een API-sleutel

API-sleutels worden niet aanbevolen voor productiegebruik. Sla de sleutel op in de AZURE_OPENAI_API_KEY omgevingsvariabele in plaats van deze in de broncode te plaatsen.

export AZURE_OPENAI_API_KEY="<your-api-key>"

Maak vervolgens de client en aanvraag:

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/openai/openai-go/v3"
	"github.com/openai/openai-go/v3/option"
	"github.com/openai/openai-go/v3/responses"
)

func main() {
	apiKey := os.Getenv("AZURE_OPENAI_API_KEY")
	if apiKey == "" { panic("AZURE_OPENAI_API_KEY is required") }
	endpoint := "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
	openaiClient := openai.NewClient(
		option.WithBaseURL(endpoint),
		option.WithAPIKey(apiKey))
	response, err := openaiClient.Responses.New(context.Background(), responses.ResponseNewParams{
		Model: openai.ChatModel("gpt-5-mini"),
		Input: responses.ResponseNewParamsInputUnion{OfString: openai.String(
			"Explain the purpose of an API in one sentence.")},
	})
	if err != nil { panic(err) }
	fmt.Println(response.OutputText())
}

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: Responses.New

Chatvoltooiingen gebruiken

Gebruik de Antwoorden-API voor nieuwe toepassingen. Gebruik Chatvoltooiingen wanneer u de interface op basis van berichten nodig hebt of een bestaande toepassing onderhoudt.

package main

import (
	"context"
	"fmt"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/openai/openai-go/v3"
	"github.com/openai/openai-go/v3/azure"
	"github.com/openai/openai-go/v3/option"
)

func main() {
	credential, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil { panic(err) }
	endpoint := "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
	openaiClient := openai.NewClient(
		option.WithBaseURL(endpoint),
		azure.WithTokenCredential(credential, azure.WithTokenCredentialScopes(
			[]string{"https://ai.azure.com/.default"})))
	completion, err := openaiClient.Chat.Completions.New(context.Background(),
		openai.ChatCompletionNewParams{
			Model: openai.ChatModel("gpt-5-mini"),
			Messages: []openai.ChatCompletionMessageParamUnion{
				openai.DeveloperMessage("You are a helpful assistant."),
				openai.UserMessage("Explain the purpose of an API.")}})
	if err != nil { panic(err) }
	fmt.Println(completion.Choices[0].Message.Content)
}

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: Chat.Completions.New

Een antwoord streamen

Aanroepen Responses.NewStreamingen tekst delta-gebeurtenissen verwerken terwijl het model ze genereert:

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/openai/openai-go/v3"
	"github.com/openai/openai-go/v3/option"
	"github.com/openai/openai-go/v3/responses"
)

func main() {
	endpoint := "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
	openaiClient := openai.NewClient(option.WithBaseURL(endpoint),
		option.WithAPIKey(os.Getenv("AZURE_OPENAI_API_KEY")))
	// Stream text as the model generates it.
	stream := openaiClient.Responses.NewStreaming(context.Background(), responses.ResponseNewParams{
		Model: openai.ChatModel("gpt-5-mini"),
		Input: responses.ResponseNewParamsInputUnion{OfString: openai.String(
			"Explain the purpose of an API in one sentence.")},
	})
	for stream.Next() { fmt.Print(stream.Current().Delta) }
	if err := stream.Err(); err != nil { panic(err) }
}

De volgende gestreamde uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: Responses.NewStreaming

Fouten en nieuwe pogingen verwerken

De SDK probeert verbindingsfouten en HTTP 408-, 409-, 429- en 5xx-antwoorden twee keer met exponentieel uitstel. Gebruik option.WithMaxRetries dit om de standaardwaarde te wijzigen. Controleer de geretourneerde error voordat u een antwoord leest en gebruik errors.As deze om een openai.Error.

package main

import (
	"context"
	"errors"
	"fmt"
	"os"

	"github.com/openai/openai-go/v3"
	"github.com/openai/openai-go/v3/option"
	"github.com/openai/openai-go/v3/responses"
)

func main() {
	endpoint := "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
	openaiClient := openai.NewClient(option.WithBaseURL(endpoint),
		option.WithAPIKey(os.Getenv("AZURE_OPENAI_API_KEY")), option.WithMaxRetries(4))
	// Send the request and inspect structured service errors.
	result, err := openaiClient.Responses.New(context.Background(), responses.ResponseNewParams{
		Model: openai.ChatModel("gpt-5-mini"),
		Input: responses.ResponseNewParamsInputUnion{OfString: openai.String("Explain an API.")},
	})
	if err != nil {
		var apiError *openai.Error
		if errors.As(err, &apiError) { fmt.Printf("Status: %d; Request ID: %s\n",
			apiError.StatusCode, apiError.Response.Header.Get("x-request-id")) }
		panic(err)
	}
	fmt.Println(result.OutputText())
}

Voor een geslaagde aanvraag is de volgende uitvoer representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Naslaginformatie: Fouten en nieuwe pogingen

Meer SDK-voorbeelden

Broncode | Pakket | REST API-naslaginformatie | Java API-verwijzing

Voor de voorbeelden is Java 8 of hoger vereist. Ze zijn getest met openai-java 4.43.0 en azure-identity 1.18.4.

De pakketten installeren

Maven

Voeg de OpenAI- en Azure Identity-afhankelijkheden toe aan uw Maven-project:

<dependencies>
  <dependency>
    <groupId>com.openai</groupId>
    <artifactId>openai-java</artifactId>
                <version>4.43.0</version>
  </dependency>
  <dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.18.4</version>
  </dependency>
</dependencies>

Maven lost de pakketten en hun transitieve afhankelijkheden op wanneer u het project bouwt.

Gradle

Voeg dezelfde pakketten toe aan het dependencies blok in uw Gradle-buildbestand:

dependencies {
        implementation("com.openai:openai-java:4.43.0")
        implementation("com.azure:azure-identity:1.18.4")
}

Gradle lost de pakketten op wanneer u het project bouwt.

Een antwoord maken met Microsoft Entra ID

Gebruik DefaultAzureCredential en BearerTokenCredential om te verifiëren zonder een API-sleutel op te slaan.

import com.azure.identity.AuthenticationUtil;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.credential.BearerTokenCredential;
import com.openai.models.responses.ResponseCreateParams;

public class ResponsesExample {
    public static void main(String[] args) {
        String endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/";
        OpenAIClient openAIClient = OpenAIOkHttpClient.builder()
                .baseUrl(endpoint)
                .credential(BearerTokenCredential.create(
                        AuthenticationUtil.getBearerTokenSupplier(
                                new DefaultAzureCredentialBuilder().build(),
                                "https://ai.azure.com/.default")))
                .build();
        ResponseCreateParams params = ResponseCreateParams.builder()
                .model("gpt-5-mini")
                .input("Explain the purpose of an API in one sentence.")
                .build();
        openAIClient.responses().create(params).output().stream()
                .flatMap(item -> item.message().stream())
                .flatMap(message -> message.content().stream())
                .flatMap(content -> content.outputText().stream())
                .forEach(output -> System.out.println(output.text()));
    }
}

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Naslaginformatie: AzureEntraIdExample en ResponsesExample

Een antwoord maken met een API-sleutel

Gebruik geen API-sleutels voor productie. Sla de sleutel op in de AZURE_OPENAI_API_KEY omgevingsvariabele in plaats van deze in de broncode te plaatsen.

export AZURE_OPENAI_API_KEY="<your-api-key>"

Maak vervolgens de client en aanvraag:

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.responses.ResponseCreateParams;

public class ApiKeyResponsesExample {
    public static void main(String[] args) {
        String endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/";
        String apiKey = System.getenv("AZURE_OPENAI_API_KEY");
        if (apiKey == null) throw new IllegalStateException(
                "AZURE_OPENAI_API_KEY is required.");
        OpenAIClient openAIClient = OpenAIOkHttpClient.builder()
                .baseUrl(endpoint).apiKey(apiKey).build();
        ResponseCreateParams params = ResponseCreateParams.builder()
                .model("gpt-5-mini")
                .input("Explain the purpose of an API in one sentence.")
                .build();
        openAIClient.responses().create(params).output().stream()
                .flatMap(item -> item.message().stream())
                .flatMap(message -> message.content().stream())
                .flatMap(content -> content.outputText().stream())
                .forEach(output -> System.out.println(output.text()));
    }
}

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: OpenAIOkHttpClient

Chatvoltooiingen gebruiken

Gebruik de Antwoorden-API voor nieuwe toepassingen. Gebruik Chatvoltooiingen wanneer u de interface op basis van berichten nodig hebt of een bestaande toepassing onderhoudt.

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletionCreateParams;

public class ChatExample {
    public static void main(String[] args) {
        String endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/";
        String apiKey = System.getenv("AZURE_OPENAI_API_KEY");
        if (apiKey == null) throw new IllegalStateException(
                "AZURE_OPENAI_API_KEY is required.");
        OpenAIClient openAIClient = OpenAIOkHttpClient.builder()
                .baseUrl(endpoint).apiKey(apiKey).build();
        ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
                .model("gpt-5-mini")
                .addDeveloperMessage("You are a helpful assistant.")
                .addUserMessage("Explain the purpose of an API.")
                .build();
        openAIClient.chat().completions().create(params).choices().stream()
                .flatMap(choice -> choice.message().content().stream())
                .forEach(System.out::println);
    }
}

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: ChatCompletionCreateParams

Een antwoord streamen

Aanroepen createStreamingen tekst delta-gebeurtenissen verwerken terwijl het model ze genereert:

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.core.http.StreamResponse;
import com.openai.models.responses.ResponseCreateParams;
import com.openai.models.responses.ResponseStreamEvent;

public class StreamingExample {
    public static void main(String[] args) {
        String endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/";
        String apiKey = System.getenv("AZURE_OPENAI_API_KEY");
        if (apiKey == null) throw new IllegalStateException(
                "AZURE_OPENAI_API_KEY is required.");
        OpenAIClient openAIClient = OpenAIOkHttpClient.builder()
                .baseUrl(endpoint).apiKey(apiKey).build();
        // Stream text as the model generates it.
        ResponseCreateParams params = ResponseCreateParams.builder()
                .model("gpt-5-mini")
                .input("Explain the purpose of an API in one sentence.")
                .build();
        try (StreamResponse<ResponseStreamEvent> stream =
                openAIClient.responses().createStreaming(params)) {
            stream.stream().flatMap(event -> event.outputTextDelta().stream())
                    .forEach(delta -> System.out.print(delta.delta()));
        }
    }
}

De volgende gestreamde uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: responses.createStreaming

Fouten en nieuwe pogingen verwerken

De SDK probeert verbindingsfouten en HTTP 408-, 409-, 429- en 5xx-antwoorden twee keer met exponentieel uitstel. Catch OpenAIServiceException voor het controleren van de HTTP-status en foutdetails voor een serviceantwoord en catch OpenAIException voor andere SDK-fouten.

Roep maxRetries aan OpenAIOkHttpClient.builder() om de standaardinstelling te wijzigen. Behoud de service-uitzondering zodat uw toepassing de status kan registreren en metagegevens kan aanvragen.

Naslaginformatie: Foutafhandeling en nieuwe pogingen

Meer SDK-voorbeelden

Broncode | Pakket | REST API-naslaginformatie | richtlijnen voor Azure OpenAI v1

Voor de voorbeelden is Node.js 20 of hoger vereist. Ze zijn getest met openai 6.46.0 en @azure/identity 4.13.1. Gebruik openai 5.18.0 of hoger wanneer u een Microsoft Entra tokenprovider doorgeeft als apiKey.

De pakketten installeren

Installeer de OpenAI- en Azure Identity-pakketten:

npm install openai @azure/identity

Met de opdracht worden beide pakketten aan uw project toegevoegd.

Een antwoord maken met Microsoft Entra ID

Gebruik DefaultAzureCredential en getBearerTokenProvider om te verifiëren zonder een API-sleutel op te slaan. De tokenprovider vernieuwt het toegangstoken zo nodig.

import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import OpenAI from "openai";

const endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/";
const tokenProvider = getBearerTokenProvider(
  new DefaultAzureCredential(),
  "https://ai.azure.com/.default",
);
const openai = new OpenAI({ baseURL: endpoint, apiKey: tokenProvider });

async function main() {
  const response = await openai.responses.create({
    model: "gpt-5-mini",
    input: "Explain the purpose of an API in one sentence.",
  });
  console.log(response.output_text);
}

main().catch(console.error);

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Naslaginformatie: OpenAI client- en Azure OpenAI v1-verificatie

Een antwoord maken met een API-sleutel

API-sleutels worden niet aanbevolen voor productiegebruik. Sla de sleutel op in de AZURE_OPENAI_API_KEY omgevingsvariabele in plaats van deze in de broncode te plaatsen.

export AZURE_OPENAI_API_KEY="<your-api-key>"

Maak vervolgens de client en aanvraag:

import OpenAI from "openai";

const endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/";
const apiKey = process.env["AZURE_OPENAI_API_KEY"];
if (!apiKey) throw new Error("AZURE_OPENAI_API_KEY is required.");

const openai = new OpenAI({ baseURL: endpoint, apiKey });

async function main() {
  const response = await openai.responses.create({
    model: "gpt-5-mini",
    input: "Explain the purpose of an API in one sentence.",
  });
  console.log(response.output_text);
}

main().catch(console.error);

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: responses.create

Chatvoltooiingen gebruiken

Gebruik de Antwoorden-API voor nieuwe toepassingen. Gebruik Chatvoltooiingen wanneer u de interface op basis van berichten nodig hebt of een bestaande toepassing onderhoudt.

import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
import OpenAI from "openai";

const endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/";
const tokenProvider = getBearerTokenProvider(
  new DefaultAzureCredential(),
  "https://ai.azure.com/.default",
);
const openai = new OpenAI({ baseURL: endpoint, apiKey: tokenProvider });

async function main() {
  const completion = await openai.chat.completions.create({
    model: "gpt-5-mini",
    messages: [
      { role: "system", content: "You are a helpful assistant." },
      { role: "user", content: "Explain the purpose of an API." },
    ],
  });
  console.log(completion.choices[0]?.message.content ?? "No response returned.");
}

main().catch(console.error);

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Het binnen de aanvraag houden messages biedt de contextuele typen die vereist is voor de role waarden. Als u de matrix afzonderlijk definieert, declareert u deze als OpenAI.Chat.ChatCompletionMessageParam[].

Referentie: chat.completions.create

Een antwoord streamen

Ingesteld stream op trueen verwerken van delta-gebeurtenissen voor tekst terwijl het model deze genereert:

import OpenAI from "openai";

const endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/";
const apiKey = process.env["AZURE_OPENAI_API_KEY"];
if (!apiKey) throw new Error("AZURE_OPENAI_API_KEY is required.");
const openai = new OpenAI({ baseURL: endpoint, apiKey });

async function main() {
  // Stream text as the model generates it.
  const stream = await openai.responses.create({
    model: "gpt-5-mini",
    input: "Explain the purpose of an API in one sentence.",
    stream: true,
  });
  for await (const event of stream) {
    if (event.type === "response.output_text.delta") {
      process.stdout.write(event.delta);
    }
  }
}

main().catch(console.error);

De volgende gestreamde uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Naslaginformatie: responses.create streaming

Fouten en nieuwe pogingen verwerken

De SDK probeert automatisch verbindingsfouten, time-outs, HTTP 408, 409, 429 en 5xx-antwoorden tweemaal met exponentieel uitstel. Stel maxRetries deze optie in op de OpenAI client om dit gedrag te wijzigen. Catch APIError om de HTTP-status, aanvraag-id en foutdetails voor een mislukte aanvraag te controleren.

In het volgende voorbeeld worden vier nieuwe pogingen ingesteld en wordt de aanvraag-id vastgelegd voor geslaagde en mislukte aanvragen:

import OpenAI from "openai";

const endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/";
const apiKey = process.env["AZURE_OPENAI_API_KEY"];
if (!apiKey) throw new Error("AZURE_OPENAI_API_KEY is required.");
const openai = new OpenAI({ baseURL: endpoint, apiKey, maxRetries: 4 });

async function main() {
  try {
    // Send the request and record its request ID.
    const response = await openai.responses.create({
      model: "gpt-5-mini",
      input: "Explain the purpose of an API in one sentence.",
    });
    console.log(response.output_text);
    console.log(`Request ID: ${response._request_id}`);
  } catch (error) {
    if (error instanceof OpenAI.APIError) {
      console.error(`Status: ${error.status}; Request ID: ${error.requestID}`);
    }
    throw error;
  }
}

main().catch(console.error);

Voor een geslaagde aanvraag is de volgende uitvoer representatief. De antwoordtekst en aanvraag-id variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.
Request ID: <request-id>

Naslaginformatie: Aanvraag-id's, fouten en nieuwe pogingen

Meer SDK-voorbeelden

Broncode | Pakket | API-verwijzing

Voor de voorbeelden is Python 3.9 of hoger vereist. Ze zijn getest met openai 2.46.0 en azure-identity 1.25.3. Gebruik openai 1.106.0 of hoger wanneer u een Microsoft Entra tokenprovider doorgeeft als api_key.

De pakketten installeren

Installeer de OpenAI- en Azure Identity-pakketten:

pip install openai azure-identity

Met de opdracht worden beide pakketten geïnstalleerd in de actieve Python-omgeving.

Een antwoord maken met Microsoft Entra ID

Gebruik DefaultAzureCredential en get_bearer_token_provider om te verifiëren zonder een API-sleutel op te slaan. De tokenprovider vernieuwt het toegangstoken zo nodig.

from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import OpenAI

endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://ai.azure.com/.default"
)
openai = OpenAI(base_url=endpoint, api_key=token_provider)

response = openai.responses.create(
    model="gpt-5-mini",
    input="Explain the purpose of an API in one sentence.",
)
print(response.output_text)

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Naslaginformatie: OpenAI client en get_bearer_token_provider

Een antwoord maken met een API-sleutel

API-sleutels worden niet aanbevolen voor productiegebruik. Sla de sleutel op in de AZURE_OPENAI_API_KEY omgevingsvariabele in plaats van deze in de broncode te plaatsen.

export AZURE_OPENAI_API_KEY="<your-api-key>"

Maak vervolgens de client en aanvraag:

import os
from openai import OpenAI

endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
api_key = os.environ["AZURE_OPENAI_API_KEY"]
openai = OpenAI(base_url=endpoint, api_key=api_key)

response = openai.responses.create(
    model="gpt-5-mini",
    input="Explain the purpose of an API in one sentence.",
)
print(response.output_text)

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: responses.create

Chatvoltooiingen gebruiken

Gebruik de Antwoorden-API voor nieuwe toepassingen. Gebruik Chatvoltooiingen wanneer u de interface op basis van berichten nodig hebt of een bestaande toepassing onderhoudt.

from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import OpenAI

endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
token_provider = get_bearer_token_provider(
    DefaultAzureCredential(), "https://ai.azure.com/.default"
)
openai = OpenAI(base_url=endpoint, api_key=token_provider)

completion = openai.chat.completions.create(
    model="gpt-5-mini",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain the purpose of an API."},
    ],
)
print(completion.choices[0].message.content)

De volgende uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Referentie: chat.completions.create

Een antwoord streamen

Ingesteld stream op Trueen verwerken van delta-gebeurtenissen voor tekst terwijl het model deze genereert:

import os
from openai import OpenAI

endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
openai = OpenAI(
    base_url=endpoint,
    api_key=os.environ["AZURE_OPENAI_API_KEY"],
)

# Stream text as the model generates it.
stream = openai.responses.create(
    model="gpt-5-mini",
    input="Explain the purpose of an API in one sentence.",
    stream=True,
)
for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)

De volgende gestreamde uitvoer is representatief. De exacte formulering kan variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.

Naslaginformatie: responses.create streaming

Fouten en nieuwe pogingen verwerken

De SDK probeert automatisch verbindingsfouten, time-outs, HTTP 408, 409, 429 en 5xx-antwoorden tweemaal met exponentieel uitstel. Stel max_retries deze optie in op de OpenAI client om dit gedrag te wijzigen. Catch openai.APIStatusError om de HTTP-status, aanvraag-id en reactie op een mislukte aanvraag te controleren.

In het volgende voorbeeld worden vier nieuwe pogingen ingesteld en wordt de aanvraag-id vastgelegd voor geslaagde en mislukte aanvragen:

import os
import openai as openai_sdk
from openai import OpenAI

endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
openai = OpenAI(
    base_url=endpoint,
    api_key=os.environ["AZURE_OPENAI_API_KEY"],
    max_retries=4,
)

try:
    # Send the request and record its request ID.
    response = openai.responses.create(
        model="gpt-5-mini",
        input="Explain the purpose of an API in one sentence.",
    )
    print(response.output_text)
    print(f"Request ID: {response._request_id}")
except openai_sdk.APIStatusError as error:
    print(f"Status: {error.status_code}; Request ID: {error.request_id}")
    raise

Voor een geslaagde aanvraag is de volgende uitvoer representatief. De antwoordtekst en aanvraag-id variëren:

An API allows software applications to communicate and exchange data through a defined set of rules.
Request ID: <request-id>

Naslaginformatie: Aanvraag-id's, fouten en nieuwe pogingen

Meer SDK-voorbeelden

Probleemoplossing

  • Controleer voor een 401 of 403 antwoord of de beoogde identiteit of API-sleutel toegang heeft tot de Azure OpenAI-resource.
  • Controleer voor een 404 antwoord of de basis-URL eindigt /openai/v1/ en dat deze model een geldige implementatienaam bevat.
  • Voor een pakket- of typefout werkt u de SDK bij en vergelijkt u de geïnstalleerde versie met de versie die op deze pagina is getest.
  • Controleer voor een modelparameterfout of het geïmplementeerde model de parameter ondersteunt. Parameterondersteuning kan verschillen tussen modelfamilies.