OpenAI SDK dil desteğini Azure

Python, C#, JavaScript, Java veya Go'da model çıkarım uygulamaları oluşturmak için OpenAI SDK'larını Azure OpenAI v1 uç noktasıyla kullanın. Örnekler, yeni uygulamalar için Yanıtlar API'sini kullanır ve ileti tabanlı arabirimini kullanmaya devam eden uygulamalar için Sohbet Tamamlamalarını gösterir.

Önkoşullar

  • Azure aboneliği. Bir hesabınız yoksa, ücretsiz olarak bir hesap oluşturun.
  • Model dağıtımına sahip gpt-5-mini bir Azure OpenAI kaynağı.
  • gibi https://YOUR-RESOURCE-NAME.openai.azure.comAzure OpenAI kaynak uç noktanız.
  • Microsoft Entra ID kimlik doğrulaması için çıkarım çalıştırma iznine sahip bir kimliktir. Rol seçenekleri için bkz. Microsoft Entra ID kimlik doğrulamasını yapılandırma.
  • API anahtarı kimlik doğrulaması için openAI kaynak anahtarı Azure. üretim uygulamaları için Microsoft Entra ID önerilir.
  • Seçtiğiniz dil için desteklenen bir dil çalışma zamanı ve paket yöneticisi.

model Her istekteki değer, Azure modeli dağıtım adınızdır. Örneklerde kullanılır gpt-5-mini; dağıtımınızın adı farklıysa değiştirin.

Kaynak kodu | Paket | API yüzeyi

Örnekler 2.12.0, OpenAI 1.21.0 ve .NET 8 ile Azure.Identity test edilmiştir. OpenAI paketi ayrıca Standart 2.0 ve üzeri .NET .NET sürümlerini de hedefler.

Paketleri yükleme

OpenAI ve Azure Identity paketlerini yükleyin:

dotnet add package OpenAI
dotnet add package Azure.Identity

Komutlar her iki paket başvurularını da projenize ekler.

Microsoft Entra ID ile yanıt oluşturma

API anahtarını depolamadan kimlik doğrulaması yapmak için ve DefaultAzureCredential kullanınBearerTokenPolicy.

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: ResponsesClient

API anahtarıyla yanıt oluşturma

API anahtarları üretim kullanımı için önerilmez. Anahtarı kaynak koda AZURE_OPENAI_API_KEY yerleştirmek yerine ortam değişkeninde depolayın.

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

Ardından istemciyi oluşturun ve şu isteği isteyin:

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: CreateResponseAsync

Sohbet Tamamlamalarını Kullanma

Yeni uygulamalar için Yanıtlar API'sini kullanın. İleti tabanlı arabirimine ihtiyacınız olduğunda veya mevcut bir uygulamanın bakımını yaparken Sohbet Tamamlamalarını kullanın.

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: ChatClient

Yanıt akışı

Model bunları oluştururken metin değişim güncelleştirmelerini çağırın CreateResponseStreamingAsync ve işleyin:

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

Aşağıdaki akışlı çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: CreateResponseStreamingAsync

Hataları ve yeniden denemeleri işleme

İstemci http 408, 429, 500, 502, 503 ve 504 yanıtlarını üstel geri alma ile otomatik olarak yeniden dener. Farklı davranışlara ihtiyacınız olduğunda istemci seçenekleri aracılığıyla yeniden deneme ilkesini yapılandırın. Başarısız bir isteğin HTTP durumunu ve hata ayrıntılarını incelemek için yakalayın ClientResultException .

Tanılama için, bir işlem tarafından döndürüleni ClientResult<T> tutun ve ham yanıt üst bilgilerini inceleyin. Başarısız işlemler aracılığıyla ClientResultExceptiondurum bilgilerini kullanıma sunar.

Başvuru: Hata işleme ve istemci sonucu ayrıntıları

Diğer SDK örnekleri

Kaynak kodu | Paket | REST API başvurusu | Go API başvurusu

Örneklerde Go 1.25 veya üzeri gerekir. 3.44.0 ve github.com/openai/openai-go/v3 1.14.0 ile azidentity test edilmiştir.

Modülleri yükleme

OpenAI ve Azure Identity modüllerini yükleyin:

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

/v3 Go modülünün geçerli ana sürümünü tanımladığından sonek gereklidir.

Microsoft Entra ID ile yanıt oluşturma

API anahtarını depolamadan kimlik doğrulaması yapmak için ve Azure kimlik doğrulama seçeneğini kullanınDefaultAzureCredential.

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Başvuru: ResponseService.New ve WithTokenCredentialScopes

API anahtarıyla yanıt oluşturma

API anahtarları üretim kullanımı için önerilmez. Anahtarı kaynak koda AZURE_OPENAI_API_KEY yerleştirmek yerine ortam değişkeninde depolayın.

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

Ardından istemciyi oluşturun ve şu isteği isteyin:

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: Responses.New

Sohbet Tamamlamalarını Kullanma

Yeni uygulamalar için Yanıtlar API'sini kullanın. İleti tabanlı arabirimine ihtiyacınız olduğunda veya mevcut bir uygulamanın bakımını yaparken Sohbet Tamamlamalarını kullanın.

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: Chat.Completions.New

Yanıt akışı

çağrısı yapın Responses.NewStreamingve model bunları oluştururken metin deltası olaylarını işleyin:

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

Aşağıdaki akışlı çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: Responses.NewStreaming

Hataları ve yeniden denemeleri işleme

SDK, bağlantı hatalarını ve HTTP 408, 409, 429 ve 5xx yanıtlarını üstel geri alma ile iki kez yeniden dener. Varsayılanı değiştirmek için kullanın option.WithMaxRetries . Yanıtı okumadan önce döndürüleni error denetleyin ve öğesini kullanarak errors.As bir openai.Erroröğesini inceleyin.

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

Başarılı bir istek için aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Başvuru: Hatalar ve yeniden denemeler

Diğer SDK örnekleri

Kaynak kodu | Paket | REST API başvurusu | API başvurusu Java

Örnekler için 8 veya sonraki Java gerekir. 4.43.0 ve openai-java 1.18.4 ile azure-identity test edilmiştir.

Paketleri yükleme

Maven

Maven projenize OpenAI ve Azure Identity bağımlılıklarını ekleyin:

<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, projeyi oluştururken paketleri ve geçişli bağımlılıklarını çözümler.

Gradle

Gradle derleme dosyanızdaki bloğa dependencies aynı paketleri ekleyin:

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

Gradle, projeyi oluştururken paketleri çözümler.

Microsoft Entra ID ile yanıt oluşturma

API anahtarını depolamadan kimlik doğrulaması yapmak için ve DefaultAzureCredential kullanınBearerTokenCredential.

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Başvuru: AzureEntraIdExample ve ResponsesExample

API anahtarıyla yanıt oluşturma

Üretim için API anahtarlarını kullanmayın. Anahtarı kaynak koda AZURE_OPENAI_API_KEY yerleştirmek yerine ortam değişkeninde depolayın.

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

Ardından istemciyi oluşturun ve şu isteği isteyin:

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: OpenAIOkHttpClient

Sohbet Tamamlamalarını Kullanma

Yeni uygulamalar için Yanıtlar API'sini kullanın. İleti tabanlı arabirimine ihtiyacınız olduğunda veya mevcut bir uygulamanın bakımını yaparken Sohbet Tamamlamalarını kullanın.

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: ChatCompletionCreateParams

Yanıt akışı

çağrısı yapın createStreamingve model bunları oluştururken metin deltası olaylarını işleyin:

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

Aşağıdaki akışlı çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: responses.createStreaming

Hataları ve yeniden denemeleri işleme

SDK, bağlantı hatalarını ve HTTP 408, 409, 429 ve 5xx yanıtlarını üstel geri alma ile iki kez yeniden dener. Hizmet yanıtının HTTP durumunu ve hata ayrıntılarını incelemek için yakalayın OpenAIServiceException ve diğer SDK hatalarına karşı yakalayın OpenAIException .

maxRetries Varsayılanı değiştirmek için açınOpenAIOkHttpClient.builder(). Uygulamanızın durumunu günlüğe kaydedebilmesi ve meta verileri istemesi için hizmet özel durumunu koruyun.

Başvuru: Hata işleme ve yeniden denemeler

Diğer SDK örnekleri

Kaynak kodu | Paket | REST API başvurusu | OpenAI v1 yönergelerini Azure

Örnekler için Node.js 20 veya üzeri gerekir. 6.46.0 ve openai 4.13.1 ile @azure/identity test edilmiştir. bir Microsoft Entra belirteci sağlayıcısını olarak openaigeçirirken 5.18.0 veya üzerini kullanınapiKey.

Paketleri yükleme

OpenAI ve Azure Identity paketlerini yükleyin:

npm install openai @azure/identity

komutu her iki paketi de projenize ekler.

Microsoft Entra ID ile yanıt oluşturma

API anahtarını depolamadan kimlik doğrulaması yapmak için ve DefaultAzureCredential kullanıngetBearerTokenProvider. Belirteç sağlayıcısı gerektiğinde erişim belirtecini yeniler.

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Başvuru: OpenAI istemci ve Azure OpenAI v1 kimlik doğrulaması

API anahtarıyla yanıt oluşturma

API anahtarları üretim kullanımı için önerilmez. Anahtarı kaynak koda AZURE_OPENAI_API_KEY yerleştirmek yerine ortam değişkeninde depolayın.

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

Ardından istemciyi oluşturun ve şu isteği isteyin:

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: responses.create

Sohbet Tamamlamalarını Kullanma

Yeni uygulamalar için Yanıtlar API'sini kullanın. İleti tabanlı arabirimine ihtiyacınız olduğunda veya mevcut bir uygulamanın bakımını yaparken Sohbet Tamamlamalarını kullanın.

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

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

messages İsteğin içinde tutmak, değerler için role gereken bağlamsal yazmayı sağlar. Diziyi ayrı olarak tanımlarsanız, olarak OpenAI.Chat.ChatCompletionMessageParam[]bildirin.

Referans: chat.completions.create

Yanıt akışı

streamolarak ayarlayın true ve model bunları oluştururken metin değişim olaylarını işleyin:

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

Aşağıdaki akışlı çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Başvuru: responses.create akış

Hataları ve yeniden denemeleri işleme

SDK, üstel geri alma ile bağlantı hatalarını, zaman aşımlarını, HTTP 408, 409, 429 ve 5xx yanıtlarını iki kez otomatik olarak yeniden dener. Bu davranışı değiştirmek için istemcide maxRetries ayarlayınOpenAI. Başarısız bir isteğin HTTP durumunu, istek kimliğini ve hata ayrıntılarını incelemek için yakalayın APIError .

Aşağıdaki örnek dört yeniden deneme ayarlar ve başarılı ve başarısız istekler için istek kimliğini kaydeder:

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

Başarılı bir istek için aşağıdaki çıkış temsilidir. Yanıt metni ve istek kimliği farklılık gösterir:

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

Başvuru: İstek kimlikleri, hatalar ve yeniden denemeler

Diğer SDK örnekleri

Kaynak kodu | Paket | API başvurusu

Örnekler için Python 3.9 veya üzeri gerekir. 2.46.0 ve openai 1.25.3 ile azure-identity test edilmiştir. bir Microsoft Entra belirteci sağlayıcısını olarak openaigeçirirken 1.106.0 veya üzerini kullanınapi_key.

Paketleri yükleme

OpenAI ve Azure Identity paketlerini yükleyin:

pip install openai azure-identity

komutu her iki paketi de etkin Python ortamına yükler.

Microsoft Entra ID ile yanıt oluşturma

API anahtarını depolamadan kimlik doğrulaması yapmak için ve DefaultAzureCredential kullanınget_bearer_token_provider. Belirteç sağlayıcısı gerektiğinde erişim belirtecini yeniler.

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)

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Başvuru: OpenAI istemci ve get_bearer_token_provider

API anahtarıyla yanıt oluşturma

API anahtarları üretim kullanımı için önerilmez. Anahtarı kaynak koda AZURE_OPENAI_API_KEY yerleştirmek yerine ortam değişkeninde depolayın.

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

Ardından istemciyi oluşturun ve şu isteği isteyin:

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)

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: responses.create

Sohbet Tamamlamalarını Kullanma

Yeni uygulamalar için Yanıtlar API'sini kullanın. İleti tabanlı arabirimine ihtiyacınız olduğunda veya mevcut bir uygulamanın bakımını yaparken Sohbet Tamamlamalarını kullanın.

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)

Aşağıdaki çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Referans: chat.completions.create

Yanıt akışı

streamolarak ayarlayın True ve model bunları oluştururken metin değişim olaylarını işleyin:

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)

Aşağıdaki akışlı çıkış temsilidir. Tam ifadeler farklılık gösterebilir:

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

Başvuru: responses.create akış

Hataları ve yeniden denemeleri işleme

SDK, üstel geri alma ile bağlantı hatalarını, zaman aşımlarını, HTTP 408, 409, 429 ve 5xx yanıtlarını iki kez otomatik olarak yeniden dener. Bu davranışı değiştirmek için istemcide max_retries ayarlayınOpenAI. Başarısız bir isteğin HTTP durumunu, istek kimliğini ve yanıtını incelemek için yakalayın openai.APIStatusError .

Aşağıdaki örnek dört yeniden deneme ayarlar ve başarılı ve başarısız istekler için istek kimliğini kaydeder:

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

Başarılı bir istek için aşağıdaki çıkış temsilidir. Yanıt metni ve istek kimliği farklılık gösterir:

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

Başvuru: İstek kimlikleri, hatalar ve yeniden denemeler

Diğer SDK örnekleri

Sorun giderme

  • 401 Veya 403 yanıtı için, hedeflenen kimliğin veya API anahtarının Azure OpenAI kaynağına erişebildiğini onaylayın.
  • Yanıt için 404 temel URL'nin /openai/v1/ sona erdiğini ve geçerli bir dağıtım adı içerdiğini model onaylayın.
  • Paket veya tür hatası için SDK'yı güncelleştirin ve yüklü sürümü bu sayfada test edilen sürümle karşılaştırın.
  • Model parametresi hatası için dağıtılan modelin parametresini destekleyip desteklemediğini denetleyin. Parametre desteği model aileleri arasında farklılık gösterebilir.