språkstöd för Azure OpenAI SDK

Använd OpenAI SDK:er med slutpunkten Azure OpenAI v1 för att skapa modellinferensprogram i Python, C#, JavaScript, Java eller Go. Exemplen använder API:et Svar för nya program och visar chattavslutningar för program som fortfarande använder sitt meddelandebaserade gränssnitt.

Förutsättningar

  • Ett Azure-abonnemang. Skapa en kostnadsfritt om du inte har en.
  • En Azure OpenAI-resurs med en gpt-5-mini modelldistribution.
  • Din Azure OpenAI-resursslutpunkt, till exempel https://YOUR-RESOURCE-NAME.openai.azure.com.
  • För Microsoft Entra ID autentisering, en identitet som har behörighet att köra slutsatsdragning. Rollalternativ finns i Konfigurera Microsoft Entra ID autentisering.
  • För API-nyckelautentisering, en Azure OpenAI-resursnyckel. Microsoft Entra ID rekommenderas för produktionsprogram.
  • En språkkörning som stöds och pakethanteraren för det språk du väljer.

Värdet model i varje begäran är namnet på din Azure modelldistribution. Exemplen använder gpt-5-mini; ersätt den om distributionen har ett annat namn.

Källkod | Paket | API-yta

Exemplen testades med OpenAI 2.12.0, Azure.Identity 1.21.0 och .NET 8. OpenAI-paketet riktar sig även till .NET Standard 2.0 och senare .NET versioner.

Installera programvarupaketen

Installera OpenAI- och Azure Identity-paketen:

dotnet add package OpenAI
dotnet add package Azure.Identity

Kommandona lägger till båda paketreferenserna i projektet.

Skapa ett svar med Microsoft Entra ID

Använd DefaultAzureCredential och BearerTokenPolicy för att autentisera utan att lagra en API-nyckel.

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: ResponsesClient

Skapa ett svar med en API-nyckel

API-nycklar rekommenderas inte för produktionsanvändning. Lagra nyckeln i AZURE_OPENAI_API_KEY miljövariabeln i stället för att placera den i källkoden.

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

Skapa sedan klienten och begäran:

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: CreateResponseAsync

Använda chattens slutföranden

Använd svars-API:et för nya program. Använd Chat Completions när du behöver dess meddelandebaserade gränssnitt eller underhåller ett befintligt program.

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: ChatClient

Strömma ett svar

Anropa CreateResponseStreamingAsync och bearbeta textdeltauppdateringar när modellen genererar dem:

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

Följande strömmade utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: CreateResponseStreamingAsync

Hantera fel och återförsök

Klienten försöker automatiskt http 408, 429, 500, 502, 503 och 504 svar med exponentiell backoff. Konfigurera återförsöksprincipen via klientalternativen när du behöver ett annat beteende. Fånga ClientResultException för att granska HTTP-status och felinformation för en misslyckad begäran.

För diagnostik behåller du den ClientResult<T> som returneras av en åtgärd och inspekterar dess råsvarshuvuden. Misslyckade åtgärder exponerar statusinformation via ClientResultException.

Referens: Felhantering och information om klientresultat

Fler SDK-exempel

Källkod | Paket | REST API-referens | Go API-referens

Exemplen kräver Go 1.25 eller senare. De testades med github.com/openai/openai-go/v3 3.44.0 och azidentity 1.14.0.

Installera modulerna

Installera modulerna OpenAI och Azure Identity:

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

Suffixet /v3 krävs eftersom det identifierar den aktuella huvudversionen av Go-modulen.

Skapa ett svar med Microsoft Entra ID

Använd DefaultAzureCredential och alternativet Azure autentisering för att autentisera utan att lagra en API-nyckel.

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: ResponseService.New och WithTokenCredentialScopes

Skapa ett svar med en API-nyckel

API-nycklar rekommenderas inte för produktionsanvändning. Lagra nyckeln i AZURE_OPENAI_API_KEY miljövariabeln i stället för att placera den i källkoden.

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

Skapa sedan klienten och begäran:

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: Responses.New

Använda chattens slutföranden

Använd svars-API:et för nya program. Använd Chat Completions när du behöver dess meddelandebaserade gränssnitt eller underhåller ett befintligt program.

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: Chat.Completions.New

Strömma ett svar

Anropa Responses.NewStreamingoch bearbeta textdeltahändelser när modellen genererar dem:

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

Följande strömmade utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: Responses.NewStreaming

Hantera fel och återförsök

SDK:t försöker igen med anslutningsfel och HTTP 408-, 409-, 429- och 5xx-svar två gånger med exponentiell backoff. Använd option.WithMaxRetries för att ändra standardinställningen. Kontrollera returnerade error innan du läser ett svar och använd errors.As för att inspektera en 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())
}

För en lyckad begäran är följande utdata representativa. Den exakta formuleringen kan variera:

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

Referens: Fel och återförsök

Fler SDK-exempel

Källkod | Paket | REST API-referens | Java API-referens

Exemplen kräver Java 8 eller senare. De testades med openai-java 4.43.0 och azure-identity 1.18.4.

Installera programvarupaketen

Maven

Lägg till OpenAI- och Azure identitetsberoenden i ditt Maven-projekt:

<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 löser paketen och deras transitiva beroenden när du skapar projektet.

Gradle

Lägg till samma paket dependencies i blocket i Gradle-byggfilen:

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

Gradle löser paketen när du skapar projektet.

Skapa ett svar med Microsoft Entra ID

Använd DefaultAzureCredential och BearerTokenCredential för att autentisera utan att lagra en API-nyckel.

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: AzureEntraIdExample och ResponsesExample

Skapa ett svar med en API-nyckel

Använd inte API-nycklar för produktion. Lagra nyckeln i AZURE_OPENAI_API_KEY miljövariabeln i stället för att placera den i källkoden.

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

Skapa sedan klienten och begäran:

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: OpenAIOkHttpClient

Använda chattens slutföranden

Använd svars-API:et för nya program. Använd Chat Completions när du behöver dess meddelandebaserade gränssnitt eller underhåller ett befintligt program.

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: ChatCompletionCreateParams

Strömma ett svar

Anropa createStreamingoch bearbeta textdeltahändelser när modellen genererar dem:

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

Följande strömmade utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: responses.createStreaming

Hantera fel och återförsök

SDK:t försöker igen med anslutningsfel och HTTP 408-, 409-, 429- och 5xx-svar två gånger med exponentiell backoff. Fånga OpenAIServiceException för att kontrollera HTTP-status och felinformation för ett tjänstsvar och fånga upp OpenAIException andra SDK-fel.

Anropa maxRetries för OpenAIOkHttpClient.builder() att ändra standardinställningen. Bevara tjänstfelet så att ditt program kan logga dess status och begära metadata.

Referens: Felhantering och återförsök

Fler SDK-exempel

Källkod | Paket | REST API-referens | Azure Vägledning för OpenAI v1

Exemplen kräver Node.js 20 eller senare. De testades med openai 6.46.0 och @azure/identity 4.13.1. Använd openai 5.18.0 eller senare när du skickar en Microsoft Entra tokenprovider som apiKey.

Installera programvarupaketen

Installera OpenAI- och Azure Identity-paketen:

npm install openai @azure/identity

Kommandot lägger till båda paketen i projektet.

Skapa ett svar med Microsoft Entra ID

Använd DefaultAzureCredential och getBearerTokenProvider för att autentisera utan att lagra en API-nyckel. Tokenprovidern uppdaterar åtkomsttoken vid behov.

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: OpenAI klient- och Azure OpenAI v1-autentisering

Skapa ett svar med en API-nyckel

API-nycklar rekommenderas inte för produktionsanvändning. Lagra nyckeln i AZURE_OPENAI_API_KEY miljövariabeln i stället för att placera den i källkoden.

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

Skapa sedan klienten och begäran:

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: responses.create

Använda chattens slutföranden

Använd svars-API:et för nya program. Använd Chat Completions när du behöver dess meddelandebaserade gränssnitt eller underhåller ett befintligt program.

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

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Om du håller messages dig inom begäran får du den kontextuella typning som krävs för role värdena. Om du definierar matrisen separat deklarerar du den som OpenAI.Chat.ChatCompletionMessageParam[].

Referens: chat.completions.create

Strömma ett svar

Ange stream till trueoch bearbeta textdeltahändelser när modellen genererar dem:

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

Följande strömmade utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: responses.create direktuppspelning

Hantera fel och återförsök

SDK:t försöker automatiskt igen med anslutningsfel, tidsgränser, HTTP 408, 409, 429 och 5xx två gånger med exponentiell backoff. Ställ in maxRetriesOpenAI klienten för att ändra det här beteendet. Fånga APIError för att kontrollera HTTP-status, begärande-ID och felinformation för en misslyckad begäran.

I följande exempel anges fyra återförsök och begärande-ID:t registreras för lyckade och misslyckade begäranden:

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

För en lyckad begäran är följande utdata representativa. Svarstexten och begärande-ID:t varierar:

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

Referens: Begärande-ID, fel och återförsök

Fler SDK-exempel

Källkod | Paket | API-referens

Exemplen kräver Python 3.9 eller senare. De testades med openai 2.46.0 och azure-identity 1.25.3. Använd openai 1.106.0 eller senare när du skickar en Microsoft Entra tokenprovider som api_key.

Installera programvarupaketen

Installera OpenAI- och Azure Identity-paketen:

pip install openai azure-identity

Kommandot installerar båda paketen i den aktiva Python miljön.

Skapa ett svar med Microsoft Entra ID

Använd DefaultAzureCredential och get_bearer_token_provider för att autentisera utan att lagra en API-nyckel. Tokenprovidern uppdaterar åtkomsttoken vid behov.

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)

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: OpenAI klient och get_bearer_token_provider

Skapa ett svar med en API-nyckel

API-nycklar rekommenderas inte för produktionsanvändning. Lagra nyckeln i AZURE_OPENAI_API_KEY miljövariabeln i stället för att placera den i källkoden.

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

Skapa sedan klienten och begäran:

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)

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: responses.create

Använda chattens slutföranden

Använd svars-API:et för nya program. Använd Chat Completions när du behöver dess meddelandebaserade gränssnitt eller underhåller ett befintligt program.

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)

Följande utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: chat.completions.create

Strömma ett svar

Ange stream till Trueoch bearbeta textdeltahändelser när modellen genererar dem:

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)

Följande strömmade utdata är representativa. Den exakta formuleringen kan variera:

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

Referens: responses.create direktuppspelning

Hantera fel och återförsök

SDK:t försöker automatiskt igen med anslutningsfel, tidsgränser, HTTP 408, 409, 429 och 5xx två gånger med exponentiell backoff. Ställ in max_retriesOpenAI klienten för att ändra det här beteendet. Fånga openai.APIStatusError för att inspektera HTTP-status, begärande-ID och svar för en misslyckad begäran.

I följande exempel anges fyra återförsök och begärande-ID:t registreras för lyckade och misslyckade begäranden:

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

För en lyckad begäran är följande utdata representativa. Svarstexten och begärande-ID:t varierar:

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

Referens: Begärande-ID, fel och återförsök

Fler SDK-exempel

Felsökning

  • För ett 401 eller-svar 403 kontrollerar du att den avsedda identiteten eller API-nyckeln kan komma åt Azure OpenAI-resursen.
  • För ett 404 svar kontrollerar du att bas-URL:en slutar och /openai/v1/ innehåller model ett giltigt distributionsnamn.
  • För ett paket- eller typfel uppdaterar du SDK och jämför den installerade versionen med den version som testas på den här sidan.
  • Kontrollera om den distribuerade modellen stöder parametern för ett modellparameterfel. Parameterstöd kan skilja sig mellan modellfamiljer.