Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie die OpenAI-SDKs mit dem Azure OpenAI v1-Endpunkt, um Modell-Inference-Anwendungen in Python, C#, JavaScript, Java oder Go zu erstellen. Die Beispiele verwenden die Antwort-API für neue Anwendungen und zeigen Chatabschlusse für Anwendungen an, die weiterhin ihre nachrichtenbasierte Schnittstelle verwenden.
Voraussetzungen
- Ein Azure-Abonnement. Erstellen Sie eine kostenlos , wenn Sie keins haben.
- Eine Azure OpenAI-Ressource mit einer
gpt-5-miniModellbereitstellung. - Ihr Azure OpenAI-Ressourcenendpunkt, z
https://YOUR-RESOURCE-NAME.openai.azure.com. B. . - Bei Microsoft Entra ID Authentifizierung eine Identität, die über die Berechtigung zum Ausführen von Rückschlüssen verfügt. Rollenoptionen finden Sie unter Konfigurieren Microsoft Entra ID Authentifizierung.
- Für die API-Schlüsselauthentifizierung wird ein Azure OpenAI-Ressourcenschlüssel verwendet. Microsoft Entra ID wird für Produktionsanwendungen empfohlen.
- Eine unterstützte Sprachlaufzeit und der Paket-Manager für die von Ihnen ausgewählte Sprache.
Der Wert in jeder Anforderung ist Ihr model Azure Modellbereitstellungsname. Die Beispiele verwenden gpt-5-mini; ersetzen Sie sie, wenn Ihre Bereitstellung einen anderen Namen hat.
| QuellcodePaket | API-Oberfläche
Die Beispiele wurden mit OpenAI 2.12.0, Azure.Identity 1.21.0 und .NET 8 getestet. Das OpenAI-Paket zielt auch auf .NET Standard 2.0 und höher .NET Versionen ab.
Installieren der Pakete
Installieren Sie die OpenAI- und Azure Identity-Pakete:
dotnet add package OpenAI
dotnet add package Azure.Identity
Die Befehle fügen ihrem Projekt beide Paketverweise hinzu.
Erstellen einer Antwort mit Microsoft Entra ID
Verwenden und BearerTokenPolicy authentifizieren Sie DefaultAzureCredential sich, ohne einen API-Schlüssel zu speichern.
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());
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: ResponsesClient
Erstellen einer Antwort mit einem API-Schlüssel
API-Schlüssel werden nicht für die Produktionsverwendung empfohlen. Speichern Sie den Schlüssel in der AZURE_OPENAI_API_KEY Umgebungsvariable, anstatt ihn im Quellcode zu platzieren.
export AZURE_OPENAI_API_KEY="<your-api-key>"
Erstellen Sie dann den Client und fordern Sie Folgendes an:
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());
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: CreateResponseAsync
Verwenden von Chatabschlussen
Verwenden Sie für neue Anwendungen die Antwort-API. Verwenden Sie Chatabschlusse, wenn Sie die nachrichtenbasierte Schnittstelle benötigen oder eine vorhandene Anwendung verwalten.
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);
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: ChatClient
Streaming einer Antwort
Aufrufen und Verarbeiten von CreateResponseStreamingAsync Textdeltaaktualisierungen, wenn das Modell diese generiert:
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);
}
}
Die folgende gestreamte Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: CreateResponseStreamingAsync
Behandeln von Fehlern und Wiederholungen
Der Client führt automatisch http 408-, 429-, 500-, 502-, 503- und 504-Antworten mit exponentiellem Backoff durch. Konfigurieren Sie die Wiederholungsrichtlinie über die Clientoptionen, wenn Sie ein anderes Verhalten benötigen. Erfassen Sie ClientResultException , um den HTTP-Status und Fehlerdetails für eine fehlgeschlagene Anforderung zu überprüfen.
Behalten Sie die ClientResult<T> von einem Vorgang zurückgegebene Diagnose bei, und überprüfen Sie die unformatierten Antwortheader. Fehlgeschlagene Vorgänge machen Statusinformationen über ClientResultException.
Referenz: Fehlerbehandlungs- und Clientergebnisdetails
Weitere SDK-Beispiele
Quellcode | Paket | REST-API-Referenz | Go-API-Referenz
Die Beispiele erfordern Go 1.25 oder höher. Sie wurden mit github.com/openai/openai-go/v3 3.44.0 und azidentity 1.14.0 getestet.
Installieren der Module
Installieren Sie die Module OpenAI und Azure Identity:
go get github.com/openai/openai-go/v3
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
Das /v3 Suffix ist erforderlich, da es die aktuelle Hauptversion des Go-Moduls identifiziert.
Erstellen einer Antwort mit Microsoft Entra ID
Verwenden Sie DefaultAzureCredential die Azure Authentifizierungsoption, um sich zu authentifizieren, ohne einen API-Schlüssel zu speichern.
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())
}
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: ResponseService.New und WithTokenCredentialScopes
Erstellen einer Antwort mit einem API-Schlüssel
API-Schlüssel werden nicht für die Produktionsverwendung empfohlen. Speichern Sie den Schlüssel in der AZURE_OPENAI_API_KEY Umgebungsvariable, anstatt ihn im Quellcode zu platzieren.
export AZURE_OPENAI_API_KEY="<your-api-key>"
Erstellen Sie dann den Client und fordern Sie Folgendes an:
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())
}
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: Responses.New
Verwenden von Chatabschlussen
Verwenden Sie für neue Anwendungen die Antwort-API. Verwenden Sie Chatabschlusse, wenn Sie die nachrichtenbasierte Schnittstelle benötigen oder eine vorhandene Anwendung verwalten.
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)
}
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: Chat.Completions.New
Streaming einer Antwort
Aufrufen Responses.NewStreamingund Verarbeiten von Textdeltaereignissen, während das Modell sie generiert:
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) }
}
Die folgende gestreamte Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: Responses.NewStreaming
Behandeln von Fehlern und Wiederholungen
Das SDK ruft Verbindungsfehler und HTTP 408-, 409-, 429- und 5xx-Antworten zweimal mit exponentiellem Backoff auf. Verwenden Sie option.WithMaxRetries diese Einstellung, um den Standardwert zu ändern. Überprüfen Sie die Zurückgegebene error vor dem Lesen einer Antwort, und überprüfen errors.As Sie eine 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 eine erfolgreiche Anforderung ist die folgende Ausgabe repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: Fehler und Wiederholungen
Weitere SDK-Beispiele
Quellcode | Paket | REST-API-Referenz | Java-API-Referenz
Die Beispiele erfordern Java 8 oder höher. Sie wurden mit openai-java 4.43.0 und azure-identity 1.18.4 getestet.
Installieren der Pakete
Maven
Fügen Sie ihrem Maven-Projekt die OpenAI- und Azure Identity-Abhängigkeiten hinzu:
<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öst die Pakete und ihre transitiven Abhängigkeiten beim Erstellen des Projekts auf.
Gradle
Fügen Sie dem Block in der dependencies Gradle-Builddatei dieselben Pakete hinzu:
dependencies {
implementation("com.openai:openai-java:4.43.0")
implementation("com.azure:azure-identity:1.18.4")
}
Gradle löst die Pakete beim Erstellen des Projekts auf.
Erstellen einer Antwort mit Microsoft Entra ID
Verwenden und BearerTokenCredential authentifizieren Sie DefaultAzureCredential sich, ohne einen API-Schlüssel zu speichern.
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()));
}
}
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: AzureEntraIdExample und ResponsesExample
Erstellen einer Antwort mit einem API-Schlüssel
Verwenden Sie keine API-Schlüssel für die Produktion. Speichern Sie den Schlüssel in der AZURE_OPENAI_API_KEY Umgebungsvariable, anstatt ihn im Quellcode zu platzieren.
export AZURE_OPENAI_API_KEY="<your-api-key>"
Erstellen Sie dann den Client und fordern Sie Folgendes an:
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()));
}
}
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: OpenAIOkHttpClient
Verwenden von Chatabschlussen
Verwenden Sie für neue Anwendungen die Antwort-API. Verwenden Sie Chatabschlusse, wenn Sie die nachrichtenbasierte Schnittstelle benötigen oder eine vorhandene Anwendung verwalten.
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);
}
}
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: ChatCompletionCreateParams
Streaming einer Antwort
Aufrufen createStreamingund Verarbeiten von Textdeltaereignissen, während das Modell sie generiert:
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()));
}
}
}
Die folgende gestreamte Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: responses.createStreaming
Behandeln von Fehlern und Wiederholungen
Das SDK ruft Verbindungsfehler und HTTP 408-, 409-, 429- und 5xx-Antworten zweimal mit exponentiellem Backoff auf. Erfassen Sie OpenAIServiceException , um den HTTP-Status und Fehlerdetails für eine Dienstantwort zu überprüfen und für andere SDK-Fehler abzufangen OpenAIException .
Rufen Sie maxRetries auf OpenAIOkHttpClient.builder() , um die Standardeinstellung zu ändern. Bewahren Sie die Dienstausnahme auf, damit Ihre Anwendung ihren Status protokollieren und Metadaten anfordern kann.
Referenz: Fehlerbehandlung und Wiederholungen
Weitere SDK-Beispiele
Quellcode | Paket | REST-API-Referenz | Azure OpenAI v1-Leitfaden
Die Beispiele erfordern Node.js 20 oder höher. Sie wurden mit openai 6.46.0 und @azure/identity 4.13.1 getestet. Verwenden Sie openai 5.18.0 oder höher, wenn Sie einen Microsoft Entra Tokenanbieter als apiKeyübergeben.
Installieren der Pakete
Installieren Sie die OpenAI- und Azure Identity-Pakete:
npm install openai @azure/identity
Mit dem Befehl werden ihrem Projekt beide Pakete hinzugefügt.
Erstellen einer Antwort mit Microsoft Entra ID
Verwenden und getBearerTokenProvider authentifizieren Sie DefaultAzureCredential sich, ohne einen API-Schlüssel zu speichern. Der Tokenanbieter aktualisiert das Zugriffstoken bei Bedarf.
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);
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: OpenAI Client- und Azure OpenAI v1-Authentifizierung
Erstellen einer Antwort mit einem API-Schlüssel
API-Schlüssel werden nicht für die Produktionsverwendung empfohlen. Speichern Sie den Schlüssel in der AZURE_OPENAI_API_KEY Umgebungsvariable, anstatt ihn im Quellcode zu platzieren.
export AZURE_OPENAI_API_KEY="<your-api-key>"
Erstellen Sie dann den Client und fordern Sie Folgendes an:
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);
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: responses.create
Verwenden von Chatabschlussen
Verwenden Sie für neue Anwendungen die Antwort-API. Verwenden Sie Chatabschlusse, wenn Sie die nachrichtenbasierte Schnittstelle benötigen oder eine vorhandene Anwendung verwalten.
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);
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Das Beibehalten messages innerhalb der Anforderung stellt die kontextbezogene Eingabe bereit, die für die role Werte erforderlich ist. Wenn Sie das Array separat definieren, deklarieren Sie es als OpenAI.Chat.ChatCompletionMessageParam[].
Referenz: chat.completions.create
Streaming einer Antwort
Legen Sie stream fest, trueund verarbeiten Sie Textdelta-Ereignisse, wenn das Modell sie generiert:
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);
Die folgende gestreamte Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: responses.create Streaming
Behandeln von Fehlern und Wiederholungen
Das SDK führt automatisch Verbindungsfehler, Timeouts, HTTP 408, 409, 429 und 5xx-Antworten zweimal mit exponentiellem Backoff durch. Legen Sie maxRetries den OpenAI Client fest, um dieses Verhalten zu ändern. Erfassen Sie APIError , um den HTTP-Status, die Anforderungs-ID und Fehlerdetails für eine fehlgeschlagene Anforderung zu überprüfen.
Im folgenden Beispiel werden vier Wiederholungsversuche festgelegt und die Anforderungs-ID für erfolgreiche und fehlgeschlagene Anforderungen aufgezeichnet:
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 eine erfolgreiche Anforderung ist die folgende Ausgabe repräsentativ. Der Antworttext und die Anforderungs-ID variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Request ID: <request-id>
Referenz: Anfordern von IDs, Fehlern und Wiederholungen
Weitere SDK-Beispiele
Quellcode | Paket | API-Referenz
Die Beispiele erfordern Python 3.9 oder höher. Sie wurden mit openai 2.46.0 und azure-identity 1.25.3 getestet. Verwenden Sie openai 1.106.0 oder höher, wenn Sie einen Microsoft Entra Tokenanbieter als api_keyübergeben.
Installieren der Pakete
Installieren Sie die OpenAI- und Azure Identity-Pakete:
pip install openai azure-identity
Der Befehl installiert beide Pakete in der aktiven Python Umgebung.
Erstellen einer Antwort mit Microsoft Entra ID
Verwenden und get_bearer_token_provider authentifizieren Sie DefaultAzureCredential sich, ohne einen API-Schlüssel zu speichern. Der Tokenanbieter aktualisiert das Zugriffstoken bei Bedarf.
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)
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: OpenAI Client und get_bearer_token_provider
Erstellen einer Antwort mit einem API-Schlüssel
API-Schlüssel werden nicht für die Produktionsverwendung empfohlen. Speichern Sie den Schlüssel in der AZURE_OPENAI_API_KEY Umgebungsvariable, anstatt ihn im Quellcode zu platzieren.
export AZURE_OPENAI_API_KEY="<your-api-key>"
Erstellen Sie dann den Client und fordern Sie Folgendes an:
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)
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: responses.create
Verwenden von Chatabschlussen
Verwenden Sie für neue Anwendungen die Antwort-API. Verwenden Sie Chatabschlusse, wenn Sie die nachrichtenbasierte Schnittstelle benötigen oder eine vorhandene Anwendung verwalten.
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)
Die folgende Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: chat.completions.create
Streaming einer Antwort
Legen Sie stream fest, Trueund verarbeiten Sie Textdelta-Ereignisse, wenn das Modell sie generiert:
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)
Die folgende gestreamte Ausgabe ist repräsentativ. Der genaue Wortlaut kann variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Referenz: responses.create Streaming
Behandeln von Fehlern und Wiederholungen
Das SDK führt automatisch Verbindungsfehler, Timeouts, HTTP 408, 409, 429 und 5xx-Antworten zweimal mit exponentiellem Backoff durch. Legen Sie max_retries den OpenAI Client fest, um dieses Verhalten zu ändern. Erfassen Sie openai.APIStatusError den HTTP-Status, die Anforderungs-ID und die Antwort auf eine fehlgeschlagene Anforderung.
Im folgenden Beispiel werden vier Wiederholungsversuche festgelegt und die Anforderungs-ID für erfolgreiche und fehlgeschlagene Anforderungen aufgezeichnet:
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 eine erfolgreiche Anforderung ist die folgende Ausgabe repräsentativ. Der Antworttext und die Anforderungs-ID variieren:
An API allows software applications to communicate and exchange data through a defined set of rules.
Request ID: <request-id>
Referenz: Anfordern von IDs, Fehlern und Wiederholungen
Weitere SDK-Beispiele
Problembehandlung
- Vergewissern Sie sich bei einer
401Antwort403, dass der beabsichtigte Identitäts- oder API-Schlüssel auf die Azure OpenAI-Ressource zugreifen kann. - Vergewissern Sie sich bei einer
404Antwort, dass die Basis-URL endet/openai/v1/undmodeleinen gültigen Bereitstellungsnamen enthält. - Aktualisieren Sie für einen Paket- oder Typfehler das SDK, und vergleichen Sie die installierte Version mit der auf dieser Seite getesteten Version.
- Überprüfen Sie bei einem Modellparameterfehler, ob das bereitgestellte Modell den Parameter unterstützt. Die Parameterunterstützung kann sich zwischen Modellfamilien unterscheiden.