이 문서에서는 새 통합 OpenAI v1 채팅 완료 엔드포인트로 전환하는 방법을 보여 줍니다. OpenAI 및 Azure OpenAI로 작업할 때의 일반적인 변경 내용과 차이점에 대해 설명합니다.
OpenAI와 Azure OpenAI는 공통 Python 클라이언트 라이브러리를 사용하지만 엔드포인트 간에 교환하기 위해 코드를 약간 변경해야 했습니다. 새로운 통합 OpenAI v1 채팅 완료 엔드포인트는 별도의 Azure 특정 코드 경로가 필요하지 않습니다.
Authentication
Microsoft Entra ID를 사용하여 키 없는 인증을 사용하는 것이 좋습니다. 가능하지 않은 경우 API 키를 사용하여 Azure Key Vault에 저장합니다. 환경 변수를 사용하여 Azure 환경 외부에서 테스트할 수 있습니다.
API 키 인증
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("OPENAI_API_KEY")
)
"Microsoft Entra" 인증
Microsoft Entra 인증은 Azure OpenAI 리소스에서만 지원됩니다. 다음 단계를 완료합니다.
Azure ID 클라이언트 라이브러리를 설치합니다.
pip install azure-identity다음과 같이 OpenAI 클라이언트 개체를 구성합니다.
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, )팁 (조언)
DefaultAzureCredential는 앱이 실행되는 환경에 맞게 최적화할 수 있습니다. 자세한 내용은 DefaultAzureCredential을 사용자 지정하는 방법을 참조하세요.적절한 Azure RBAC(역할 기반 액세스 제어) 권한을 할당합니다. 자세한 내용은 Azure RBAC(역할 기반 액세스 제어)를 참조하세요.
Azure에서 실행하는 경우 Azure 호스트 리소스에서 사용하는 관리 ID에 역할을 할당합니다. 로컬 개발 환경에서 실행하는 경우 앱을 실행하는 사용자에게 역할을 할당합니다.
using OpenAI;
using System;
using System.ClientModel;
string apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");
OpenAIClient client = new(new ApiKeyCredential(apiKey));
"Microsoft Entra" 인증
Microsoft Entra 인증은 Azure OpenAI 리소스에서만 지원됩니다. 다음 단계를 완료합니다.
Azure ID 클라이언트 라이브러리를 설치합니다.
dotnet add package Azure.Identity다음과 같이 개체를
OpenAIClient구성합니다.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);팁 (조언)
DefaultAzureCredential는 앱이 실행되는 환경에 맞게 최적화할 수 있습니다. 자세한 내용은 DefaultAzureCredential을 사용자 지정하는 방법을 참조하세요.적절한 Azure RBAC(역할 기반 액세스 제어) 권한을 할당합니다. 자세한 내용은 Azure RBAC(역할 기반 액세스 제어)를 참조하세요.
Azure에서 실행하는 경우 Azure 호스트 리소스에서 사용하는 관리 ID에 역할을 할당합니다. 로컬 개발 환경에서 실행하는 경우 앱을 실행하는 사용자에게 역할을 할당합니다.
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" 인증
Microsoft Entra 인증은 Azure OpenAI 리소스에서만 지원됩니다. 다음 단계를 완료합니다.
Azure ID 클라이언트 라이브러리를 설치합니다.
npm install @azure/identity다음과 같이 OpenAI 클라이언트 개체를 구성합니다.
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 });팁 (조언)
DefaultAzureCredential는 앱이 실행되는 환경에 맞게 최적화할 수 있습니다. 자세한 내용은 DefaultAzureCredential을 사용자 지정하는 방법을 참조하세요.적절한 Azure RBAC(역할 기반 액세스 제어) 권한을 할당합니다. 자세한 내용은 Azure RBAC(역할 기반 액세스 제어)를 참조하세요.
Azure에서 실행하는 경우 Azure 호스트 리소스에서 사용하는 관리 ID에 역할을 할당합니다. 로컬 개발 환경에서 실행하는 경우 앱을 실행하는 사용자에게 역할을 할당합니다.
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" 인증
Microsoft Entra 인증은 Azure OpenAI 리소스에서만 지원됩니다. 다음 단계를 완료합니다.
프로젝트에 azure-IDENTITy 종속성을 포함합니다.
다음과 같이 개체를
OpenAIClient구성합니다.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(); } }팁 (조언)
DefaultAzureCredential는 앱이 실행되는 환경에 맞게 최적화할 수 있습니다. 자세한 내용은 DefaultAzureCredential을 사용자 지정하는 방법을 참조하세요.적절한 Azure RBAC(역할 기반 액세스 제어) 권한을 할당합니다. 자세한 내용은 Azure RBAC(역할 기반 액세스 제어)를 참조하세요.
Azure에서 실행하는 경우 Azure 호스트 리소스에서 사용하는 관리 ID에 역할을 할당합니다. 로컬 개발 환경에서 실행하는 경우 앱을 실행하는 사용자에게 역할을 할당합니다.
// 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" 인증
Microsoft Entra 인증은 Azure OpenAI 리소스에서만 지원됩니다. 다음 단계를 완료합니다.
프로젝트에 azure-IDENTITy 종속성을 포함합니다.
다음과 같이 개체를
OpenAIClient구성합니다.// 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), )팁 (조언)
DefaultAzureCredential는 앱이 실행되는 환경에 맞게 최적화할 수 있습니다. 자세한 내용은 DefaultAzureCredential을 사용자 지정하는 방법을 참조하세요.적절한 Azure RBAC(역할 기반 액세스 제어) 권한을 할당합니다. 자세한 내용은 Azure RBAC(역할 기반 액세스 제어)를 참조하세요.
Azure에서 실행하는 경우 Azure 호스트 리소스에서 사용하는 관리 ID에 역할을 할당합니다. 로컬 개발 환경에서 실행하는 경우 앱을 실행하는 사용자에게 역할을 할당합니다.
모델 지정
OpenAI는 model 키워드 인수를 사용하여 사용할 모델을 지정합니다. Azure OpenAI에는 고유한 모델 배포 개념이 있습니다. Azure OpenAI model 를 사용하는 경우 모델을 배포할 때 선택한 기본 배포 이름을 참조해야 합니다.
중요합니다
Azure OpenAI 및 OpenAI는 API 호출에서 모델 이름을 다르게 처리합니다. OpenAI에는 모델 이름만 필요합니다. 모델 매개 변수를 사용하는 경우에도 Azure OpenAI에는 항상 배포 이름이 필요합니다. Azure OpenAI API를 호출할 때 모델 이름 대신 배포 이름을 사용해야 합니다. 이 설명서에서는 모델 이름과 일치하는 배포 이름을 표시하여 각 API 엔드포인트에서 작동하는 모델을 보여 줍니다. 가장 적합한 배포 이름에 대한 명명 규칙을 선택합니다.
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는 매개 변수를 model 사용하여 사용할 모델을 지정합니다. Azure OpenAI에는 고유한 모델 배포 개념이 있습니다. Azure OpenAI model 를 사용하는 경우 모델을 배포할 때 선택한 기본 배포 이름을 참조해야 합니다.
중요합니다
Azure OpenAI 및 OpenAI는 API 호출에서 모델 이름을 다르게 처리합니다. OpenAI에는 모델 이름만 필요합니다. 모델 매개 변수를 사용하는 경우에도 Azure OpenAI에는 항상 배포 이름이 필요합니다. Azure OpenAI API를 호출할 때 모델 이름 대신 배포 이름을 사용해야 합니다. 이 설명서에서는 모델 이름과 일치하는 배포 이름을 표시하여 각 API 엔드포인트에서 작동하는 모델을 보여 줍니다. 가장 적합한 배포 이름에 대한 명명 규칙을 선택합니다.
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는 model 키워드 인수를 사용하여 사용할 모델을 지정합니다. Azure OpenAI에는 고유한 모델 배포 개념이 있습니다. Azure OpenAI model 를 사용하는 경우 모델을 배포할 때 선택한 기본 배포 이름을 참조해야 합니다.
중요합니다
Azure OpenAI 및 OpenAI는 API 호출에서 모델 이름을 다르게 처리합니다. OpenAI에는 모델 이름만 필요합니다. 모델 매개 변수를 사용하는 경우에도 Azure OpenAI에는 항상 배포 이름이 필요합니다. Azure OpenAI API를 호출할 때 모델 이름 대신 배포 이름을 사용해야 합니다. 이 설명서에서는 모델 이름과 일치하는 배포 이름을 표시하여 각 API 엔드포인트에서 작동하는 모델을 보여 줍니다. 가장 적합한 배포 이름에 대한 명명 규칙을 선택합니다.
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는 model 키워드 인수를 사용하여 사용할 모델을 지정합니다. Azure OpenAI에는 고유한 모델 배포 개념이 있습니다. Azure OpenAI model 를 사용하는 경우 모델을 배포할 때 선택한 기본 배포 이름을 참조해야 합니다.
중요합니다
Azure OpenAI 및 OpenAI는 API 호출에서 모델 이름을 다르게 처리합니다. OpenAI에는 모델 이름만 필요합니다. 모델 매개 변수를 사용하는 경우에도 Azure OpenAI에는 항상 배포 이름이 필요합니다. Azure OpenAI API를 호출할 때 모델 이름 대신 배포 이름을 사용해야 합니다. 이 설명서에서는 모델 이름과 일치하는 배포 이름을 표시하여 각 API 엔드포인트에서 작동하는 모델을 보여 줍니다. 가장 적합한 배포 이름에 대한 명명 규칙을 선택합니다.
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는 Model 키워드 인수를 사용하여 사용할 모델을 지정합니다. Azure OpenAI에는 고유한 모델 배포 개념이 있습니다. Azure OpenAI Model 를 사용하는 경우 모델을 배포할 때 선택한 기본 배포 이름을 참조해야 합니다.
중요합니다
Azure OpenAI 및 OpenAI는 API 호출에서 모델 이름을 다르게 처리합니다. OpenAI에는 모델 이름만 필요합니다. 모델 매개 변수를 사용하는 경우에도 Azure OpenAI에는 항상 배포 이름이 필요합니다. Azure OpenAI API를 호출할 때 모델 이름 대신 배포 이름을 사용해야 합니다. 이 설명서에서는 모델 이름과 일치하는 배포 이름을 표시하여 각 API 엔드포인트에서 작동하는 모델을 보여 줍니다. 가장 적합한 배포 이름에 대한 명명 규칙을 선택합니다.
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 임베딩 여러 입력 지원
OpenAI 및 Azure OpenAI는 현재 최대 2,048개의 입력 항목에 대한 입력 배열을 지원합니다 text-embedding-ada-002. 둘 다 API 요청당 최대 입력 토큰 제한이 이 모델에 대해 8,191 미만으로 유지되어야 합니다.
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"},
},
})