Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Alleen van toepassing op:Foundry (klassiek) portal. Dit artikel is niet beschikbaar voor de nieuwe Foundry-portal.
Meer informatie over de nieuwe portal.
Opmerking
Koppelingen in dit artikel kunnen inhoud openen in de nieuwe Microsoft Foundry-documentatie in plaats van de Foundry-documentatie (klassiek) die u nu bekijkt.
Belangrijk
Raadpleeg het artikel over de LEVENSCYCLUS van de API voor de meest recente API-voorbeelden.
De client verifiëren
Er zijn verschillende manieren om API-aanvragen te verifiëren voor Azure OpenAI. We raden u ten zeerste aan om Microsoft Entra ID tokens te gebruiken. Zie de documentatie Azure Identity voor meer informatie.
Microsoft Entra ID
Er zijn verschillende manieren om te verifiëren met de Azure OpenAI met behulp van Microsoft Entra ID tokens. De standaardinstelling is om de klasse DefaultAzureCredential uit het @azure/identity-pakket te gebruiken, maar uw toepassing gebruikt mogelijk een andere referentieklasse. Voor deze handleiding gaan we ervan uit dat u de DefaultAzureCredential klasse gebruikt. U kunt als volgt aanmeldgegevens maken:
import { DefaultAzureCredential } from "@azure/identity";
const credential = new DefaultAzureCredential();
Geef dit object door aan het tweede argument van de OpenAIClient constructor.
Om de AzureOpenAI-client te verifiëren, moeten we echter de functie getBearerTokenProvider van het pakket @azure/identity gebruiken. Met deze functie maakt u een tokenprovider die AzureOpenAI intern wordt gebruikt om tokens voor elke aanvraag te verkrijgen. De tokenprovider wordt als volgt gemaakt:
import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity";
const credential = new DefaultAzureCredential();
const scope = "https://ai.azure.com/.default";
const azureADTokenProvider = getBearerTokenProvider(credential, scope);
azureADTokenProvider wordt doorgegeven aan het optiesobject bij het maken van de AzureOpenAI client.
(Sterk afgeraden) API-sleutel
Gebruik geen API-sleutels in productie omdat ze minder veilig zijn dan andere verificatiemethoden. Eerder hebt u als volgt objecten gemaakt AzureKeyCredential om te verifiëren OpenAIClient:
import { AzureKeyCredential } from "@azure/openai";
const apiKey = new AzureKeyCredential("your API key");
Aan de andere kant AzureOpenAI kan worden geverifieerd met een API-sleutel door de AZURE_OPENAI_API_KEY omgevingsvariabele in te stellen of door de apiKey tekenreekseigenschap in te stellen in het optiesobject bij het maken van de AzureOpenAI client.
Belangrijk
Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u een API-sleutel gebruikt, slaat u deze veilig op in Azure Key Vault. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.
Zie Authenticate requests to Azure AI-services voor meer informatie over beveiliging van AI-services.
De client samenstellen
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);
Het eindpunt van de Azure OpenAI-resource kan worden opgegeven door de optie endpoint in te stellen, maar kan ook worden geladen door de client vanuit de omgevingsvariabele AZURE_OPENAI_ENDPOINT. Dit is de aanbevolen manier om het eindpunt in te stellen, omdat de client in verschillende omgevingen kan worden gebruikt zonder de code te wijzigen en het eindpunt ook te beschermen tegen blootstelling in de code.
De API-versie moet worden opgegeven. Dit is nodig om ervoor te zorgen dat bestaande code niet wordt verbroken tussen preview-API-versies. Raadpleeg API-versiebeheerdocumentatie voor meer informatie over Azure OpenAI API-versies. Daarnaast is de deployment eigenschap niet vereist, maar het wordt aanbevolen om in te stellen. Zodra deployment deze is ingesteld, wordt deze gebruikt als de standaardimplementatie voor alle bewerkingen waarvoor deze is vereist. Als de client niet met de deployment optie is gemaakt, moet de model eigenschap in het object Opties worden ingesteld met de implementatienaam. Audiobewerkingen zoals audio.transcriptions.create vereisen dat de client wordt gemaakt met de deployment optie die is ingesteld op de implementatienaam.
API-verschillen
De OpenAIClient en AzureOpenAI clients hebben belangrijke verschillen:
-
OpenAIClientgeeft bewerkingen weer als een platte lijst met methoden, zoalsclient.getChatCompletions.AzureOpenAIgroepeert bewerkingen in geneste groepen, zoalsclient.chat.completions.create. -
OpenAIClientgebruikt andere namen dan de Azure OpenAI-API. De API gebruikt bijvoorbeeld snake case, maar de clienttoepassing gebruikt camelCase.AzureOpenAIgebruikt dezelfde namen als de Azure OpenAI-API.
Migratievoorbeelden
De volgende secties bevatten voorbeelden van het migreren van OpenAIClient naar AzureOpenAI.
Chatresultaten
const result = await client.chat.completions.create({ messages, model: '', max_tokens: 100 });
Let op het volgende:
- De
getChatCompletionsmethode is vervangen door dechat.completions.createmethode. - De
messagesparameter wordt nu doorgegeven in het optiesobject met demessageseigenschap. - Wijzig de naam van de
maxTokenseigenschap inmax_tokensen verwijder dedeploymentNameparameter. Over het algemeen zijn de namen van de eigenschappen in hetoptionsobject hetzelfde als in de Azure OpenAI-API. De API gebruikt snake case in plaats van de camelCase-conventie die inOpenAIClientwordt gebruikt. Deze naamconventie is van toepassing op alle eigenschappen voor alle aanvragen en antwoorden in deAzureOpenAIclient. - De
deploymentNameparameter is niet nodig als de client is gemaakt met dedeploymentoptie. Als de client niet is gemaakt met dedeploymentoptie, moet demodeleigenschap in het optieobject worden ingesteld met de implementatienaam.
Voltooiingen van streaminggesprekken
const stream = await client.chat.completions.create({ model: '', messages, max_tokens: 100, stream: true });
Azure op uw gegevens
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"wordt geïmporteerd, waarmee Azure-specifieke definities (bijvoorbeelddata_sources) worden toegevoegd aan de clienttypen. - De
azureExtensionOptionseigenschap is vervangen door de binnenstedata_sourceseigenschap. - De eigenschap
parametersis toegevoegd om de parameters van de extensie te verpakken, die het schema van de Azure OpenAI-API spiegelt. - Eigenschappen in camelCase zijn vervangen door snake_case eigenschappen.
Audiotranscriptie
import { createReadStream } from "fs";
const result = await client.audio.transcriptions.create({
model: '',
file: createReadStream(audioFilePath),
});
- De
getAudioTranscriptionmethode is vervangen door deaudio.transcriptions.createmethode. - De
AzureOpenAImoet worden geconfigureerd met dedeployment-optie ingesteld op de implementatienaam om audiobewerkingen zoalsaudio.transcriptions.createmogelijk te maken. - De
modeleigenschap moet worden ingesteld in het optiesobject, maar de waarde wordt niet gebruikt in de bewerking, dus u kunt deze gerust instellen op een willekeurige waarde. - De
fileeigenschap accepteert verschillende typen, waaronderBuffer,fs.ReadaStreamenBlobin dit voorbeeld wordt een bestand gestreamd vanaf schijf met behulp vanfs.createReadStream.
Audiovertaling
import { createReadStream } from "fs";
const result = await client.audio.translations.create({
model: '',
file: createReadStream(audioFilePath),
});
- De
getAudioTranslationmethode is vervangen door deaudio.translations.createmethode. - Alle andere wijzigingen zijn hetzelfde als in het voorbeeld van audiotranscriptie.
Embedderingen
In het volgende voorbeeld ziet u hoe u de getEmbeddings methode-aanroep migreert.
const embeddings = await client.embeddings.create({ input, model: '' });
- De
getEmbeddingsmethode is vervangen door deembeddings.createmethode. - De
inputparameter wordt nu doorgegeven in het optiesobject met deinputeigenschap. - De
deploymentNameparameter is verwijderd. DedeploymentNameparameter is niet nodig als de client is gemaakt met dedeploymentoptie. Als de client niet is gemaakt met dedeploymentoptie, moet demodeleigenschap in het optieobject worden ingesteld met de implementatienaam.
Afbeeldingsgeneratie
In het volgende voorbeeld ziet u hoe u de getImages methode-aanroep migreert.
const results = await client.images.generate({ prompt, model: '', n, size });
- De
getImagesmethode is vervangen door deimages.generatemethode. - De
promptparameter wordt nu doorgegeven in het optiesobject met deprompteigenschap. - De
deploymentNameparameter is verwijderd. DedeploymentNameparameter is niet nodig als de client is gemaakt met dedeploymentoptie. Als de client niet is gemaakt met dedeploymentoptie, moet demodeleigenschap in het optieobject worden ingesteld met de implementatienaam.
Inhoudsfilter
Resultaten van inhoudsfilters maken deel uit van de antwoordtypen voor chat-voltooiingen in OpenAIClient.
AzureOpenAI Heeft echter geen direct equivalent aan de contentFilterResults eigenschap in de ChatCompletion.Choice interface. De resultaten van het inhoudsfilter kunnen worden geopend door "@azure/openai/types" te importeren en toegang te krijgen tot de eigenschap content_filter_results. In het volgende voorbeeld ziet u hoe u toegang kunt krijgen tot de resultaten van het inhoudsfilter.
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;
...
}
- Eigenschappen in camelCase zijn vervangen door snake_case eigenschappen.
-
"@azure/openai/types"wordt geïmporteerd, waarmee Azure-specifieke definities (bijvoorbeeld content_filter_results) worden toegevoegd aan de clienttypen, raadpleegt u de sectie Azure typen voor meer informatie.
Typen vergelijken
De volgende tabel verkent verschillende typenamen uit @azure/openai en toont de dichtstbijzijnde openai equivalent. De namen verschillen illustreren een aantal van de hierboven genoemde wijzigingen. Deze tabel bevat een overzicht en meer details en codevoorbeelden vindt u in de volgende secties.
| Oude typenaam | Dichtstbijzijnd nieuw type | Symbooltype | Beschrijving wijzigen |
|---|---|---|---|
OpenAIClient |
AzureOpenAI |
Klasse | Deze klasse vervangt het voormalige en heeft geen methoden die er gemeen mee zijn. Zie de sectie over AzureOpenAI hieronder. |
AudioResult |
Transcription/Transcription |
gebruikersinterface | Afhankelijk van de aanroepende bewerking vervangen de twee interfaces de vorige |
AudioResultFormat |
inline samenvoegingstype van de response_format eigenschap |
Alternatieve naam | Het bestaat niet |
AudioResultSimpleJson |
Transcription/Transcription |
gebruikersinterface | Afhankelijk van de aanroepende bewerking vervangen de twee interfaces de vorige |
AudioResultVerboseJson |
N/A | gebruikersinterface | |
AudioSegment |
N/A | gebruikersinterface | |
AudioTranscriptionTask |
N/A | Alternatieve naam | |
AzureChatEnhancementConfiguration, ContentFilterSuccessResultDetailsForPrompt, 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, ContentFilterSuccessResultsForChoice, ElasticsearchChatExtensionConfiguration, ElasticsearchIndexFieldMappingOptions, ElasticsearchQueryType, ImageGenerationContentFilterResults, ImageGenerationPromptFilterResults, OnYourDataAccessTokenAuthenticationOptions, OnYourDataApiKeyAuthenticationOptions, OnYourDataAuthenticationOptions, OnYourDataAuthenticationOptionsUnion, OnYourDataConnectionStringAuthenticationOptions, OnYourDataDeploymentNameVectorizationSource, OnYourDataEncodedApiKeyAuthenticationOptions, OnYourDataEndpointVectorizationSource, OnYourDataKeyAndKeyIdAuthenticationOptions, OnYourDataModelIdVectorizationSource, OnYourDataSystemAssignedManagedIdentityAuthenticationOptions, OnYourDataUserAssignedManagedIdentityAuthenticationOptions, OnYourDataVectorizationSource, OnYourDataVectorizationSourceType, OnYourDataVectorizationSourceUnion, PineconeChatExtensionConfiguration, PineconeFieldMappingOptions |
N/A | Interfaces en Aliassen | Zie de sectie Azure typen hieronder |
AzureKeyCredential |
N/A | Klasse | De API-sleutel kan worden opgegeven als tekenreekswaarde |
ChatChoice |
ChatCompletion.Choice |
gebruikersinterface | |
ChatChoiceLogProbabilityInfo |
Logprobs |
gebruikersinterface | |
ChatCompletions |
ChatCompletion en ChatCompletionChunk |
gebruikersinterface | |
ChatCompletionsFunctionToolCall |
ChatCompletionMessageToolCall |
gebruikersinterface | |
ChatRequestFunctionMessage |
ChatCompletionFunctionMessageParam |
gebruikersinterface | |
ChatRequestMessage |
ChatCompletionMessageParam |
gebruikersinterface | |
ChatRequestMessageUnion |
ChatCompletionMessageParam |
||
ChatRequestSystemMessage |
ChatCompletionSystemMessageParam |
gebruikersinterface | |
ChatRequestToolMessage |
ChatCompletionToolMessageParam |
gebruikersinterface | |
ChatRequestUserMessage |
ChatCompletionUserMessageParam |
gebruikersinterface | |
ChatResponseMessage |
Delta / ChatCompletionMessage |
gebruikersinterface | |
ChatRole |
N/A | Alternatieve naam | |
ChatTokenLogProbabilityInfo |
TopLogprob |
gebruikersinterface | |
ChatTokenLogProbabilityResult |
ChatCompletionTokenLogprob |
gebruikersinterface | |
Choice |
Choice |
gebruikersinterface | |
Completions |
Completion |
gebruikersinterface | |
CompletionsFinishReason |
N/A | Alternatieve naam | |
CompletionsLogProbabilityModel |
Logprobs |
gebruikersinterface | |
CompletionsUsage |
CompletionUsage |
gebruikersinterface | |
EmbeddingItem |
Embedding |
gebruikersinterface | |
Embeddings |
CreateEmbeddingResponse |
gebruikersinterface | |
EmbeddingsUsage |
CreateEmbeddingResponse.Usage |
gebruikersinterface | |
EventStream |
Stream |
gebruikersinterface | |
FunctionCall |
FunctionCall |
gebruikersinterface | |
FunctionCallPreset |
N/A | Alternatieve naam | |
FunctionDefinition |
Function |
gebruikersinterface | |
FunctionName |
N/A | Alternatieve naam | |
GetAudioTranscriptionOptions |
TranscriptionCreateParams |
gebruikersinterface | |
GetAudioTranslationOptions |
TranslationCreateParams |
gebruikersinterface | |
GetChatCompletionsOptions |
ChatCompletionCreateParamsNonStreaming en ChatCompletionCreateParamsStreaming |
gebruikersinterface | |
GetCompletionsOptions |
CompletionCreateParams |
gebruikersinterface | |
GetEmbeddingsOptions |
EmbeddingCreateParams |
gebruikersinterface | |
GetImagesOptions |
ImageGenerateParams |
gebruikersinterface | |
ImageGenerationData |
Image |
gebruikersinterface | |
ImageGenerationQuality |
N/A | Alternatieve naam | |
ImageGenerationResponseFormat |
N/A | Alternatieve naam | |
ImageGenerations |
ImagesResponse |
gebruikersinterface | |
ImageGenerationStyle |
N/A | Alternatieve naam | |
ImageSize |
N/A | Alternatieve naam | |
MaxTokensFinishDetails |
N/A | gebruikersinterface | |
OpenAIClientOptions |
AzureClientOptions |
gebruikersinterface | |
OpenAIError |
OpenAIError |
gebruikersinterface | |
OpenAIKeyCredential |
N/A | Klasse | |
StopFinishDetails |
N/A | gebruikersinterface |
Azure typen
AzureOpenAI maakt verbinding met de Azure OpenAI en kan alle bewerkingen aanroepen die beschikbaar zijn in de service. De typen aanvragen en antwoorden worden echter overgenomen van de OpenAI en worden nog niet bijgewerkt om de aanvullende functies weer te geven die exclusief worden ondersteund door de Azure OpenAI-service. TypeScript-gebruikers moeten "@azure/openai/types" importeren uit @azure/openai@2.0.0-beta.1 waarmee Azure specifieke definities worden samengevoegd in bestaande typen. Voorbeelden in de sectie Migratievoorbeelden laten zien hoe je dit moet doen.