Kommentar
Å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.
Gäller endast för:Foundry-portalen (klassisk). Den här artikeln är inte tillgänglig för den nya Foundry-portalen.
Läs mer om den nya portalen.
Anmärkning
Länkar i den här artikeln kan öppna innehåll i den nya Microsoft Foundry-dokumentationen i stället för den foundry-dokumentation (klassisk) som du visar nu.
Viktigt!
De senaste API-exemplen finns i artikeln OM API-livscykel.
Autentisera klienten
Det finns flera sätt att autentisera API-begäranden till Azure OpenAI. Vi rekommenderar starkt att du använder Microsoft Entra ID token. Mer information finns i dokumentationen Azure Identity.
Microsoft Entra ID
Det finns flera sätt att autentisera med Azure OpenAI med hjälp av Microsoft Entra ID token. Standardsättet är att använda klassen DefaultAzureCredential från paketet @azure/identity, men programmet kanske använder en annan klass för autentiseringsuppgifter. I den här guiden förutsätter vi att du använder DefaultAzureCredential klassen. Du kan skapa en autentiseringsuppgift på följande sätt:
import { DefaultAzureCredential } from "@azure/identity";
const credential = new DefaultAzureCredential();
Skicka det här objektet till konstruktorns OpenAIClient andra argument.
För att kunna autentisera AzureOpenAI-klienten måste vi dock använda funktionen getBearerTokenProvider från paketet @azure/identity. Den här funktionen skapar en tokenprovider som AzureOpenAI använder internt för att hämta token för varje begäran. Tokenprovidern skapas på följande sätt:
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
const credential = new DefaultAzureCredential();
const scope = "https://ai.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
azureADTokenProvider skickas till alternativobjektet när klienten skapas AzureOpenAI .
(Starkt avrådd) API-nyckel
Använd inte API-nycklar i produktion eftersom de är mindre säkra än andra autentiseringsmetoder. Tidigare skapade du AzureKeyCredential objekt på följande sätt för att autentisera OpenAIClient:
import { AzureKeyCredential } from "@azure/openai";
const apiKey = new AzureKeyCredential("your API key");
Å andra sidan AzureOpenAI kan autentiseras med en API-nyckel genom att ange AZURE_OPENAI_API_KEY miljövariabeln eller genom att ange strängegenskapen apiKey i alternativobjektet AzureOpenAI när klienten skapas.
Viktigt!
Använd API-nycklar med försiktighet. Inkludera inte API-nyckeln direkt i koden och publicera den aldrig offentligt. Om du använder en API-nyckel lagrar du den på ett säkert sätt i Azure Key Vault. Mer information om hur du använder API-nycklar på ett säkert sätt i dina appar finns i API-nycklar med Azure Key Vault.
Mer information om säkerhet för AI-tjänster finns i Autentisera begäranden till Azure AI services.
Konstruera klienten
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);
Slutpunkten för Azure OpenAI-resursen kan anges genom att ange alternativet endpoint, men den kan också läsas in av klienten från miljövariabeln AZURE_OPENAI_ENDPOINT. Det här är det rekommenderade sättet att ange slutpunkten eftersom den tillåter att klienten används i olika miljöer utan att ändra koden och även för att skydda slutpunkten från att exponeras i koden.
API-versionen måste anges, detta är nödvändigt för att säkerställa att befintlig kod inte bryts mellan förhandsversioner av API:et. Mer information om Azure OpenAI API-versioner finns i dokumentationen om API-versionshantering. Dessutom krävs inte egenskapen deployment , men vi rekommenderar att du anger den. När deployment har ställts in används den som standarddistribution för alla åtgärder som kräver det. Om klienten inte skapas med deployment-alternativet, ska model-egenskapen i alternativobjektet anges med distributionsnamnet. Ljudåtgärder som audio.transcriptions.create kräver dock att klienten skapas med deployment alternativet inställt på distributionsnamnet.
Skillnader i API:er
Klienterna OpenAIClient och AzureOpenAI har viktiga skillnader:
-
OpenAIClientpresenterar åtgärder som en platt lista över metoder, till exempelclient.getChatCompletions.AzureOpenAIgruppera åtgärder i kapslade grupper, till exempelclient.chat.completions.create. -
OpenAIClientanvänder andra namn än Azure OpenAI API. Till exempel använder API:et snake case, men klienten använder camel case.AzureOpenAIanvänder samma namn som Azure OpenAI API.
Migreringsexempel
Följande avsnitt innehåller exempel på hur du migrerar från OpenAIClient till AzureOpenAI.
Chatten har slutförts
const result = await client.chat.completions.create({ messages, model: '', max_tokens: 100 });
Notera följande:
- Metoden
getChatCompletionshar ersatts medchat.completions.create-metoden. - Parametern
messagesskickas nu i alternativobjektet med egenskapenmessages. - Byt namn på
maxTokensegenskapen tillmax_tokensoch ta bort parameterndeploymentName. I allmänhet är namnen på egenskaperna ioptionsobjektet desamma som i Azure OpenAI API. API:t använder snake case i stället för den camel case-konvention som används iOpenAIClient. Den här namngivningskonventionen gäller för alla egenskaper för alla begäranden och svar iAzureOpenAIklienten. - Parametern
deploymentNamebehövs inte om klienten skapades med alternativetdeployment. Om klienten inte har skapats meddeployment-alternativet, börmodel-egenskapen i alternativobjektet anges med distributionsnamnet.
Slutförande av direktuppspelningschatt
const stream = await client.chat.completions.create({ model: '', messages, max_tokens: 100, stream: true });
Azure för dina data
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"importeras vilket lägger till Azure-specifika definitioner (till exempeldata_sources) till klienttyperna. - Egenskapen
azureExtensionOptionshar ersatts med den inredata_sourcesegenskapen. - Egenskapen
parametershar lagts till för att omsluta parametrarna för tillägget, vilket speglar schemat för Azure OpenAI API. - Camel case-egenskaper har ersatts med snake case-egenskaper.
Ljudavskrift
import { createReadStream } from "fs";
const result = await client.audio.transcriptions.create({
model: '',
file: createReadStream(audioFilePath),
});
- Metoden
getAudioTranscriptionhar ersatts medaudio.transcriptions.create-metoden. -
AzureOpenAImåste konstrueras meddeploymentalternativet som är inställt på distributionsnamnet för att kunna använda ljudoperationer somaudio.transcriptions.create. - Egenskapen
modelmåste anges i alternativobjektet, men dess värde används inte i åtgärden, så du kan ställa in den på valfritt värde. - Egenskapen
fileaccepterar olika typer, inklusiveBuffer,fs.ReadaStreamochBlobmen i det här exemplet strömmas en fil från disken med hjälp avfs.createReadStream.
Ljudöversättning
import { createReadStream } from "fs";
const result = await client.audio.translations.create({
model: '',
file: createReadStream(audioFilePath),
});
- Metoden
getAudioTranslationhar ersatts medaudio.translations.create-metoden. - Alla andra ändringar är desamma som i exemplet med ljudavskrift.
Inbäddningar
I följande exempel visas hur du migrerar metodanropet getEmbeddings .
const embeddings = await client.embeddings.create({ input, model: '' });
- Metoden
getEmbeddingshar ersatts medembeddings.create-metoden. - Parametern
inputskickas nu i alternativobjektet med egenskapeninput. - Parametern
deploymentNamehar tagits bort. ParameterndeploymentNamebehövs inte om klienten skapades med alternativetdeployment. Om klienten inte har skapats meddeployment-alternativet, börmodel-egenskapen i alternativobjektet anges med distributionsnamnet.
Bildgenerering
I följande exempel visas hur du migrerar metodanropet getImages .
const results = await client.images.generate({ prompt, model: '', n, size });
- Metoden
getImageshar ersatts medimages.generate-metoden. - Parametern
promptskickas nu i alternativobjektet med egenskapenprompt. - Parametern
deploymentNamehar tagits bort. ParameterndeploymentNamebehövs inte om klienten skapades med alternativetdeployment. Om klienten inte har skapats meddeployment-alternativet, börmodel-egenskapen i alternativobjektet anges med distributionsnamnet.
Innehållsfilter
Resultat av innehållsfilter är en del av svarstyperna för chattavslut i OpenAIClient. Har dock AzureOpenAI ingen direkt motsvarighet till contentFilterResults egenskapen i ChatCompletion.Choice gränssnittet. Du kan komma åt innehållsfilterresultatet genom att importera "@azure/openai/types" och komma åt egenskapen content_filter_results. I följande exempel visas hur du får åtkomst till resultatet av innehållsfiltret.
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;
...
}
- Camel case-egenskaper har ersatts med snake case-egenskaper.
- När
"@azure/openai/types"importeras, vilket lägger till Azure-specifika definitioner (till exempel content_filter_results) till klienttyperna, se avsnittet Azure-typer för mer information.
Jämföra typer
I följande tabell utforskas flera typnamn från @azure/openai och visar deras närmaste openai motsvarande. Namnskillnaderna illustrerar flera av ovan nämnda ändringar. Den här tabellen ger en översikt och mer information och kodexempel finns i följande avsnitt.
| Namn på gammal typ | Närmaste nya typ | Symboltyp | Ändra beskrivning |
|---|---|---|---|
OpenAIClient |
AzureOpenAI |
Class | Den här klassen ersätter den förra och har inga gemensamma metoder. Se avsnittet om AzureOpenAI nedan. |
AudioResult |
Transcription/Transcription |
Gränssnitt | Beroende på anropsåtgärden ersätter de två gränssnitten den tidigare |
AudioResultFormat |
inline union type för response_format egenskapen |
Alias | Den finns inte |
AudioResultSimpleJson |
Transcription/Transcription |
Gränssnitt | Beroende på anropsåtgärden ersätter de två gränssnitten den tidigare |
AudioResultVerboseJson |
N/A | Gränssnitt | |
AudioSegment |
N/A | Gränssnitt | |
AudioTranscriptionTask |
N/A | Alias | |
AzureChatEnhancementConfiguration, AzureChatEnhancements, AzureChatExtensionConfiguration, AzureChatExtensionConfigurationUnion, AzureChatExtensionDataSourceResponseCitation, AzureChatExtensionsMessageContext, AzureChatExtensionType, AzureChatGroundingEnhancementConfiguration, AzureChatOCREnhancementConfiguration, AzureCosmosDBChatExtensionConfiguration, AzureCosmosDBFieldMappingOptions, AzureExtensionsOptions, AzureGroundingEnhancement, AzureGroundingEnhancementCoordinatePoint, AzureGroundingEnhancementLine, AzureGroundingEnhancementLineSpan, AzureSearchChatExtensionConfiguration, ContentFilterCitedDetectionResult, AzureSearchIndexFieldMappingOptions, AzureMachineLearningIndexChatExtensionConfiguration, ContentFilterDetectionResult, AzureSearchQueryType, ContentFilterBlocklistIdResult, ContentFilterErrorResults, ContentFilterSeverity, ContentFilterResult, ContentFilterResultsForPrompt, ContentFilterSuccessResultsForChoice, ContentFilterSuccessResultDetailsForPrompt, ContentFilterResultsForChoice, ContentFilterResultDetailsForPrompt, ElasticsearchIndexFieldMappingOptions, ElasticsearchChatExtensionConfiguration, ImageGenerationContentFilterResults, ImageGenerationPromptFilterResults, OnYourDataAccessTokenAuthenticationOptions, ElasticsearchQueryType, OnYourDataDeploymentNameVectorizationSource, OnYourDataAuthenticationOptionsUnion, OnYourDataEncodedApiKeyAuthenticationOptions, OnYourDataEndpointVectorizationSource, OnYourDataConnectionStringAuthenticationOptions, OnYourDataApiKeyAuthenticationOptions, OnYourDataKeyAndKeyIdAuthenticationOptions, OnYourDataAuthenticationOptions, PineconeChatExtensionConfiguration, OnYourDataModelIdVectorizationSource, OnYourDataSystemAssignedManagedIdentityAuthenticationOptions, OnYourDataUserAssignedManagedIdentityAuthenticationOptions, OnYourDataVectorizationSource, OnYourDataVectorizationSourceType, OnYourDataVectorizationSourceUnion, PineconeFieldMappingOptions |
N/A | Gränssnitt och alias | Se avsnittet Azure typer nedan |
AzureKeyCredential |
N/A | Class | API-nyckeln kan anges som ett strängvärde |
ChatChoice |
ChatCompletion.Choice |
Gränssnitt | |
ChatChoiceLogProbabilityInfo |
Logprobs |
Gränssnitt | |
ChatCompletions |
ChatCompletion och ChatCompletionChunk |
Gränssnitt | |
ChatCompletionsFunctionToolCall |
ChatCompletionMessageToolCall |
Gränssnitt | |
ChatRequestFunctionMessage |
ChatCompletionFunctionMessageParam |
Gränssnitt | |
ChatRequestMessage |
ChatCompletionMessageParam |
Gränssnitt | |
ChatRequestMessageUnion |
ChatCompletionMessageParam |
||
ChatRequestSystemMessage |
ChatCompletionSystemMessageParam |
Gränssnitt | |
ChatRequestToolMessage |
ChatCompletionToolMessageParam |
Gränssnitt | |
ChatRequestUserMessage |
ChatCompletionUserMessageParam |
Gränssnitt | |
ChatResponseMessage |
Delta / ChatCompletionMessage |
Gränssnitt | |
ChatRole |
N/A | Alias | |
ChatTokenLogProbabilityInfo |
TopLogprob |
Gränssnitt | |
ChatTokenLogProbabilityResult |
ChatCompletionTokenLogprob |
Gränssnitt | |
Choice |
Choice |
Gränssnitt | |
Completions |
Completion |
Gränssnitt | |
CompletionsFinishReason |
N/A | Alias | |
CompletionsLogProbabilityModel |
Logprobs |
Gränssnitt | |
CompletionsUsage |
CompletionUsage |
Gränssnitt | |
EmbeddingItem |
Embedding |
Gränssnitt | |
Embeddings |
CreateEmbeddingResponse |
Gränssnitt | |
EmbeddingsUsage |
CreateEmbeddingResponse.Usage |
Gränssnitt | |
EventStream |
Stream |
Gränssnitt | |
FunctionCall |
FunctionCall |
Gränssnitt | |
FunctionCallPreset |
N/A | Alias | |
FunctionDefinition |
Function |
Gränssnitt | |
FunctionName |
N/A | Alias | |
GetAudioTranscriptionOptions |
TranscriptionCreateParams |
Gränssnitt | |
GetAudioTranslationOptions |
TranslationCreateParams |
Gränssnitt | |
GetChatCompletionsOptions |
ChatCompletionCreateParamsNonStreaming och ChatCompletionCreateParamsStreaming |
Gränssnitt | |
GetCompletionsOptions |
CompletionCreateParams |
Gränssnitt | |
GetEmbeddingsOptions |
EmbeddingCreateParams |
Gränssnitt | |
GetImagesOptions |
ImageGenerateParams |
Gränssnitt | |
ImageGenerationData |
Image |
Gränssnitt | |
ImageGenerationQuality |
N/A | Alias | |
ImageGenerationResponseFormat |
N/A | Alias | |
ImageGenerations |
ImagesResponse |
Gränssnitt | |
ImageGenerationStyle |
N/A | Alias | |
ImageSize |
N/A | Alias | |
MaxTokensFinishDetails |
N/A | Gränssnitt | |
OpenAIClientOptions |
AzureClientOptions |
Gränssnitt | |
OpenAIError |
OpenAIError |
Gränssnitt | |
OpenAIKeyCredential |
N/A | Class | |
StopFinishDetails |
N/A | Gränssnitt |
Azure-typer
AzureOpenAI ansluter till Azure OpenAI och kan anropa alla åtgärder som är tillgängliga i tjänsten. Men typerna av begäranden och svar ärvs från OpenAI och har ännu inte uppdaterats för att återspegla de ytterligare funktioner som stöds uteslutande av Azure OpenAI-tjänsten. TypeScript-användare måste importera "@azure/openai/types" från @azure/openai@2.0.0-beta.1 som sammanfogar Azure-specifika definitioner till befintliga typer. Exempel i avsnittet migreringsexempel visar hur man gör detta.