OpenAI ile Azure OpenAI uç noktaları arasında geçiş yapma

Bu makalede, yeni birleşik OpenAI v1 sohbet tamamlama uç noktasına nasıl geçiş yapacağınız gösterilmektedir. OpenAI ve Azure OpenAI ile çalışırken sık karşılaşılan değişiklikleri ve farklılıkları kapsar.

OpenAI ve Azure OpenAI ortak bir Python istemci kitaplığını kullansa da, uç noktalar arasında geçiş yapmak için kodunuzda yapmanız gereken küçük değişiklikler vardı. Yeni birleşik OpenAI v1 sohbet tamamlama uç noktası, Azure'a özgü ayrı kod yolları gereksinimini ortadan kaldırır.

Authentication

Microsoft Entra Kimliğini kullanarak anahtarsız kimlik doğrulaması öneririz. Bu mümkün değilse BIR API anahtarı kullanın ve Azure Key Vault'ta depolayın. Azure ortamlarınızın dışında test için bir ortam değişkeni kullanabilirsiniz.

API anahtarı kimlik doğrulaması

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY")
)

Microsoft Entra kimlik doğrulama

Microsoft Entra kimlik doğrulaması yalnızca Azure OpenAI kaynaklarıyla desteklenir. Aşağıdaki adımları tamamlayın:

  1. Azure Identity istemci kitaplığını yükleyin:

    pip install azure-identity
    
  2. OpenAI istemci nesnesini aşağıdaki gibi yapılandırın:

    from azure.identity import DefaultAzureCredential, get_bearer_token_provider
    from openai import OpenAI
    
    credential = DefaultAzureCredential()
    token_provider = get_bearer_token_provider(
        credential,
        "https://cognitiveservices.azure.com/.default"
    )
    
    client = OpenAI(
        base_url = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/", 
        api_key = token_provider,
    )
    

    Tavsiye

    DefaultAzureCredential uygulamanızın çalıştığı ortam için iyileştirilebilir. Daha fazla bilgi için bkz. DefaultAzureCredential'ı özelleştirme.

  3. Uygun Azure rol tabanlı erişim denetimi (RBAC) izinlerini atayın. Daha fazla bilgi için bkz. Azure rol tabanlı erişim denetimi (RBAC).

    Azure'da çalışırken, Azure konak kaynağı tarafından kullanılan yönetilen kimliğe roller atayın. Yerel geliştirme ortamında çalışırken, uygulamayı çalıştıran kullanıcıya roller atayın.

using OpenAI;
using System;
using System.ClientModel;

string apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");
OpenAIClient client = new(new ApiKeyCredential(apiKey));

Microsoft Entra kimlik doğrulama

Microsoft Entra kimlik doğrulaması yalnızca Azure OpenAI kaynaklarıyla desteklenir. Aşağıdaki adımları tamamlayın:

  1. Azure Identity istemci kitaplığını yükleyin:

    dotnet add package Azure.Identity
    
  2. OpenAIClient Nesneyi aşağıdaki gibi yapılandırın:

    using Azure.Identity;
    using OpenAI;
    using System;
    using System.ClientModel.Primitives;
    
    // code omitted for brevity
    
    DefaultAzureCredential credential = new();
    BearerTokenPolicy tokenPolicy = new(credential, "https://cognitiveservices.azure.com/.default");
    
    OpenAIClientOptions clientOptions = new()
    {
        Endpoint = new Uri($"{resourceEndpoint}/openai/v1/")
    };
    
    OpenAIClient client = new(tokenPolicy, clientOptions);
    

    Tavsiye

    DefaultAzureCredential uygulamanızın çalıştığı ortam için iyileştirilebilir. Daha fazla bilgi için bkz. DefaultAzureCredential'ı özelleştirme.

  3. Uygun Azure rol tabanlı erişim denetimi (RBAC) izinlerini atayın. Daha fazla bilgi için bkz. Azure rol tabanlı erişim denetimi (RBAC).

    Azure'da çalışırken, Azure konak kaynağı tarafından kullanılan yönetilen kimliğe roller atayın. Yerel geliştirme ortamında çalışırken, uygulamayı çalıştıran kullanıcıya roller atayın.

import { OpenAI } from "openai";
import "dotenv/config";

const apiKey = process.env["OPENAI_API_KEY"];

if (!endpoint) {
  throw new Error("Please set the OPENAI_API_KEY environment variable.");
}

const client = new OpenAI({ apiKey });

Microsoft Entra kimlik doğrulama

Microsoft Entra kimlik doğrulaması yalnızca Azure OpenAI kaynaklarıyla desteklenir. Aşağıdaki adımları tamamlayın:

  1. Azure Identity istemci kitaplığını yükleyin:

    npm install @azure/identity
    
  2. OpenAI istemci nesnesini aşağıdaki gibi yapılandırın:

    import { OpenAI } from "openai";
    import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
    import "dotenv/config";
    
    const endpoint = process.env["AZURE_OPENAI_ENDPOINT"];
    
    if (!endpoint) {
      throw new Error("Please set the AZURE_OPENAI_ENDPOINT environment variable.");
    }
    
    const scope = "https://cognitiveservices.azure.com/.default";
    const azureADTokenProvider = getBearerTokenProvider(new DefaultAzureCredential(), scope);
    const client = new OpenAI({ baseURL: endpoint + "/openai/v1", apiKey: azureADTokenProvider });
    

    Tavsiye

    DefaultAzureCredential uygulamanızın çalıştığı ortam için iyileştirilebilir. Daha fazla bilgi için bkz. DefaultAzureCredential'ı özelleştirme.

  3. Uygun Azure rol tabanlı erişim denetimi (RBAC) izinlerini atayın. Daha fazla bilgi için bkz. Azure rol tabanlı erişim denetimi (RBAC).

    Azure'da çalışırken, Azure konak kaynağı tarafından kullanılan yönetilen kimliğe roller atayın. Yerel geliştirme ortamında çalışırken, uygulamayı çalıştıran kullanıcıya roller atayın.

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;

public class OpenAISample {

    public static void main(String[] args) {
        OpenAIClient openAIClient = OpenAIOkHttpClient.builder()
                .apiKey(System.getenv("OPENAI_API_KEY"))
                .build();
    }
}

Microsoft Entra kimlik doğrulama

Microsoft Entra kimlik doğrulaması yalnızca Azure OpenAI kaynaklarıyla desteklenir. Aşağıdaki adımları tamamlayın:

  1. Projenize azure-identity bağımlılığını ekleyin.

  2. OpenAIClient Nesneyi aşağıdaki gibi yapılandırın:

    import com.azure.identity.AuthenticationUtil;
    import com.azure.identity.DefaultAzureCredential;
    import com.azure.identity.DefaultAzureCredentialBuilder;
    import com.openai.client.OpenAIClient;
    import com.openai.client.okhttp.OpenAIOkHttpClient;
    import com.openai.credential.BearerTokenCredential;
    
    import java.util.function.Supplier;
    
    public class AzureOpenAISample {
    
        public static void main(String[] args) {
            DefaultAzureCredential tokenCredential = new DefaultAzureCredentialBuilder().build();
            Supplier<String> bearerTokenSupplier = AuthenticationUtil.getBearerTokenSupplier(
                    tokenCredential, "https://cognitiveservices.azure.com/.default");
            OpenAIClient azureOpenAIClient = OpenAIOkHttpClient.builder()
                    .fromEnv()
                    // Set the Azure Entra ID
                    .credential(BearerTokenCredential.create(bearerTokenSupplier))
                    .build();
        }
    }
    

    Tavsiye

    DefaultAzureCredential uygulamanızın çalıştığı ortam için iyileştirilebilir. Daha fazla bilgi için bkz. DefaultAzureCredential'ı özelleştirme.

  3. Uygun Azure rol tabanlı erişim denetimi (RBAC) izinlerini atayın. Daha fazla bilgi için bkz. Azure rol tabanlı erişim denetimi (RBAC).

    Azure'da çalışırken, Azure konak kaynağı tarafından kullanılan yönetilen kimliğe roller atayın. Yerel geliştirme ortamında çalışırken, uygulamayı çalıştıran kullanıcıya roller atayın.

// import (
//    "github.com/openai/openai-go/v3"
//    "github.com/openai/openai-go/v3/option"
// )

client := openai.NewClient(
    option.WithAPIKey(os.Getenv("OPENAI_API_KEY")),
)

Microsoft Entra kimlik doğrulama

Microsoft Entra kimlik doğrulaması yalnızca Azure OpenAI kaynaklarıyla desteklenir. Aşağıdaki adımları tamamlayın:

  1. Projenize azure-identity bağımlılığını ekleyin.

  2. OpenAIClient Nesneyi aşağıdaki gibi yapılandırın:

    // import (
    //    "github.com/openai/openai-go/v3"
    //    "github.com/openai/openai-go/v3/azure"
    //    "github.com/openai/openai-go/v3/option"
    // )
    
    client := openai.NewClient(
        option.WithBaseURL("https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"),
        azure.WithTokenCredential(cred),
    )
    

    Tavsiye

    DefaultAzureCredential uygulamanızın çalıştığı ortam için iyileştirilebilir. Daha fazla bilgi için bkz. DefaultAzureCredential'ı özelleştirme.

  3. Uygun Azure rol tabanlı erişim denetimi (RBAC) izinlerini atayın. Daha fazla bilgi için bkz. Azure rol tabanlı erişim denetimi (RBAC).

    Azure'da çalışırken, Azure konak kaynağı tarafından kullanılan yönetilen kimliğe roller atayın. Yerel geliştirme ortamında çalışırken, uygulamayı çalıştıran kullanıcıya roller atayın.

Modeli belirtme

OpenAI, hangi modelin model kullanılacağını belirtmek için anahtar sözcük bağımsız değişkenini kullanır. Azure OpenAI, benzersiz model dağıtımları kavramına sahiptir. Azure OpenAI kullanırken, modeli dağıtırken seçtiğiniz temel dağıtım adını referans almalısınız.

Önemli

Azure OpenAI ve OpenAI, API çağrılarında model adlarını farklı işler. OpenAI yalnızca model adına ihtiyaç duyar. Model parametresini kullandığınızda bile Azure OpenAI her zaman dağıtım adına ihtiyaç duyar. Azure OpenAI API'lerini çağırırken model adı yerine dağıtım adını kullanmanız gerekir. Belgelerimiz genellikle her API uç noktasıyla hangi modelin çalıştığını göstermek için model adlarıyla eşleşen dağıtım adlarını gösterir. Dağıtım adları için size en uygun adlandırma kurallarını seçin.

response = client.responses.create(   
    model="gpt-4.1-nano", 
    input="This is a test."
)

chat_completion = client.chat.completions.create(
    model="gpt-4o", 
    messages="<messages>"
)

embedding = client.embeddings.create(
    model="text-embedding-3-large", 
    input="<input>"
)

OpenAI, hangi modelin model kullanılacağını belirtmek için parametresini kullanır. Azure OpenAI, benzersiz model dağıtımları kavramına sahiptir. Azure OpenAI kullanırken, modeli dağıtırken seçtiğiniz temel dağıtım adını referans almalısınız.

Önemli

Azure OpenAI ve OpenAI, API çağrılarında model adlarını farklı işler. OpenAI yalnızca model adına ihtiyaç duyar. Model parametresini kullandığınızda bile Azure OpenAI her zaman dağıtım adına ihtiyaç duyar. Azure OpenAI API'lerini çağırırken model adı yerine dağıtım adını kullanmanız gerekir. Belgelerimiz genellikle her API uç noktasıyla hangi modelin çalıştığını göstermek için model adlarıyla eşleşen dağıtım adlarını gösterir. Dağıtım adları için size en uygun adlandırma kurallarını seçin.

string modelName = "gpt-4.1-nano";
OpenAIResponseClient response = client.GetOpenAIResponseClient(modelName);

modelName = "gpt-4o";
ChatClient chatCompletion = client.GetChatClient(modelName);

modelName = "text-embedding-3-large";
EmbeddingClient embedding = client.GetEmbeddingClient(modelName);

OpenAI, hangi modelin model kullanılacağını belirtmek için anahtar sözcük bağımsız değişkenini kullanır. Azure OpenAI, benzersiz model dağıtımları kavramına sahiptir. Azure OpenAI kullanırken, modeli dağıtırken seçtiğiniz temel dağıtım adını referans almalısınız.

Önemli

Azure OpenAI ve OpenAI, API çağrılarında model adlarını farklı işler. OpenAI yalnızca model adına ihtiyaç duyar. Model parametresini kullandığınızda bile Azure OpenAI her zaman dağıtım adına ihtiyaç duyar. Azure OpenAI API'lerini çağırırken model adı yerine dağıtım adını kullanmanız gerekir. Belgelerimiz genellikle her API uç noktasıyla hangi modelin çalıştığını göstermek için model adlarıyla eşleşen dağıtım adlarını gösterir. Dağıtım adları için size en uygun adlandırma kurallarını seçin.

const response = await client.responses.create({
  model: "gpt-4.1-nano",
  input: "This is a test",
});

const chatCompletions = await client.chat.completions.create({
  model: "gpt-4o",
  messages: ["<messages>"],
});

const embeddings = await client.embeddings.create({
  model: "text-embedding-3-large",
  input: "<input>",
});

OpenAI, hangi modelin model kullanılacağını belirtmek için anahtar sözcük bağımsız değişkenini kullanır. Azure OpenAI, benzersiz model dağıtımları kavramına sahiptir. Azure OpenAI kullanırken, modeli dağıtırken seçtiğiniz temel dağıtım adını referans almalısınız.

Önemli

Azure OpenAI ve OpenAI, API çağrılarında model adlarını farklı işler. OpenAI yalnızca model adına ihtiyaç duyar. Model parametresini kullandığınızda bile Azure OpenAI her zaman dağıtım adına ihtiyaç duyar. Azure OpenAI API'lerini çağırırken model adı yerine dağıtım adını kullanmanız gerekir. Belgelerimiz genellikle her API uç noktasıyla hangi modelin çalıştığını göstermek için model adlarıyla eşleşen dağıtım adlarını gösterir. Dağıtım adları için size en uygun adlandırma kurallarını seçin.

ResponseCreateParams responseCreateParams = ResponseCreateParams.builder()
        .input("This is a test")
        .model(ChatModel.GPT_4_1_NANO)
        .build();

Response response = client.responses().create(responseCreateParams);

ChatCompletionCreateParams chatCompletionCreateParams = ChatCompletionCreateParams.builder()
        .model(ChatModel.GPT_4O)
        .addUserMessage("<message>")
        .build();

ChatCompletion chatCompletion = client.chat().completions().create(chatCompletionCreateParams);

EmbeddingCreateParams embeddingCreateParams = EmbeddingCreateParams.builder()
        .input("<input>")
        .model(EmbeddingModel.TEXT_EMBEDDING_3_LARGE)
        .build();

CreateEmbeddingResponse createEmbeddingResponse = client.embeddings().create(embeddingCreateParams);

OpenAI, hangi modelin Model kullanılacağını belirtmek için anahtar sözcük bağımsız değişkenini kullanır. Azure OpenAI, benzersiz model dağıtımları kavramına sahiptir. Azure OpenAI kullanırken, modeli dağıtırken seçtiğiniz temel dağıtım adını referans almalısınız.

Önemli

Azure OpenAI ve OpenAI, API çağrılarında model adlarını farklı işler. OpenAI yalnızca model adına ihtiyaç duyar. Model parametresini kullandığınızda bile Azure OpenAI her zaman dağıtım adına ihtiyaç duyar. Azure OpenAI API'lerini çağırırken model adı yerine dağıtım adını kullanmanız gerekir. Belgelerimiz genellikle her API uç noktasıyla hangi modelin çalıştığını göstermek için model adlarıyla eşleşen dağıtım adlarını gösterir. Dağıtım adları için size en uygun adlandırma kurallarını seçin.

resp, err := client.Responses.New(context.TODO(), responses.ResponseNewParams{
    Model: "gpt-4.1-nano", 
    Input: responses.ResponseNewParamsInputUnion{
        OfString: openai.String("This is a test."),
    },
})

resp, err := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
    Model: "gpt-4o", 
    Messages: []openai.ChatCompletionMessageParamUnion{
        // messages
    },
})

resp, err := client.Embeddings.New(context.TODO(), openai.EmbeddingNewParams{
    Model: "text-embedding-3-large", 
    Input: openai.EmbeddingNewParamsInputUnion{
        OfString: openai.String("<input>"),
    },
})

Azure OpenAI gömme birden fazla giriş desteği

OpenAI ve Azure OpenAI şu anda için text-embedding-ada-0022.048 giriş öğesine kadar giriş dizilerini desteklemektedir. Her ikisi de bu model için API isteği başına maksimum giriş belirteci sınırının 8.191'in altında kalmasını gerektirir.

inputs = ["A", "B", "C"] 

embedding = client.embeddings.create(
    input=inputs,
    model="text-embedding-3-large"
)
string[] inputs = [ "A", "B", "C" ];

EmbeddingClient embedding = client.GetEmbeddingClient(
    model: "text-embedding-3-large"
).GenerateEmbedding(
    input: inputs
);
const embeddings = await client.embeddings.create({
    model: "text-embedding-3-large",
    inputs: ["A", "B", "C"],
})
EmbeddingCreateParams embeddingCreateParams = EmbeddingCreateParams.builder()
        .inputOfArrayOfStrings(List.of("A", "B", "C"))
        .model(EmbeddingModel.TEXT_EMBEDDING_3_LARGE)
        .build();

CreateEmbeddingResponse createEmbeddingResponse = client.embeddings().create(embeddingCreateParams);
resp, err := client.Embeddings.New(context.TODO(), openai.EmbeddingNewParams{
    Model: "text-embedding-3-large",
    Input: openai.EmbeddingNewParamsInputUnion{
        OfArrayOfStrings: []string{"A", "B", "C"},
    },
})