Delen via


Schakelen tussen OpenAI- en Azure OpenAI-eindpunten

In dit artikel leest u hoe u overschakelt naar het nieuwe geïntegreerde OpenAI v1-voltooiingseindpunt voor chats. Hierin worden de algemene wijzigingen en verschillen behandeld wanneer u met OpenAI en Azure OpenAI werkt.

Hoewel OpenAI en Azure OpenAI afhankelijk zijn van een gemeenschappelijke Python-clientbibliotheek, waren er kleine wijzigingen die u moest aanbrengen in uw code om heen en weer te wisselen tussen de eindpunten. Het nieuwe geïntegreerde OpenAI v1-eindpunt voor chatvoltooiing elimineert de noodzaak van afzonderlijke Azure-specifieke codepaden.

Authenticatie

We raden u aan sleutelloze verificatie te gebruiken met behulp van Microsoft Entra-id. Als dat niet mogelijk is, gebruikt u een API-sleutel en slaat u deze op in Azure Key Vault. U kunt een omgevingsvariabele gebruiken om buiten uw Azure-omgevingen te testen.

Verificatie via een API-sleutel

import os
from openai import OpenAI

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

Microsoft Entra-authenticatie

Microsoft Entra-verificatie wordt alleen ondersteund met Azure OpenAI-resources. Voltooi de volgende stappen:

  1. Installeer de Azure Identity-clientbibliotheek:

    pip install azure-identity
    
  2. Configureer het OpenAI-clientobject als volgt:

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

    Aanbeveling

    DefaultAzureCredential kan worden geoptimaliseerd voor de omgeving waarin uw app wordt uitgevoerd. Zie DefaultAzureCredential aanpassen voor meer informatie.

  3. Wijs de juiste RBAC-machtigingen (op rollen gebaseerd toegangsbeheer) van Azure toe. Zie op rollen gebaseerd toegangsbeheer van Azure (RBAC) voor meer informatie.

    Wanneer u Azure gebruikt, wijs rollen toe aan de beheerde identiteit die voor het Azure-hostresource wordt gebruikt. Wanneer u deze uitvoert in de lokale ontwikkelomgeving, wijst u rollen toe aan de gebruiker die de app uitvoert.

using OpenAI;
using System;
using System.ClientModel;

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

Microsoft Entra-authenticatie

Microsoft Entra-verificatie wordt alleen ondersteund met Azure OpenAI-resources. Voltooi de volgende stappen:

  1. Installeer de Azure Identity-clientbibliotheek:

    dotnet add package Azure.Identity
    
  2. Configureer het OpenAIClient object als volgt:

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

    Aanbeveling

    DefaultAzureCredential kan worden geoptimaliseerd voor de omgeving waarin uw app wordt uitgevoerd. Zie DefaultAzureCredential aanpassen voor meer informatie.

  3. Wijs de juiste RBAC-machtigingen (op rollen gebaseerd toegangsbeheer) van Azure toe. Zie op rollen gebaseerd toegangsbeheer van Azure (RBAC) voor meer informatie.

    Wanneer u Azure gebruikt, wijs rollen toe aan de beheerde identiteit die voor het Azure-hostresource wordt gebruikt. Wanneer u deze uitvoert in de lokale ontwikkelomgeving, wijst u rollen toe aan de gebruiker die de app uitvoert.

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-authenticatie

Microsoft Entra-verificatie wordt alleen ondersteund met Azure OpenAI-resources. Voltooi de volgende stappen:

  1. Installeer de Azure Identity-clientbibliotheek:

    npm install @azure/identity
    
  2. Configureer het OpenAI-clientobject als volgt:

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

    Aanbeveling

    DefaultAzureCredential kan worden geoptimaliseerd voor de omgeving waarin uw app wordt uitgevoerd. Zie DefaultAzureCredential aanpassen voor meer informatie.

  3. Wijs de juiste RBAC-machtigingen (op rollen gebaseerd toegangsbeheer) van Azure toe. Zie op rollen gebaseerd toegangsbeheer van Azure (RBAC) voor meer informatie.

    Wanneer u Azure gebruikt, wijs rollen toe aan de beheerde identiteit die voor het Azure-hostresource wordt gebruikt. Wanneer u deze uitvoert in de lokale ontwikkelomgeving, wijst u rollen toe aan de gebruiker die de app uitvoert.

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-authenticatie

Microsoft Entra-verificatie wordt alleen ondersteund met Azure OpenAI-resources. Voltooi de volgende stappen:

  1. Neem de azure-identity dependency op in uw project.

  2. Configureer het OpenAIClient object als volgt:

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

    Aanbeveling

    DefaultAzureCredential kan worden geoptimaliseerd voor de omgeving waarin uw app wordt uitgevoerd. Zie DefaultAzureCredential aanpassen voor meer informatie.

  3. Wijs de juiste RBAC-machtigingen (op rollen gebaseerd toegangsbeheer) van Azure toe. Zie op rollen gebaseerd toegangsbeheer van Azure (RBAC) voor meer informatie.

    Wanneer u Azure gebruikt, wijs rollen toe aan de beheerde identiteit die voor het Azure-hostresource wordt gebruikt. Wanneer u deze uitvoert in de lokale ontwikkelomgeving, wijst u rollen toe aan de gebruiker die de app uitvoert.

// 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-authenticatie

Microsoft Entra-verificatie wordt alleen ondersteund met Azure OpenAI-resources. Voltooi de volgende stappen:

  1. Neem de azure-identity dependency op in uw project.

  2. Configureer het OpenAIClient object als volgt:

    // 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),
    )
    

    Aanbeveling

    DefaultAzureCredential kan worden geoptimaliseerd voor de omgeving waarin uw app wordt uitgevoerd. Zie DefaultAzureCredential aanpassen voor meer informatie.

  3. Wijs de juiste RBAC-machtigingen (op rollen gebaseerd toegangsbeheer) van Azure toe. Zie op rollen gebaseerd toegangsbeheer van Azure (RBAC) voor meer informatie.

    Wanneer u Azure gebruikt, wijs rollen toe aan de beheerde identiteit die voor het Azure-hostresource wordt gebruikt. Wanneer u deze uitvoert in de lokale ontwikkelomgeving, wijst u rollen toe aan de gebruiker die de app uitvoert.

Het model opgeven

OpenAI gebruikt het model trefwoordargument om op te geven welk model moet worden gebruikt. Azure OpenAI heeft het concept van unieke modelimplementaties. Wanneer u Azure OpenAI gebruikt, model moet u verwijzen naar de naam van de onderliggende implementatie die u hebt gekozen bij het implementeren van het model.

Belangrijk

Azure OpenAI en OpenAI verwerken modelnamen anders in API-aanroepen. OpenAI heeft alleen de modelnaam nodig. Azure OpenAI heeft altijd de implementatienaam nodig, zelfs wanneer u de modelparameter gebruikt. U moet de implementatienaam gebruiken in plaats van de modelnaam wanneer u Azure OpenAI-API's aanroept. In onze documentatie worden vaak implementatienamen weergegeven die overeenkomen met modelnamen om aan te geven welk model met elk API-eindpunt werkt. Kies een naamconventie voor implementatienamen die het beste bij u past.

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 gebruikt de model parameter om op te geven welk model moet worden gebruikt. Azure OpenAI heeft het concept van unieke modelimplementaties. Wanneer u Azure OpenAI gebruikt, model moet u verwijzen naar de naam van de onderliggende implementatie die u hebt gekozen bij het implementeren van het model.

Belangrijk

Azure OpenAI en OpenAI verwerken modelnamen anders in API-aanroepen. OpenAI heeft alleen de modelnaam nodig. Azure OpenAI heeft altijd de implementatienaam nodig, zelfs wanneer u de modelparameter gebruikt. U moet de implementatienaam gebruiken in plaats van de modelnaam wanneer u Azure OpenAI-API's aanroept. In onze documentatie worden vaak implementatienamen weergegeven die overeenkomen met modelnamen om aan te geven welk model met elk API-eindpunt werkt. Kies een naamconventie voor implementatienamen die het beste bij u past.

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 gebruikt het model trefwoordargument om op te geven welk model moet worden gebruikt. Azure OpenAI heeft het concept van unieke modelimplementaties. Wanneer u Azure OpenAI gebruikt, model moet u verwijzen naar de naam van de onderliggende implementatie die u hebt gekozen bij het implementeren van het model.

Belangrijk

Azure OpenAI en OpenAI verwerken modelnamen anders in API-aanroepen. OpenAI heeft alleen de modelnaam nodig. Azure OpenAI heeft altijd de implementatienaam nodig, zelfs wanneer u de modelparameter gebruikt. U moet de implementatienaam gebruiken in plaats van de modelnaam wanneer u Azure OpenAI-API's aanroept. In onze documentatie worden vaak implementatienamen weergegeven die overeenkomen met modelnamen om aan te geven welk model met elk API-eindpunt werkt. Kies een naamconventie voor implementatienamen die het beste bij u past.

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 gebruikt het model trefwoordargument om op te geven welk model moet worden gebruikt. Azure OpenAI heeft het concept van unieke modelimplementaties. Wanneer u Azure OpenAI gebruikt, model moet u verwijzen naar de naam van de onderliggende implementatie die u hebt gekozen bij het implementeren van het model.

Belangrijk

Azure OpenAI en OpenAI verwerken modelnamen anders in API-aanroepen. OpenAI heeft alleen de modelnaam nodig. Azure OpenAI heeft altijd de implementatienaam nodig, zelfs wanneer u de modelparameter gebruikt. U moet de implementatienaam gebruiken in plaats van de modelnaam wanneer u Azure OpenAI-API's aanroept. In onze documentatie worden vaak implementatienamen weergegeven die overeenkomen met modelnamen om aan te geven welk model met elk API-eindpunt werkt. Kies een naamconventie voor implementatienamen die het beste bij u past.

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 gebruikt het Model trefwoordargument om op te geven welk model moet worden gebruikt. Azure OpenAI heeft het concept van unieke modelimplementaties. Wanneer u Azure OpenAI gebruikt, Model moet u verwijzen naar de naam van de onderliggende implementatie die u hebt gekozen bij het implementeren van het model.

Belangrijk

Azure OpenAI en OpenAI verwerken modelnamen anders in API-aanroepen. OpenAI heeft alleen de modelnaam nodig. Azure OpenAI heeft altijd de implementatienaam nodig, zelfs wanneer u de modelparameter gebruikt. U moet de implementatienaam gebruiken in plaats van de modelnaam wanneer u Azure OpenAI-API's aanroept. In onze documentatie worden vaak implementatienamen weergegeven die overeenkomen met modelnamen om aan te geven welk model met elk API-eindpunt werkt. Kies een naamconventie voor implementatienamen die het beste bij u past.

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

Ondersteuning voor meerdere invoer insluiten in Azure OpenAI

OpenAI en Azure OpenAI ondersteunen momenteel invoermatrices tot 2048 invoeritems voor text-embedding-ada-002. Beide vereisen de maximale invoertokenlimiet per API-aanvraag om minder dan 8.191 te blijven voor dit model.

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