Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln visar hur du växlar till den nya enhetliga slutpunkten för slutförande av OpenAI v1-chatt. Den omfattar vanliga ändringar och skillnader när du arbetar med OpenAI och Azure OpenAI.
OpenAI och Azure OpenAI förlitar sig på ett vanligt Python-klientbibliotek, men du behövde göra små ändringar i koden för att växla fram och tillbaka mellan slutpunkterna. Den nya enhetliga slutpunkten för slutförande av OpenAI v1-chatt eliminerar behovet av separata Azure-specifika kodsökvägar.
Authentication
Vi rekommenderar nyckellös autentisering med hjälp av Microsoft Entra-ID. Om det inte är möjligt använder du en API-nyckel och lagrar den i Azure Key Vault. Du kan använda en miljövariabel för testning utanför dina Azure-miljöer.
API-nyckelautentisering
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY")
)
Microsoft Entra-autentisering
Microsoft Entra-autentisering stöds endast med Azure OpenAI-resurser. Slutför följande steg:
Installera Azure Identity-klientbiblioteket:
pip install azure-identityKonfigurera OpenAI-klientobjektet på följande sätt:
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, )Tips/Råd
DefaultAzureCredentialkan optimeras för den miljö där appen körs. Mer information finns i Anpassa StandardAzureCredential.Tilldela lämpliga behörigheter för rollbaserad åtkomstkontroll i Azure (RBAC). Mer information finns i Rollbaserad åtkomstkontroll i Azure (RBAC).
När du kör i Azure tilldelar du roller till den hanterade identitet som används av Azure-värdresursen. När du kör i den lokala utvecklingsmiljön tilldelar du roller till den användare som kör appen.
using OpenAI;
using System;
using System.ClientModel;
string apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");
OpenAIClient client = new(new ApiKeyCredential(apiKey));
Microsoft Entra-autentisering
Microsoft Entra-autentisering stöds endast med Azure OpenAI-resurser. Slutför följande steg:
Installera Azure Identity-klientbiblioteket:
dotnet add package Azure.IdentityKonfigurera
OpenAIClient-objektet enligt följande: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);Tips/Råd
DefaultAzureCredentialkan optimeras för den miljö där appen körs. Mer information finns i Anpassa StandardAzureCredential.Tilldela lämpliga behörigheter för rollbaserad åtkomstkontroll i Azure (RBAC). Mer information finns i Rollbaserad åtkomstkontroll i Azure (RBAC).
När du kör i Azure tilldelar du roller till den hanterade identitet som används av Azure-värdresursen. När du kör i den lokala utvecklingsmiljön tilldelar du roller till den användare som kör appen.
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-autentisering
Microsoft Entra-autentisering stöds endast med Azure OpenAI-resurser. Slutför följande steg:
Installera Azure Identity-klientbiblioteket:
npm install @azure/identityKonfigurera OpenAI-klientobjektet på följande sätt:
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 });Tips/Råd
DefaultAzureCredentialkan optimeras för den miljö där appen körs. Mer information finns i Anpassa StandardAzureCredential.Tilldela lämpliga behörigheter för rollbaserad åtkomstkontroll i Azure (RBAC). Mer information finns i Rollbaserad åtkomstkontroll i Azure (RBAC).
När du kör i Azure tilldelar du roller till den hanterade identitet som används av Azure-värdresursen. När du kör i den lokala utvecklingsmiljön tilldelar du roller till den användare som kör appen.
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-autentisering
Microsoft Entra-autentisering stöds endast med Azure OpenAI-resurser. Slutför följande steg:
Inkludera azure-identity-beroendet i projektet.
Konfigurera
OpenAIClient-objektet enligt följande: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(); } }Tips/Råd
DefaultAzureCredentialkan optimeras för den miljö där appen körs. Mer information finns i Anpassa StandardAzureCredential.Tilldela lämpliga behörigheter för rollbaserad åtkomstkontroll i Azure (RBAC). Mer information finns i Rollbaserad åtkomstkontroll i Azure (RBAC).
När du kör i Azure tilldelar du roller till den hanterade identitet som används av Azure-värdresursen. När du kör i den lokala utvecklingsmiljön tilldelar du roller till den användare som kör appen.
// 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-autentisering
Microsoft Entra-autentisering stöds endast med Azure OpenAI-resurser. Slutför följande steg:
Inkludera azure-identity-beroendet i projektet.
Konfigurera
OpenAIClient-objektet enligt följande:// 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), )Tips/Råd
DefaultAzureCredentialkan optimeras för den miljö där appen körs. Mer information finns i Anpassa StandardAzureCredential.Tilldela lämpliga behörigheter för rollbaserad åtkomstkontroll i Azure (RBAC). Mer information finns i Rollbaserad åtkomstkontroll i Azure (RBAC).
När du kör i Azure tilldelar du roller till den hanterade identitet som används av Azure-värdresursen. När du kör i den lokala utvecklingsmiljön tilldelar du roller till den användare som kör appen.
Ange modellen
OpenAI använder nyckelordsargumentet model för att ange vilken modell som ska användas. Azure OpenAI har begreppet unika modelldistributioner. När du använder Azure OpenAI model bör du referera till det underliggande distributionsnamnet som du valde när du distribuerade modellen.
Viktigt!
Azure OpenAI och OpenAI hanterar modellnamn på olika sätt i API-anrop. OpenAI behöver bara modellnamnet. Azure OpenAI behöver alltid distributionsnamnet, även när du använder modellparametern. Du måste använda distributionsnamnet i stället för modellnamnet när du anropar Azure OpenAI-API:er. Vår dokumentation visar ofta distributionsnamn som matchar modellnamn för att visa vilken modell som fungerar med varje API-slutpunkt. Välj valfri namngivningskonvention för distributionsnamn som fungerar bäst för dig.
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 använder parametern model för att ange vilken modell som ska användas. Azure OpenAI har begreppet unika modelldistributioner. När du använder Azure OpenAI model bör du referera till det underliggande distributionsnamnet som du valde när du distribuerade modellen.
Viktigt!
Azure OpenAI och OpenAI hanterar modellnamn på olika sätt i API-anrop. OpenAI behöver bara modellnamnet. Azure OpenAI behöver alltid distributionsnamnet, även när du använder modellparametern. Du måste använda distributionsnamnet i stället för modellnamnet när du anropar Azure OpenAI-API:er. Vår dokumentation visar ofta distributionsnamn som matchar modellnamn för att visa vilken modell som fungerar med varje API-slutpunkt. Välj valfri namngivningskonvention för distributionsnamn som fungerar bäst för dig.
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 använder nyckelordsargumentet model för att ange vilken modell som ska användas. Azure OpenAI har begreppet unika modelldistributioner. När du använder Azure OpenAI model bör du referera till det underliggande distributionsnamnet som du valde när du distribuerade modellen.
Viktigt!
Azure OpenAI och OpenAI hanterar modellnamn på olika sätt i API-anrop. OpenAI behöver bara modellnamnet. Azure OpenAI behöver alltid distributionsnamnet, även när du använder modellparametern. Du måste använda distributionsnamnet i stället för modellnamnet när du anropar Azure OpenAI-API:er. Vår dokumentation visar ofta distributionsnamn som matchar modellnamn för att visa vilken modell som fungerar med varje API-slutpunkt. Välj valfri namngivningskonvention för distributionsnamn som fungerar bäst för dig.
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 använder nyckelordsargumentet model för att ange vilken modell som ska användas. Azure OpenAI har begreppet unika modelldistributioner. När du använder Azure OpenAI model bör du referera till det underliggande distributionsnamnet som du valde när du distribuerade modellen.
Viktigt!
Azure OpenAI och OpenAI hanterar modellnamn på olika sätt i API-anrop. OpenAI behöver bara modellnamnet. Azure OpenAI behöver alltid distributionsnamnet, även när du använder modellparametern. Du måste använda distributionsnamnet i stället för modellnamnet när du anropar Azure OpenAI-API:er. Vår dokumentation visar ofta distributionsnamn som matchar modellnamn för att visa vilken modell som fungerar med varje API-slutpunkt. Välj valfri namngivningskonvention för distributionsnamn som fungerar bäst för dig.
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 använder nyckelordsargumentet Model för att ange vilken modell som ska användas. Azure OpenAI har begreppet unika modelldistributioner. När du använder Azure OpenAI Model bör du referera till det underliggande distributionsnamnet som du valde när du distribuerade modellen.
Viktigt!
Azure OpenAI och OpenAI hanterar modellnamn på olika sätt i API-anrop. OpenAI behöver bara modellnamnet. Azure OpenAI behöver alltid distributionsnamnet, även när du använder modellparametern. Du måste använda distributionsnamnet i stället för modellnamnet när du anropar Azure OpenAI-API:er. Vår dokumentation visar ofta distributionsnamn som matchar modellnamn för att visa vilken modell som fungerar med varje API-slutpunkt. Välj valfri namngivningskonvention för distributionsnamn som fungerar bäst för dig.
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-inbäddning har stöd för flera indata
OpenAI och Azure OpenAI stöder för närvarande indatamatriser på upp till 2 048 indataobjekt för text-embedding-ada-002. Båda kräver att maxgränsen för indatatoken per API-begäran förblir under 8 191 för den här modellen.
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"},
},
})