Azure prise en charge du langage du Kit de développement logiciel (SDK) OpenAI

Utilisez les kits SDK OpenAI avec le point de terminaison openAI v1 Azure pour générer des applications d’inférence de modèle dans Python, C#, JavaScript, Java ou Go. Les exemples utilisent l’API Réponses pour les nouvelles applications et affichent les saisies semi-automatiques de conversation pour les applications qui utilisent toujours son interface basée sur les messages.

Conditions préalables

  • Un abonnement Azure. Créez-en un gratuitement si vous n’en avez pas.
  • Ressource OpenAI Azure avec un gpt-5-mini déploiement de modèle.
  • Votre Azure point de terminaison de ressource OpenAI, tel que https://YOUR-RESOURCE-NAME.openai.azure.com.
  • Pour l’authentification Microsoft Entra ID, une identité autorisée à exécuter l’inférence. Pour connaître les options de rôle, consultez Configurer l’authentification Microsoft Entra ID.
  • Pour l’authentification par clé API, une clé de ressource OpenAI Azure. Microsoft Entra ID est recommandé pour les applications de production.
  • Runtime de langage pris en charge et gestionnaire de package pour la langue que vous sélectionnez.

La model valeur de chaque requête est votre nom de déploiement de modèle Azure. Les exemples utilisent gpt-5-mini; remplacez-le si votre déploiement a un nom différent.

Code | sourcePaquet | Surface d’API

Les exemples ont été testés avec OpenAI 2.12.0, Azure.Identity 1.21.0 et .NET 8. Le package OpenAI cible également les versions .NET Standard 2.0 et ultérieures .NET.

Installer les packages

Installez les packages OpenAI et Azure Identity :

dotnet add package OpenAI
dotnet add package Azure.Identity

Les commandes ajoutent les deux références de package à votre projet.

Créer une réponse avec Microsoft Entra ID

Utilisez DefaultAzureCredential et BearerTokenPolicy authentifiez-vous sans stocker de clé API.

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : ResponsesClient

Créer une réponse avec une clé API

Les clés API ne sont pas recommandées pour une utilisation en production. Stockez la clé dans la variable d’environnement au lieu de la placer dans le AZURE_OPENAI_API_KEY code source.

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

Créez ensuite le client et demandez :

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : CreateResponseAsync

Utiliser les saisies semi-automatiques de conversation

Pour les nouvelles applications, utilisez l’API Réponses. Utilisez les saisies semi-automatiques de conversation lorsque vous avez besoin de son interface basée sur les messages ou que vous gérez une application existante.

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : ChatClient

Diffuser en continu une réponse

Appelez et traitez CreateResponseStreamingAsync les mises à jour delta de texte à mesure que le modèle les génère :

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

La sortie diffusée en continu suivante est représentative. La formulation exacte peut varier :

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

Référence : CreateResponseStreamingAsync

Gérer les erreurs et les nouvelles tentatives

Le client retente automatiquement http 408, 429, 500, 502, 503 et 504 réponses avec interruption exponentielle. Configurez la stratégie de nouvelle tentative via les options du client lorsque vous avez besoin d’un comportement différent. Interceptez ClientResultException pour inspecter l’état HTTP et les détails d’erreur d’une demande ayant échoué.

Pour les diagnostics, conservez le ClientResult<T> retour par une opération et inspectez ses en-têtes de réponse brutes. Les opérations ayant échoué exposent les informations d’état via ClientResultException.

Référence : Détails de la gestion des erreurs et des résultats du client

Autres exemples de SDK

Code | sourcePaquet | Informations de référence sur | l’API RESTInformations de référence sur l’API Go

Les exemples nécessitent Go 1.25 ou version ultérieure. Ils ont été testés avec github.com/openai/openai-go/v3 3.44.0 et azidentity 1.14.0.

Installer les modules

Installez les modules OpenAI et Azure Identity :

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

Le /v3 suffixe est requis, car il identifie la version principale actuelle du module Go.

Créer une réponse avec Microsoft Entra ID

Utilisez DefaultAzureCredential et l’option d’authentification Azure pour vous authentifier sans stocker de clé API.

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : ResponseService.New et WithTokenCredentialScopes

Créer une réponse avec une clé API

Les clés API ne sont pas recommandées pour une utilisation en production. Stockez la clé dans la variable d’environnement au lieu de la placer dans le AZURE_OPENAI_API_KEY code source.

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

Créez ensuite le client et demandez :

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : Responses.New

Utiliser les saisies semi-automatiques de conversation

Pour les nouvelles applications, utilisez l’API Réponses. Utilisez les saisies semi-automatiques de conversation lorsque vous avez besoin de son interface basée sur les messages ou que vous gérez une application existante.

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : Chat.Completions.New

Diffuser en continu une réponse

Appelez et traitez Responses.NewStreamingles événements delta de texte au fur et à mesure que le modèle les génère :

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

La sortie diffusée en continu suivante est représentative. La formulation exacte peut varier :

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

Référence : Responses.NewStreaming

Gérer les erreurs et les nouvelles tentatives

Le SDK retente les erreurs de connexion et les réponses HTTP 408, 409, 429 et 5xx deux fois avec une interruption exponentielle. Permet option.WithMaxRetries de modifier la valeur par défaut. Vérifiez le retour error avant de lire une réponse et utilisez-le errors.As pour inspecter un 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())
}

Pour une demande réussie, la sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : Erreurs et nouvelles tentatives

Autres exemples de SDK

Code | sourcePaquet | Informations de référence sur | l’API RESTInformations de référence sur l’API Java

Les exemples nécessitent Java 8 ou version ultérieure. Ils ont été testés avec openai-java 4.43.0 et azure-identity 1.18.4.

Installer les packages

Maven

Ajoutez les dépendances OpenAI et Azure Identity à votre projet Maven :

<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 résout les packages et leurs dépendances transitives lorsque vous générez le projet.

Gradle

Ajoutez les mêmes packages au dependencies bloc dans votre fichier de build Gradle :

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

Gradle résout les packages lorsque vous générez le projet.

Créer une réponse avec Microsoft Entra ID

Utilisez DefaultAzureCredential et BearerTokenCredential authentifiez-vous sans stocker de clé API.

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : AzureEntraIdExample et ResponsesExample

Créer une réponse avec une clé API

N’utilisez pas de clés API pour la production. Stockez la clé dans la variable d’environnement au lieu de la placer dans le AZURE_OPENAI_API_KEY code source.

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

Créez ensuite le client et demandez :

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : OpenAIOkHttpClient

Utiliser les saisies semi-automatiques de conversation

Pour les nouvelles applications, utilisez l’API Réponses. Utilisez les saisies semi-automatiques de conversation lorsque vous avez besoin de son interface basée sur les messages ou que vous gérez une application existante.

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : ChatCompletionCreateParams

Diffuser en continu une réponse

Appelez et traitez createStreamingles événements delta de texte au fur et à mesure que le modèle les génère :

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

La sortie diffusée en continu suivante est représentative. La formulation exacte peut varier :

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

Référence : responses.createStreaming

Gérer les erreurs et les nouvelles tentatives

Le SDK retente les erreurs de connexion et les réponses HTTP 408, 409, 429 et 5xx deux fois avec une interruption exponentielle. Interceptez l’inspection de l’état HTTP et des détails d’erreur d’une réponse de service et interceptez OpenAIServiceExceptionOpenAIException les autres échecs du Kit de développement logiciel (SDK).

maxRetries Appelez OpenAIOkHttpClient.builder() pour modifier la valeur par défaut. Conservez l’exception de service afin que votre application puisse consigner son état et demander des métadonnées.

Référence : Gestion des erreurs et nouvelles tentatives

Autres exemples de SDK

Code | sourcePaquet | Informations de référence sur | l’API RESTAzure aide sur OpenAI v1

Les exemples nécessitent Node.js 20 ou version ultérieure. Ils ont été testés avec openai 6.46.0 et @azure/identity 4.13.1. Utilisez openai la version 5.18.0 ou ultérieure lorsque vous transmettez un fournisseur de jetons Microsoft Entra en tant que apiKey.

Installer les packages

Installez les packages OpenAI et Azure Identity :

npm install openai @azure/identity

La commande ajoute les deux packages à votre projet.

Créer une réponse avec Microsoft Entra ID

Utilisez DefaultAzureCredential et getBearerTokenProvider authentifiez-vous sans stocker de clé API. Le fournisseur de jetons actualise le jeton d’accès si nécessaire.

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : OpenAI authentification client et Azure OpenAI v1

Créer une réponse avec une clé API

Les clés API ne sont pas recommandées pour une utilisation en production. Stockez la clé dans la variable d’environnement au lieu de la placer dans le AZURE_OPENAI_API_KEY code source.

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

Créez ensuite le client et demandez :

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : responses.create

Utiliser les saisies semi-automatiques de conversation

Pour les nouvelles applications, utilisez l’API Réponses. Utilisez les saisies semi-automatiques de conversation lorsque vous avez besoin de son interface basée sur les messages ou que vous gérez une application existante.

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

La sortie suivante est représentative. La formulation exacte peut varier :

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

La conservation messages à l’intérieur de la requête fournit la saisie contextuelle requise pour les role valeurs. Si vous définissez le tableau séparément, déclarez-le en tant que OpenAI.Chat.ChatCompletionMessageParam[].

Référence : chat.completions.create

Diffuser en continu une réponse

Définissez sur streamet traitez true les événements delta de texte au fur et à mesure que le modèle les génère :

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

La sortie diffusée en continu suivante est représentative. La formulation exacte peut varier :

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

Référence : responses.create diffusion en continu

Gérer les erreurs et les nouvelles tentatives

Le KIT SDK retente automatiquement les erreurs de connexion, les délais d’expiration, HTTP 408, 409, 429 et 5xx deux fois avec une interruption exponentielle. Définissez maxRetries sur le OpenAI client pour modifier ce comportement. Interceptez APIError pour inspecter l’état HTTP, l’ID de requête et les détails d’erreur d’une requête ayant échoué.

L’exemple suivant définit quatre nouvelles tentatives et enregistre l’ID de requête pour les demandes réussies et ayant échoué :

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

Pour une demande réussie, la sortie suivante est représentative. Le texte de réponse et l’ID de demande varient :

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

Référence : ID de requête, erreurs et nouvelles tentatives

Autres exemples de SDK

Code | sourcePaquet | Informations de référence sur l’API

Les exemples nécessitent Python 3.9 ou version ultérieure. Ils ont été testés avec openai 2.46.0 et azure-identity 1.25.3. Utilisez openai la version 1.106.0 ou ultérieure lorsque vous transmettez un fournisseur de jetons Microsoft Entra en tant que api_key.

Installer les packages

Installez les packages OpenAI et Azure Identity :

pip install openai azure-identity

La commande installe les deux packages dans l’environnement actif Python.

Créer une réponse avec Microsoft Entra ID

Utilisez DefaultAzureCredential et get_bearer_token_provider authentifiez-vous sans stocker de clé API. Le fournisseur de jetons actualise le jeton d’accès si nécessaire.

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)

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : OpenAI client et get_bearer_token_provider

Créer une réponse avec une clé API

Les clés API ne sont pas recommandées pour une utilisation en production. Stockez la clé dans la variable d’environnement au lieu de la placer dans le AZURE_OPENAI_API_KEY code source.

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

Créez ensuite le client et demandez :

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)

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : responses.create

Utiliser les saisies semi-automatiques de conversation

Pour les nouvelles applications, utilisez l’API Réponses. Utilisez les saisies semi-automatiques de conversation lorsque vous avez besoin de son interface basée sur les messages ou que vous gérez une application existante.

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)

La sortie suivante est représentative. La formulation exacte peut varier :

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

Référence : chat.completions.create

Diffuser en continu une réponse

Définissez sur streamet traitez True les événements delta de texte au fur et à mesure que le modèle les génère :

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)

La sortie diffusée en continu suivante est représentative. La formulation exacte peut varier :

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

Référence : responses.create diffusion en continu

Gérer les erreurs et les nouvelles tentatives

Le KIT SDK retente automatiquement les erreurs de connexion, les délais d’expiration, HTTP 408, 409, 429 et 5xx deux fois avec une interruption exponentielle. Définissez max_retries sur le OpenAI client pour modifier ce comportement. Interceptez openai.APIStatusError pour inspecter l’état HTTP, l’ID de requête et la réponse d’une demande ayant échoué.

L’exemple suivant définit quatre nouvelles tentatives et enregistre l’ID de requête pour les demandes réussies et ayant échoué :

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

Pour une demande réussie, la sortie suivante est représentative. Le texte de réponse et l’ID de demande varient :

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

Référence : ID de requête, erreurs et nouvelles tentatives

Autres exemples de SDK

Dépannage

  • Pour une ou 401 une 403 réponse, vérifiez que l’identité ou la clé API prévue peut accéder à la ressource OpenAI Azure.
  • Pour obtenir une 404 réponse, vérifiez que l’URL de base se termine /openai/v1/ et qu’elle model contient un nom de déploiement valide.
  • Pour une erreur de package ou de type, mettez à jour le Kit de développement logiciel (SDK) et comparez la version installée avec la version testée sur cette page.
  • Pour une erreur de paramètre de modèle, vérifiez si le modèle déployé prend en charge le paramètre. La prise en charge des paramètres peut différer entre les familles de modèles.