OpenAI JavaScript API’si kitaplığı 4.x'e (klasik) geçiş

Yalnızca şunlar için geçerlidir:Dökümhane (klasik) portalı. Bu makale yeni Dökümhane portalında kullanılamaz. Yeni portal hakkında daha fazla bilgi edinin.

Uyarı

Bu makaledeki bağlantılar, şu anda görüntülediğiniz Dökümhane (klasik) belgeleri yerine yeni Microsoft Foundry belgelerinde içerik açabilir.

Önemli

En son API örnekleri için API yaşam döngüsü makalesine bakın.

İstemcinin kimliğini doğrulama

Azure OpenAI'ye yapılan API isteklerinin kimliğini doğrulamak için birkaç yol vardır. Microsoft Entra ID belirteçlerini kullanmanızı şiddetle tavsiye ederiz. Daha fazla bilgi için Azure Identity belgelerine bakın.

Microsoft Entra ID

Microsoft Entra ID belirteçleri kullanarak Azure OpenAI ile kimlik doğrulaması yapmanın çeşitli yolları vardır. Varsayılan yol, DefaultAzureCredential paketinden @azure/identity sınıfını kullanmaktır, ancak uygulamanız farklı bir kimlik bilgisi sınıfı kullanıyor olabilir. Bu kılavuzun amaçları doğrultusunda sınıfını kullandığınızı DefaultAzureCredential varsayıyoruz. Kimlik bilgileri aşağıdaki gibi oluşturulabilir:

import { DefaultAzureCredential } from "@azure/identity";
const credential = new DefaultAzureCredential();

Bu nesneyi OpenAIClient oluşturucusunun ikinci bağımsız değişkenine iletin.

Ancak AzureOpenAI istemcisinin kimliğini doğrulamak için getBearerTokenProvider paketinden @azure/identity işlevini kullanmamız gerekir. Bu işlev, her istek için belirteçleri dahili olarak almak üzere AzureOpenAI kullanan bir belirteç sağlayıcısı oluşturur. Belirteç sağlayıcısı aşağıdaki gibi oluşturulur:

import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
const credential = new DefaultAzureCredential();
const scope = "https://ai.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);

azureADTokenProvider seçenekler nesnesine, AzureOpenAI istemcisi oluşturulurken geçirilir.

(Kesinlikle Önerilmez) API Anahtarı

Diğer kimlik doğrulama yöntemlerinden daha az güvenli olduklarından üretimde API anahtarlarını kullanmayın. Daha önce, kimlik doğrulaması OpenAIClientyapmak için nesneleri aşağıdaki gibi oluşturdunuzAzureKeyCredential:

import { AzureKeyCredential } from "@azure/openai";
const apiKey = new AzureKeyCredential("your API key");

Öte yandan, AzureOpenAI ortam değişkeni ayarlanarak AZURE_OPENAI_API_KEY veya istemci oluşturulurken apiKey options nesnesinde dize özelliği ayarlanarak AzureOpenAI bir API anahtarıyla kimlik doğrulaması yapılabilir.

Önemli

API anahtarlarını dikkatli kullanın. API anahtarını doğrudan kodunuzla eklemeyin ve hiçbir zaman herkese açık olarak göndermeyin. API anahtarı kullanıyorsanız, Azure Key Vault güvenli bir şekilde depolayın. Uygulamalarınızda API anahtarlarını güvenli bir şekilde kullanma hakkında daha fazla bilgi için bkz. Azure Key Vault ile API anahtarları.

Yapay zeka hizmetleri güvenliği hakkında daha fazla bilgi için bkz. Azure Yapay Zeka Hizmetleri istekleri doğrulama.

İstemciyi oluşturma

import { AzureOpenAI } from "openai";
const deployment = "Your Azure OpenAI deployment";
const apiVersion = "2024-04-01-preview";
const options = { azureADTokenProvider, deployment, apiVersion }
const client = new AzureOpenAI(options);

Azure OpenAI kaynağının uç noktası endpoint seçeneği ayarlanarak belirtilebilir, ancak istemci tarafından AZURE_OPENAI_ENDPOINT ortam değişkeninden de yüklenebilir. İstemcinin kodunda değişiklik yapmadan farklı ortamlarda kullanılmasına ve ayrıca uç noktayı kodda ifşa edilmeden korumasına izin verdiğinden, uç noktayı ayarlamak için önerilen yöntem budur.

API sürümünün belirtilmesi gerekir; mevcut kodun önizleme API sürümleri arasında bozulmadığından emin olmak için bu gereklidir. Azure OpenAI API sürümleri hakkında daha fazla bilgi edinmek için API sürüm oluşturma belgelerine bakın. Ayrıca özelliği deployment gerekli değildir ancak ayarlanması önerilir. Ayarlandıktan sonra deployment , bunu gerektiren tüm işlemler için varsayılan dağıtım olarak kullanılır. İstemci seçeneğiyle deployment oluşturulmadıysa seçenekler model nesnesindeki özellik dağıtım adıyla ayarlanmalıdır. Ancak, audio.transcriptions.create gibi ses işlemleri, istemcinin seçenek olarak dağıtım adına ayarlanmış deployment ile oluşturulmasını gerektirir.

API farklılıkları

OpenAIClient ve AzureOpenAI istemcilerinin önemli farklılıkları vardır:

  • OpenAIClient, işlemleri client.getChatCompletions gibi düz bir yöntem listesi halinde sunar. AzureOpenAI, işlemleri client.chat.completions.create gibi iç içe gruplar halinde gruplandırır.
  • OpenAIClientAzure OpenAI API'sinden farklı adlar kullanır. Örneğin, API snake case kullanırken istemci camel case kullanır. AzureOpenAI Azure OpenAI API ile aynı adları kullanır.

Geçiş örnekleri

Aşağıdaki bölümlerde,'den OpenAIClient 'e AzureOpenAIgeçişe ilişkin örnekler verilmiştir.

Sohbet bitişleri

const result = await client.chat.completions.create({ messages, model: '', max_tokens: 100 });

Aşağıdakilere dikkat edin:

  • getChatCompletions yöntemi chat.completions.create yöntemiyle değiştirildi.
  • messages parametresi artık messages özelliği ile options nesnesine geçirilir.
  • max_tokens özelliğini maxTokens olarak yeniden adlandırın ve deploymentName parametresini kaldırın. Genellikle, nesnedeki options özelliklerin adları Azure OpenAI API'sindekiyle aynıdır. API, OpenAIClient içinde kullanılan camelCase adlandırma kuralı yerine snake_case adlandırmasını kullanır. Bu adlandırma kuralı, istemcideki tüm istekler ve yanıtlar genelindeki AzureOpenAI tüm özellikler için geçerlidir.
  • deploymentName parametresi, istemci deployment seçeneğiyle oluşturulduysa gerekli değildir. İstemci seçeneğiyle deployment oluşturulmadıysa, model seçenek nesnesindeki özellik dağıtım adıyla ayarlanmalıdır.

Sohbet akış tamamlama işlemleri

const stream = await client.chat.completions.create({ model: '', messages, max_tokens: 100, stream: true });

Azure'un Verileriniz Üzerindeki Kullanımı

import "@azure/openai/types";

const azureSearchEndpoint = "Your Azure Search resource endpoint";
const azureSearchIndexName = "Your Azure Search index name";
const result = await client.chat.completions.create({ model: '', messages, data_sources: [{
      type: "azure_search",
      parameters: {
        endpoint: azureSearchEndpoint,
        index_name: azureSearchIndexName,
        authentication: {
          type: "system_assigned_managed_identity",
        }
      }
    }]
});
  • "@azure/openai/types", istemci türlerine Azure'a özgü tanımlar (örneğin, data_sources) eklemek için içe aktarılır.
  • azureExtensionOptions özelliği, iç data_sources özelliğiyle değiştirildi.
  • parameters özelliği, Azure OpenAI API'sinin şemasını yansıtan uzantının parametrelerini sarmalayan eklenmiştir.
  • Deve olayı özellikleri, yılan kasası özellikleriyle değiştirilmiştir.

Sesin metne dönüştürülmesi

import { createReadStream } from "fs";

const result = await client.audio.transcriptions.create({
  model: '',
  file: createReadStream(audioFilePath),
});
  • getAudioTranscription yöntemi audio.transcriptions.create yöntemiyle değiştirildi.
  • AzureOpenAI, deployment seçeneği dağıtım adına ayarlanmış olarak oluşturulmalıdır; bu sayede audio.transcriptions.create gibi ses işlemleri kullanılabilir.
  • Özelliğin model options nesnesinde ayarlanması gerekir, ancak değeri işlemde kullanılmaz, bu nedenle herhangi bir değere ayarlamaktan çekinmeyin.
  • file özelliği , Bufferve fs.ReadaStream gibi Blobçeşitli türleri kabul eder, ancak bu örnekte kullanılarak diskten fs.createReadStreambir dosya akışı yapılır.

Ses çevirisi

import { createReadStream } from "fs";

const result = await client.audio.translations.create({
  model: '',
  file: createReadStream(audioFilePath),
});
  • getAudioTranslation yöntemi audio.translations.create yöntemiyle değiştirildi.
  • Diğer tüm değişiklikler ses transkripsiyonu örneğindekiyle aynıdır.

Eklemeler

Aşağıdaki örnek, getEmbeddings yöntem çağrısının nasıl taşınacağını gösterir.

const embeddings = await client.embeddings.create({ input, model: '' });
  • getEmbeddings yöntemi embeddings.create yöntemiyle değiştirildi.
  • input parametresi artık input özelliği ile options nesnesine geçirilir.
  • deploymentName parametresi kaldırıldı. deploymentName parametresi, istemci deployment seçeneğiyle oluşturulduysa gerekli değildir. İstemci seçeneğiyle deployment oluşturulmadıysa, model seçenek nesnesindeki özellik dağıtım adıyla ayarlanmalıdır.

Görüntü oluşturma

Aşağıdaki örnek, getImages yöntem çağrısının nasıl taşınacağını gösterir.

  const results = await client.images.generate({ prompt, model: '', n, size });
  • getImages yöntemi images.generate yöntemiyle değiştirildi.
  • prompt parametresi artık prompt özelliği ile options nesnesine geçirilir.
  • deploymentName parametresi kaldırıldı. deploymentName parametresi, istemci deployment seçeneğiyle oluşturulduysa gerekli değildir. İstemci seçeneğiyle deployment oluşturulmadıysa, model seçenek nesnesindeki özellik dağıtım adıyla ayarlanmalıdır.

İçerik filtresi

İçerik filtresi sonuçları, içindeki OpenAIClientsohbet tamamlama yanıt türlerinin bir parçasıdır. Ancak, AzureOpenAI arabirimdeki contentFilterResults özelliğine ChatCompletion.Choice doğrudan eşdeğeri yoktur. İçerik filtresi sonuçlarına "@azure/openai/types" içeri aktarılarak ve content_filter_results özelliğine erişilerek erişilebilir. Aşağıdaki örnek, içerik filtresi sonuçlarına nasıl erişileceğini göstermektedir.

import "@azure/openai/types";

const result = await client.chat.completions.create({ model: '', messages });
for (const choice of results.choices) {
  const filterResults = choice.content_filter_results;
  if (!filterResults) {
    console.log("No content filter is found");
    return;
  }
  if (filterResults.error) {
    console.log(
      `Content filter ran into the error ${filterResults.error.code}: ${filterResults.error.message}`);
  }
  const { hate, sexual, self_harm, violence } = filterResults;
  ...
}
  • Deve olayı özellikleri, yılan kasası özellikleriyle değiştirilmiştir.
  • "@azure/openai/types", istemci türlerine Azure'a özgü tanımlar (örneğin, content_filter_results) eklenerek içeri aktarılır; daha fazla bilgi için Azure türleri bölümüne bakın.

Türleri Karşılaştırma

Aşağıdaki tabloda @azure/openai'den çeşitli tür adları incelenerek en yakın openai eşdeğeri gösterilmektedir. Ad farklılıkları, yukarıda bahsedilen değişikliklerin birkaçını gösterir. Bu tablo bir genel bakış sağlar ve aşağıdaki bölümlerde daha fazla ayrıntı ve kod örneği sağlanır.

Eski Tür Adı En Yakın Yeni Tür Simge Türü Açıklamayı değiştir
OpenAIClient AzureOpenAI Sınıf Bu sınıf, öncekinin yerini alır ve onunla ortak bir yöntemi yoktur. Aşağıdaki AzureOpenAI bölümüne bakın.
AudioResult Transcription/Transcription Arayüz Çağırma işlemine bağlı olarak, iki arabirim eskisinin yerini alır
AudioResultFormat özelliğin response_format satır içi birleşim türü Diğer ad Mevcut değil
AudioResultSimpleJson Transcription/Transcription Arayüz Çağırma işlemine bağlı olarak, iki arabirim eskisinin yerini alır
AudioResultVerboseJson Mevcut Değil Arayüz
AudioSegment Mevcut Değil Arayüz
AudioTranscriptionTask Mevcut Değil Diğer ad
tr-TR: AzureChatEnhancementConfiguration, AzureChatEnhancements, AzureChatExtensionConfiguration, AzureChatExtensionConfigurationUnion, AzureChatExtensionDataSourceResponseCitation, AzureChatExtensionsMessageContext, AzureChatExtensionType, AzureChatGroundingEnhancementConfiguration, AzureChatOCREnhancementConfiguration, AzureCosmosDBChatExtensionConfiguration, AzureCosmosDBFieldMappingOptions, AzureExtensionsOptions, AzureGroundingEnhancement, AzureGroundingEnhancementCoordinatePoint, AzureGroundingEnhancementLine, AzureGroundingEnhancementLineSpan, AzureMachineLearningIndexChatExtensionConfiguration, AzureSearchChatExtensionConfiguration, AzureSearchIndexFieldMappingOptions, AzureSearchQueryType, ContentFilterBlocklistIdResult, ContentFilterCitedDetectionResult, ContentFilterDetectionResult, ContentFilterErrorResults, ContentFilterResult, ContentFilterResultDetailsForPrompt, ContentFilterResultsForChoice, ContentFilterSeverity, ContentFilterResultsForPrompt, ContentFilterSuccessResultDetailsForPrompt, ContentFilterSuccessResultsForChoice, ElasticsearchChatExtensionConfiguration, ElasticsearchIndexFieldMappingOptions, ElasticsearchQueryType, ImageGenerationContentFilterResults, ImageGenerationPromptFilterResults, OnYourDataAccessTokenAuthenticationOptions, OnYourDataApiKeyAuthenticationOptions, OnYourDataAuthenticationOptions, OnYourDataAuthenticationOptionsUnion, OnYourDataConnectionStringAuthenticationOptions, OnYourDataDeploymentNameVectorizationSource, OnYourDataEncodedApiKeyAuthenticationOptions, OnYourDataEndpointVectorizationSource, OnYourDataKeyAndKeyIdAuthenticationOptions, OnYourDataModelIdVectorizationSource, OnYourDataSystemAssignedManagedIdentityAuthenticationOptions, OnYourDataUserAssignedManagedIdentityAuthenticationOptions, OnYourDataVectorizationSource, OnYourDataVectorizationSourceType, OnYourDataVectorizationSourceUnion, PineconeChatExtensionConfiguration, PineconeFieldMappingOptions Mevcut Değil Arabirimler ve Takma İsimler Aşağıdaki Azure türleri bölümüne bakın
AzureKeyCredential Mevcut Değil Sınıf API anahtarı dize değeri olarak sağlanabilir
ChatChoice ChatCompletion.Choice Arayüz
ChatChoiceLogProbabilityInfo Logprobs Arayüz
ChatCompletions ChatCompletion ve ChatCompletionChunk Arayüz
ChatCompletionsFunctionToolCall ChatCompletionMessageToolCall Arayüz
ChatRequestFunctionMessage ChatCompletionFunctionMessageParam Arayüz
ChatRequestMessage ChatCompletionMessageParam Arayüz
ChatRequestMessageUnion ChatCompletionMessageParam
ChatRequestSystemMessage ChatCompletionSystemMessageParam Arayüz
ChatRequestToolMessage ChatCompletionToolMessageParam Arayüz
ChatRequestUserMessage ChatCompletionUserMessageParam Arayüz
ChatResponseMessage Delta / ChatCompletionMessage Arayüz
ChatRole Mevcut Değil Diğer ad
ChatTokenLogProbabilityInfo TopLogprob Arayüz
ChatTokenLogProbabilityResult ChatCompletionTokenLogprob Arayüz
Choice Choice Arayüz
Completions Completion Arayüz
CompletionsFinishReason Mevcut Değil Diğer ad
CompletionsLogProbabilityModel Logprobs Arayüz
CompletionsUsage CompletionUsage Arayüz
EmbeddingItem Embedding Arayüz
Embeddings CreateEmbeddingResponse Arayüz
EmbeddingsUsage CreateEmbeddingResponse.Usage Arayüz
EventStream Stream Arayüz
FunctionCall FunctionCall Arayüz
FunctionCallPreset Mevcut Değil Diğer ad
FunctionDefinition Function Arayüz
FunctionName Mevcut Değil Diğer ad
GetAudioTranscriptionOptions TranscriptionCreateParams Arayüz
GetAudioTranslationOptions TranslationCreateParams Arayüz
GetChatCompletionsOptions ChatCompletionCreateParamsNonStreaming ve ChatCompletionCreateParamsStreaming Arayüz
GetCompletionsOptions CompletionCreateParams Arayüz
GetEmbeddingsOptions EmbeddingCreateParams Arayüz
GetImagesOptions ImageGenerateParams Arayüz
ImageGenerationData Image Arayüz
ImageGenerationQuality Mevcut Değil Diğer ad
ImageGenerationResponseFormat Mevcut Değil Diğer ad
ImageGenerations ImagesResponse Arayüz
ImageGenerationStyle Mevcut Değil Diğer ad
ImageSize Mevcut Değil Diğer ad
MaxTokensFinishDetails Mevcut Değil Arayüz
OpenAIClientOptions AzureClientOptions Arayüz
OpenAIError OpenAIError Arayüz
OpenAIKeyCredential Mevcut Değil Sınıf
StopFinishDetails Mevcut Değil Arayüz

Azure türleri

AzureOpenAI Azure OpenAI'ye bağlanır ve hizmette kullanılabilen tüm işlemleri çağırabilir. Ancak, istek ve yanıt türleri OpenAI devralındı ve henüz yalnızca Azure OpenAI hizmeti tarafından desteklenen ek özellikleri yansıtacak şekilde güncellenmedi. TypeScript kullanıcılarının "@azure/openai/types"'dan @azure/openai@2.0.0-beta.1 içeri aktarması gerekir ve bu da Azure özgü tanımları var olan türlerle birleştirir. Geçiş örnekleri bölümündeki örnekler bunun nasıl yapılacağını gösterir.