@ai-sdk/azure 3.0.126 → 3.0.128
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/index.d.mts +48 -3
- package/dist/index.d.ts +48 -3
- package/dist/index.js +235 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +244 -10
- package/dist/index.mjs.map +1 -1
- package/docs/04-azure.mdx +108 -1
- package/package.json +5 -5
- package/src/azure-openai-provider.ts +100 -13
- package/src/azure-speech-transcription-model-options.ts +46 -0
- package/src/azure-speech-transcription-model.ts +155 -0
- package/src/azure-transcription-model-options.ts +27 -0
- package/src/azure-transcription-provider-metadata.ts +17 -0
- package/src/index.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @ai-sdk/azure
|
|
2
2
|
|
|
3
|
+
## 3.0.128
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 8fff951: Add MAI-Transcribe-2 file transcription through `azure.transcription()` using the Azure Speech API, with diarization, word/segment timestamps, transcript styles, locale forcing, and phrase lists. Select the API with `providerOptions.azure.api` to override model-based routing, add a `speechBaseURL` setting for the Speech endpoint, and add `azure.transcriptionModel()` as an alias of `azure.transcription()`.
|
|
8
|
+
- Updated dependencies [29dc427]
|
|
9
|
+
- @ai-sdk/provider-utils@4.0.56
|
|
10
|
+
- @ai-sdk/openai@3.0.120
|
|
11
|
+
- @ai-sdk/deepseek@2.0.69
|
|
12
|
+
|
|
13
|
+
## 3.0.127
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [3983fea]
|
|
18
|
+
- @ai-sdk/provider@3.0.18
|
|
19
|
+
- @ai-sdk/provider-utils@4.0.55
|
|
20
|
+
- @ai-sdk/deepseek@2.0.68
|
|
21
|
+
- @ai-sdk/openai@3.0.119
|
|
22
|
+
|
|
3
23
|
## 3.0.126
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { DeepSeekLanguageModelOptions } from '@ai-sdk/deepseek';
|
|
2
2
|
export { OpenAILanguageModelChatOptions as OpenAIChatLanguageModelOptions, OpenAILanguageModelChatOptions, OpenAILanguageModelResponsesOptions, OpenAILanguageModelResponsesOptions as OpenAIResponsesProviderOptions, OpenAIResponsesSystemMessageOptions } from '@ai-sdk/openai';
|
|
3
3
|
import { ProviderV3, LanguageModelV3, EmbeddingModelV3, ImageModelV3, TranscriptionModelV3, SpeechModelV3 } from '@ai-sdk/provider';
|
|
4
|
-
import
|
|
4
|
+
import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
|
|
5
|
+
import { FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
|
|
5
6
|
import { codeInterpreter, fileSearch, imageGeneration, webSearch, webSearchPreview, ResponsesProviderMetadata, ResponsesReasoningProviderMetadata, ResponsesTextProviderMetadata, ResponsesSourceDocumentProviderMetadata } from '@ai-sdk/openai/internal';
|
|
6
7
|
|
|
7
8
|
declare const azureOpenaiTools: {
|
|
@@ -59,9 +60,14 @@ interface AzureOpenAIProvider extends ProviderV3 {
|
|
|
59
60
|
*/
|
|
60
61
|
imageModel(deploymentId: string): ImageModelV3;
|
|
61
62
|
/**
|
|
62
|
-
* Creates an Azure
|
|
63
|
+
* Creates an Azure transcription model. MAI-Transcribe-2 uses the Speech API
|
|
64
|
+
* by default; other IDs use OpenAI. Override with providerOptions.azure.api.
|
|
63
65
|
*/
|
|
64
66
|
transcription(deploymentId: string): TranscriptionModelV3;
|
|
67
|
+
/**
|
|
68
|
+
* Creates an Azure transcription model. Alias of `transcription`.
|
|
69
|
+
*/
|
|
70
|
+
transcriptionModel(deploymentId: string): TranscriptionModelV3;
|
|
65
71
|
/**
|
|
66
72
|
* Creates an Azure OpenAI model for speech generation.
|
|
67
73
|
*/
|
|
@@ -117,6 +123,13 @@ interface AzureOpenAIProviderSettings {
|
|
|
117
123
|
* `{baseURL}/v1{path}?api-version={apiVersion}`.
|
|
118
124
|
*/
|
|
119
125
|
useDeploymentBasedUrls?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* URL prefix for Azure Speech transcription (MAI-Transcribe-2), e.g. a
|
|
128
|
+
* regional endpoint like `https://eastus.api.cognitive.microsoft.com`.
|
|
129
|
+
* Defaults to `https://{resourceName}.cognitiveservices.azure.com`.
|
|
130
|
+
* Speech requests do not use `baseURL` or `apiVersion`.
|
|
131
|
+
*/
|
|
132
|
+
speechBaseURL?: string;
|
|
120
133
|
}
|
|
121
134
|
/**
|
|
122
135
|
* Create an Azure OpenAI provider instance.
|
|
@@ -142,8 +155,40 @@ type AzureResponsesSourceDocumentProviderMetadata = {
|
|
|
142
155
|
|
|
143
156
|
declare const VERSION: string;
|
|
144
157
|
|
|
158
|
+
declare const azureTranscriptionModelOptions: _ai_sdk_provider_utils.LazySchema<{
|
|
159
|
+
timestamps?: "word" | "segment" | "none" | undefined;
|
|
160
|
+
transcribeStyle?: "verbatim" | "clean" | undefined;
|
|
161
|
+
locales?: string[] | undefined;
|
|
162
|
+
diarization?: {
|
|
163
|
+
enabled: boolean;
|
|
164
|
+
} | undefined;
|
|
165
|
+
phraseList?: {
|
|
166
|
+
phrases: string[];
|
|
167
|
+
} | undefined;
|
|
168
|
+
api?: "openai" | "speech" | undefined;
|
|
169
|
+
}>;
|
|
170
|
+
type AzureTranscriptionModelOptions = InferSchema<typeof azureTranscriptionModelOptions>;
|
|
171
|
+
|
|
172
|
+
type AzureTranscriptionProviderMetadata = {
|
|
173
|
+
azure: {
|
|
174
|
+
phrases: Array<{
|
|
175
|
+
text: string;
|
|
176
|
+
offsetMilliseconds?: number | null;
|
|
177
|
+
durationMilliseconds?: number | null;
|
|
178
|
+
locale?: string | null;
|
|
179
|
+
speaker?: number | null;
|
|
180
|
+
confidence?: number | null;
|
|
181
|
+
words?: Array<{
|
|
182
|
+
text: string;
|
|
183
|
+
offsetMilliseconds?: number | null;
|
|
184
|
+
durationMilliseconds?: number | null;
|
|
185
|
+
}> | null;
|
|
186
|
+
}>;
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
|
|
145
190
|
type AzureDeepSeekLanguageModelOptions = Omit<DeepSeekLanguageModelOptions, 'thinking'>;
|
|
146
191
|
/** @deprecated Use `AzureDeepSeekLanguageModelOptions` instead. */
|
|
147
192
|
type AzureDeepSeekChatOptions = AzureDeepSeekLanguageModelOptions;
|
|
148
193
|
|
|
149
|
-
export { type AzureDeepSeekChatOptions, type AzureDeepSeekLanguageModelOptions, type AzureOpenAIProvider, type AzureOpenAIProviderSettings, type AzureResponsesProviderMetadata, type AzureResponsesReasoningProviderMetadata, type AzureResponsesSourceDocumentProviderMetadata, type AzureResponsesTextProviderMetadata, VERSION, azure, createAzure };
|
|
194
|
+
export { type AzureDeepSeekChatOptions, type AzureDeepSeekLanguageModelOptions, type AzureOpenAIProvider, type AzureOpenAIProviderSettings, type AzureResponsesProviderMetadata, type AzureResponsesReasoningProviderMetadata, type AzureResponsesSourceDocumentProviderMetadata, type AzureResponsesTextProviderMetadata, type AzureTranscriptionModelOptions, type AzureTranscriptionProviderMetadata, VERSION, azure, createAzure };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { DeepSeekLanguageModelOptions } from '@ai-sdk/deepseek';
|
|
2
2
|
export { OpenAILanguageModelChatOptions as OpenAIChatLanguageModelOptions, OpenAILanguageModelChatOptions, OpenAILanguageModelResponsesOptions, OpenAILanguageModelResponsesOptions as OpenAIResponsesProviderOptions, OpenAIResponsesSystemMessageOptions } from '@ai-sdk/openai';
|
|
3
3
|
import { ProviderV3, LanguageModelV3, EmbeddingModelV3, ImageModelV3, TranscriptionModelV3, SpeechModelV3 } from '@ai-sdk/provider';
|
|
4
|
-
import
|
|
4
|
+
import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
|
|
5
|
+
import { FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
|
|
5
6
|
import { codeInterpreter, fileSearch, imageGeneration, webSearch, webSearchPreview, ResponsesProviderMetadata, ResponsesReasoningProviderMetadata, ResponsesTextProviderMetadata, ResponsesSourceDocumentProviderMetadata } from '@ai-sdk/openai/internal';
|
|
6
7
|
|
|
7
8
|
declare const azureOpenaiTools: {
|
|
@@ -59,9 +60,14 @@ interface AzureOpenAIProvider extends ProviderV3 {
|
|
|
59
60
|
*/
|
|
60
61
|
imageModel(deploymentId: string): ImageModelV3;
|
|
61
62
|
/**
|
|
62
|
-
* Creates an Azure
|
|
63
|
+
* Creates an Azure transcription model. MAI-Transcribe-2 uses the Speech API
|
|
64
|
+
* by default; other IDs use OpenAI. Override with providerOptions.azure.api.
|
|
63
65
|
*/
|
|
64
66
|
transcription(deploymentId: string): TranscriptionModelV3;
|
|
67
|
+
/**
|
|
68
|
+
* Creates an Azure transcription model. Alias of `transcription`.
|
|
69
|
+
*/
|
|
70
|
+
transcriptionModel(deploymentId: string): TranscriptionModelV3;
|
|
65
71
|
/**
|
|
66
72
|
* Creates an Azure OpenAI model for speech generation.
|
|
67
73
|
*/
|
|
@@ -117,6 +123,13 @@ interface AzureOpenAIProviderSettings {
|
|
|
117
123
|
* `{baseURL}/v1{path}?api-version={apiVersion}`.
|
|
118
124
|
*/
|
|
119
125
|
useDeploymentBasedUrls?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* URL prefix for Azure Speech transcription (MAI-Transcribe-2), e.g. a
|
|
128
|
+
* regional endpoint like `https://eastus.api.cognitive.microsoft.com`.
|
|
129
|
+
* Defaults to `https://{resourceName}.cognitiveservices.azure.com`.
|
|
130
|
+
* Speech requests do not use `baseURL` or `apiVersion`.
|
|
131
|
+
*/
|
|
132
|
+
speechBaseURL?: string;
|
|
120
133
|
}
|
|
121
134
|
/**
|
|
122
135
|
* Create an Azure OpenAI provider instance.
|
|
@@ -142,8 +155,40 @@ type AzureResponsesSourceDocumentProviderMetadata = {
|
|
|
142
155
|
|
|
143
156
|
declare const VERSION: string;
|
|
144
157
|
|
|
158
|
+
declare const azureTranscriptionModelOptions: _ai_sdk_provider_utils.LazySchema<{
|
|
159
|
+
timestamps?: "word" | "segment" | "none" | undefined;
|
|
160
|
+
transcribeStyle?: "verbatim" | "clean" | undefined;
|
|
161
|
+
locales?: string[] | undefined;
|
|
162
|
+
diarization?: {
|
|
163
|
+
enabled: boolean;
|
|
164
|
+
} | undefined;
|
|
165
|
+
phraseList?: {
|
|
166
|
+
phrases: string[];
|
|
167
|
+
} | undefined;
|
|
168
|
+
api?: "openai" | "speech" | undefined;
|
|
169
|
+
}>;
|
|
170
|
+
type AzureTranscriptionModelOptions = InferSchema<typeof azureTranscriptionModelOptions>;
|
|
171
|
+
|
|
172
|
+
type AzureTranscriptionProviderMetadata = {
|
|
173
|
+
azure: {
|
|
174
|
+
phrases: Array<{
|
|
175
|
+
text: string;
|
|
176
|
+
offsetMilliseconds?: number | null;
|
|
177
|
+
durationMilliseconds?: number | null;
|
|
178
|
+
locale?: string | null;
|
|
179
|
+
speaker?: number | null;
|
|
180
|
+
confidence?: number | null;
|
|
181
|
+
words?: Array<{
|
|
182
|
+
text: string;
|
|
183
|
+
offsetMilliseconds?: number | null;
|
|
184
|
+
durationMilliseconds?: number | null;
|
|
185
|
+
}> | null;
|
|
186
|
+
}>;
|
|
187
|
+
};
|
|
188
|
+
};
|
|
189
|
+
|
|
145
190
|
type AzureDeepSeekLanguageModelOptions = Omit<DeepSeekLanguageModelOptions, 'thinking'>;
|
|
146
191
|
/** @deprecated Use `AzureDeepSeekLanguageModelOptions` instead. */
|
|
147
192
|
type AzureDeepSeekChatOptions = AzureDeepSeekLanguageModelOptions;
|
|
148
193
|
|
|
149
|
-
export { type AzureDeepSeekChatOptions, type AzureDeepSeekLanguageModelOptions, type AzureOpenAIProvider, type AzureOpenAIProviderSettings, type AzureResponsesProviderMetadata, type AzureResponsesReasoningProviderMetadata, type AzureResponsesSourceDocumentProviderMetadata, type AzureResponsesTextProviderMetadata, VERSION, azure, createAzure };
|
|
194
|
+
export { type AzureDeepSeekChatOptions, type AzureDeepSeekLanguageModelOptions, type AzureOpenAIProvider, type AzureOpenAIProviderSettings, type AzureResponsesProviderMetadata, type AzureResponsesReasoningProviderMetadata, type AzureResponsesSourceDocumentProviderMetadata, type AzureResponsesTextProviderMetadata, type AzureTranscriptionModelOptions, type AzureTranscriptionProviderMetadata, VERSION, azure, createAzure };
|
package/dist/index.js
CHANGED
|
@@ -30,7 +30,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
30
30
|
var import_internal2 = require("@ai-sdk/openai/internal");
|
|
31
31
|
var import_internal3 = require("@ai-sdk/deepseek/internal");
|
|
32
32
|
var import_provider = require("@ai-sdk/provider");
|
|
33
|
-
var
|
|
33
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
|
34
34
|
|
|
35
35
|
// src/azure-openai-tools.ts
|
|
36
36
|
var import_internal = require("@ai-sdk/openai/internal");
|
|
@@ -42,8 +42,173 @@ var azureOpenaiTools = {
|
|
|
42
42
|
webSearchPreview: import_internal.webSearchPreview
|
|
43
43
|
};
|
|
44
44
|
|
|
45
|
+
// src/azure-speech-transcription-model.ts
|
|
46
|
+
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
|
47
|
+
var import_v43 = require("zod/v4");
|
|
48
|
+
|
|
49
|
+
// src/azure-transcription-model-options.ts
|
|
50
|
+
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
|
51
|
+
var import_v42 = require("zod/v4");
|
|
52
|
+
|
|
53
|
+
// src/azure-speech-transcription-model-options.ts
|
|
54
|
+
var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
55
|
+
var import_v4 = require("zod/v4");
|
|
56
|
+
var azureSpeechTranscriptionModelOptionsShape = () => ({
|
|
57
|
+
/**
|
|
58
|
+
* Timing granularity. Defaults to `segment` so that transcription results
|
|
59
|
+
* include timed segments (Azure's own default is `none`).
|
|
60
|
+
*/
|
|
61
|
+
timestamps: import_v4.z.enum(["word", "segment", "none"]).optional(),
|
|
62
|
+
/**
|
|
63
|
+
* `verbatim` keeps fillers and false starts, `clean` removes them.
|
|
64
|
+
* Azure defaults to `verbatim`.
|
|
65
|
+
*/
|
|
66
|
+
transcribeStyle: import_v4.z.enum(["verbatim", "clean"]).optional(),
|
|
67
|
+
/**
|
|
68
|
+
* Forces a single language, e.g. `['en']`. Omit for automatic language
|
|
69
|
+
* detection and code switching.
|
|
70
|
+
*/
|
|
71
|
+
locales: import_v4.z.array(import_v4.z.string()).length(1).optional(),
|
|
72
|
+
/**
|
|
73
|
+
* Speaker diarization. Speaker IDs are available in provider metadata.
|
|
74
|
+
*/
|
|
75
|
+
diarization: import_v4.z.strictObject({ enabled: import_v4.z.boolean() }).optional(),
|
|
76
|
+
/**
|
|
77
|
+
* Keyword biasing for names and domain terminology.
|
|
78
|
+
*/
|
|
79
|
+
phraseList: import_v4.z.strictObject({ phrases: import_v4.z.array(import_v4.z.string()) }).optional()
|
|
80
|
+
});
|
|
81
|
+
var azureSpeechTranscriptionModelOptions = (0, import_provider_utils.lazySchema)(
|
|
82
|
+
() => (0, import_provider_utils.zodSchema)(import_v4.z.strictObject(azureSpeechTranscriptionModelOptionsShape()))
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
// src/azure-transcription-model-options.ts
|
|
86
|
+
var azureTranscriptionModelOptions = (0, import_provider_utils2.lazySchema)(
|
|
87
|
+
() => (0, import_provider_utils2.zodSchema)(
|
|
88
|
+
import_v42.z.strictObject({
|
|
89
|
+
/**
|
|
90
|
+
* API to use. Defaults to Speech for MAI-Transcribe-2, OpenAI otherwise.
|
|
91
|
+
*/
|
|
92
|
+
api: import_v42.z.enum(["openai", "speech"]).optional(),
|
|
93
|
+
...azureSpeechTranscriptionModelOptionsShape()
|
|
94
|
+
})
|
|
95
|
+
)
|
|
96
|
+
);
|
|
97
|
+
function isMAITranscribe2(modelId) {
|
|
98
|
+
return modelId.toLowerCase() === "mai-transcribe-2";
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// src/azure-speech-transcription-model.ts
|
|
102
|
+
var AzureSpeechTranscriptionModel = class {
|
|
103
|
+
constructor(modelId, config) {
|
|
104
|
+
this.modelId = modelId;
|
|
105
|
+
this.config = config;
|
|
106
|
+
this.specificationVersion = "v3";
|
|
107
|
+
this.provider = "azure.transcription";
|
|
108
|
+
}
|
|
109
|
+
async doGenerate(options, azureOptions = {}) {
|
|
110
|
+
var _a, _b;
|
|
111
|
+
const timestamp = /* @__PURE__ */ new Date();
|
|
112
|
+
const formData = new FormData();
|
|
113
|
+
formData.append(
|
|
114
|
+
"audio",
|
|
115
|
+
new Blob(
|
|
116
|
+
[
|
|
117
|
+
typeof options.audio === "string" ? (0, import_provider_utils3.convertBase64ToUint8Array)(options.audio) : options.audio
|
|
118
|
+
],
|
|
119
|
+
{ type: options.mediaType }
|
|
120
|
+
),
|
|
121
|
+
`audio.${(0, import_provider_utils3.mediaTypeToExtension)(options.mediaType)}`
|
|
122
|
+
);
|
|
123
|
+
formData.append(
|
|
124
|
+
"definition",
|
|
125
|
+
JSON.stringify({
|
|
126
|
+
enhancedMode: {
|
|
127
|
+
enabled: true,
|
|
128
|
+
model: isMAITranscribe2(this.modelId) ? "MAI-Transcribe-2" : this.modelId,
|
|
129
|
+
modelOptions: {
|
|
130
|
+
timestamps: (_a = azureOptions.timestamps) != null ? _a : "segment",
|
|
131
|
+
transcribeStyle: azureOptions.transcribeStyle
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
locales: azureOptions.locales,
|
|
135
|
+
diarization: azureOptions.diarization,
|
|
136
|
+
phraseList: azureOptions.phraseList
|
|
137
|
+
})
|
|
138
|
+
);
|
|
139
|
+
const { value, rawValue, responseHeaders } = await (0, import_provider_utils3.postFormDataToApi)({
|
|
140
|
+
url: this.config.url(),
|
|
141
|
+
headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), options.headers),
|
|
142
|
+
formData,
|
|
143
|
+
abortSignal: options.abortSignal,
|
|
144
|
+
fetch: this.config.fetch,
|
|
145
|
+
failedResponseHandler: (0, import_provider_utils3.createJsonErrorResponseHandler)({
|
|
146
|
+
errorSchema: import_v43.z.union([
|
|
147
|
+
import_v43.z.object({ error: import_v43.z.object({ message: import_v43.z.string() }) }),
|
|
148
|
+
import_v43.z.object({ message: import_v43.z.string() })
|
|
149
|
+
]),
|
|
150
|
+
errorToMessage: (data) => "error" in data ? data.error.message : data.message
|
|
151
|
+
}),
|
|
152
|
+
successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(responseSchema)
|
|
153
|
+
});
|
|
154
|
+
const phrases = (_b = value.phrases) != null ? _b : [];
|
|
155
|
+
const languages = new Set(
|
|
156
|
+
phrases.flatMap(
|
|
157
|
+
(phrase) => phrase.locale ? [phrase.locale.split("-")[0].toLowerCase()] : []
|
|
158
|
+
)
|
|
159
|
+
);
|
|
160
|
+
const [language] = languages;
|
|
161
|
+
const reportedLanguage = languages.size === 1 && /^[a-z]{2}$/.test(language) ? language : void 0;
|
|
162
|
+
return {
|
|
163
|
+
text: value.combinedPhrases.map((phrase) => phrase.text).join(" "),
|
|
164
|
+
segments: phrases.flatMap(
|
|
165
|
+
(phrase) => phrase.offsetMilliseconds != null && phrase.durationMilliseconds != null ? [
|
|
166
|
+
{
|
|
167
|
+
text: phrase.text,
|
|
168
|
+
startSecond: phrase.offsetMilliseconds / 1e3,
|
|
169
|
+
endSecond: (phrase.offsetMilliseconds + phrase.durationMilliseconds) / 1e3
|
|
170
|
+
}
|
|
171
|
+
] : []
|
|
172
|
+
),
|
|
173
|
+
language: reportedLanguage,
|
|
174
|
+
durationInSeconds: value.durationMilliseconds != null ? value.durationMilliseconds / 1e3 : void 0,
|
|
175
|
+
warnings: [],
|
|
176
|
+
providerMetadata: {
|
|
177
|
+
azure: { phrases }
|
|
178
|
+
},
|
|
179
|
+
response: {
|
|
180
|
+
timestamp,
|
|
181
|
+
modelId: this.modelId,
|
|
182
|
+
headers: responseHeaders,
|
|
183
|
+
body: rawValue
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
var responseSchema = import_v43.z.object({
|
|
189
|
+
combinedPhrases: import_v43.z.array(import_v43.z.object({ text: import_v43.z.string() })),
|
|
190
|
+
durationMilliseconds: import_v43.z.number().nullish(),
|
|
191
|
+
phrases: import_v43.z.array(
|
|
192
|
+
import_v43.z.object({
|
|
193
|
+
text: import_v43.z.string(),
|
|
194
|
+
offsetMilliseconds: import_v43.z.number().nullish(),
|
|
195
|
+
durationMilliseconds: import_v43.z.number().nullish(),
|
|
196
|
+
locale: import_v43.z.string().nullish(),
|
|
197
|
+
speaker: import_v43.z.number().nullish(),
|
|
198
|
+
confidence: import_v43.z.number().nullish(),
|
|
199
|
+
words: import_v43.z.array(
|
|
200
|
+
import_v43.z.object({
|
|
201
|
+
text: import_v43.z.string(),
|
|
202
|
+
offsetMilliseconds: import_v43.z.number().nullish(),
|
|
203
|
+
durationMilliseconds: import_v43.z.number().nullish()
|
|
204
|
+
})
|
|
205
|
+
).nullish()
|
|
206
|
+
})
|
|
207
|
+
).nullish()
|
|
208
|
+
});
|
|
209
|
+
|
|
45
210
|
// src/version.ts
|
|
46
|
-
var VERSION = true ? "3.0.
|
|
211
|
+
var VERSION = true ? "3.0.128" : "0.0.0-test";
|
|
47
212
|
|
|
48
213
|
// src/azure-openai-provider.ts
|
|
49
214
|
function getAzureOpenAIBaseURLInfo(baseURL) {
|
|
@@ -73,15 +238,15 @@ function createAzure(options = {}) {
|
|
|
73
238
|
message: "Both apiKey and tokenProvider were provided. Please use only one authentication method."
|
|
74
239
|
});
|
|
75
240
|
}
|
|
76
|
-
const getHeaders = () => {
|
|
241
|
+
const getHeaders = (api = "openai") => {
|
|
77
242
|
const authHeaders = tokenProvider ? {} : {
|
|
78
|
-
"api-key": (0,
|
|
243
|
+
[api === "speech" ? "Ocp-Apim-Subscription-Key" : "api-key"]: (0, import_provider_utils4.loadApiKey)({
|
|
79
244
|
apiKey: options.apiKey,
|
|
80
245
|
environmentVariableName: "AZURE_API_KEY",
|
|
81
|
-
description: "Azure OpenAI"
|
|
246
|
+
description: api === "speech" ? "Azure Speech" : "Azure OpenAI"
|
|
82
247
|
})
|
|
83
248
|
};
|
|
84
|
-
return (0,
|
|
249
|
+
return (0, import_provider_utils4.withUserAgentSuffix)(
|
|
85
250
|
{
|
|
86
251
|
...authHeaders,
|
|
87
252
|
...options.headers
|
|
@@ -91,7 +256,7 @@ function createAzure(options = {}) {
|
|
|
91
256
|
};
|
|
92
257
|
const fetch = tokenProvider ? async (input, init) => {
|
|
93
258
|
var _a2;
|
|
94
|
-
const headers = (0,
|
|
259
|
+
const headers = (0, import_provider_utils4.normalizeHeaders)(init == null ? void 0 : init.headers);
|
|
95
260
|
if (headers.authorization == null) {
|
|
96
261
|
headers.authorization = `Bearer ${await tokenProvider()}`;
|
|
97
262
|
}
|
|
@@ -100,7 +265,7 @@ function createAzure(options = {}) {
|
|
|
100
265
|
headers
|
|
101
266
|
});
|
|
102
267
|
} : options.fetch;
|
|
103
|
-
const getResourceName = () => (0,
|
|
268
|
+
const getResourceName = () => (0, import_provider_utils4.loadSetting)({
|
|
104
269
|
settingValue: options.resourceName,
|
|
105
270
|
settingName: "resourceName",
|
|
106
271
|
environmentVariableName: "AZURE_RESOURCE_NAME",
|
|
@@ -114,7 +279,7 @@ function createAzure(options = {}) {
|
|
|
114
279
|
} = getAzureOpenAIBaseURLInfo(options.baseURL);
|
|
115
280
|
const url = ({ path, modelId }) => {
|
|
116
281
|
var _a2;
|
|
117
|
-
const baseUrlPrefix = (0,
|
|
282
|
+
const baseUrlPrefix = (0, import_provider_utils4.withoutTrailingSlash)(
|
|
118
283
|
(_a2 = options.baseURL) != null ? _a2 : `https://${getResourceName()}.openai.azure.com/openai`
|
|
119
284
|
);
|
|
120
285
|
let fullUrl;
|
|
@@ -172,12 +337,24 @@ function createAzure(options = {}) {
|
|
|
172
337
|
headers: getHeaders,
|
|
173
338
|
fetch
|
|
174
339
|
});
|
|
175
|
-
const createTranscriptionModel = (modelId) => new
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
340
|
+
const createTranscriptionModel = (modelId) => new AzureTranscriptionModel(
|
|
341
|
+
modelId,
|
|
342
|
+
options,
|
|
343
|
+
new import_internal2.OpenAITranscriptionModel(modelId, {
|
|
344
|
+
provider: "azure.transcription",
|
|
345
|
+
url,
|
|
346
|
+
headers: getHeaders,
|
|
347
|
+
fetch
|
|
348
|
+
}),
|
|
349
|
+
new AzureSpeechTranscriptionModel(modelId, {
|
|
350
|
+
url: () => {
|
|
351
|
+
var _a2;
|
|
352
|
+
return `${(_a2 = (0, import_provider_utils4.withoutTrailingSlash)(options.speechBaseURL)) != null ? _a2 : `https://${getResourceName()}.cognitiveservices.azure.com`}/speechtotext/transcriptions:transcribe?api-version=2025-10-15`;
|
|
353
|
+
},
|
|
354
|
+
headers: () => getHeaders("speech"),
|
|
355
|
+
fetch
|
|
356
|
+
})
|
|
357
|
+
);
|
|
181
358
|
const createSpeechModel = (modelId) => new import_internal2.OpenAISpeechModel(modelId, {
|
|
182
359
|
provider: "azure.speech",
|
|
183
360
|
url,
|
|
@@ -205,11 +382,54 @@ function createAzure(options = {}) {
|
|
|
205
382
|
provider.imageModel = createImageModel;
|
|
206
383
|
provider.responses = createResponsesModel;
|
|
207
384
|
provider.transcription = createTranscriptionModel;
|
|
385
|
+
provider.transcriptionModel = createTranscriptionModel;
|
|
208
386
|
provider.speech = createSpeechModel;
|
|
209
387
|
provider.tools = azureOpenaiTools;
|
|
210
388
|
return provider;
|
|
211
389
|
}
|
|
212
390
|
var azure = createAzure();
|
|
391
|
+
var AzureTranscriptionModel = class {
|
|
392
|
+
constructor(modelId, config, openai, speech) {
|
|
393
|
+
this.modelId = modelId;
|
|
394
|
+
this.config = config;
|
|
395
|
+
this.openai = openai;
|
|
396
|
+
this.speech = speech;
|
|
397
|
+
this.specificationVersion = "v3";
|
|
398
|
+
this.provider = "azure.transcription";
|
|
399
|
+
}
|
|
400
|
+
async doGenerate(options) {
|
|
401
|
+
const { api, ...speechOptions } = await this.getOptions(
|
|
402
|
+
options.providerOptions
|
|
403
|
+
);
|
|
404
|
+
if (api === "speech") {
|
|
405
|
+
return this.speech.doGenerate(options, speechOptions);
|
|
406
|
+
}
|
|
407
|
+
const result = await this.openai.doGenerate(options);
|
|
408
|
+
return {
|
|
409
|
+
...result,
|
|
410
|
+
warnings: [
|
|
411
|
+
...result.warnings,
|
|
412
|
+
...Object.keys(speechOptions).map((key) => ({
|
|
413
|
+
type: "unsupported",
|
|
414
|
+
feature: `providerOptions.azure.${key}`,
|
|
415
|
+
details: "This option requires the Azure Speech API."
|
|
416
|
+
}))
|
|
417
|
+
]
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
async getOptions(providerOptions) {
|
|
421
|
+
var _a;
|
|
422
|
+
const options = await (0, import_provider_utils4.parseProviderOptions)({
|
|
423
|
+
provider: "azure",
|
|
424
|
+
providerOptions,
|
|
425
|
+
schema: azureTranscriptionModelOptions
|
|
426
|
+
});
|
|
427
|
+
return {
|
|
428
|
+
...options,
|
|
429
|
+
api: (_a = options == null ? void 0 : options.api) != null ? _a : isMAITranscribe2(this.modelId) ? "speech" : "openai"
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
};
|
|
213
433
|
// Annotate the CommonJS export names for ESM import in node:
|
|
214
434
|
0 && (module.exports = {
|
|
215
435
|
VERSION,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/azure-openai-provider.ts","../src/azure-openai-tools.ts","../src/version.ts"],"sourcesContent":["import type { DeepSeekLanguageModelOptions } from '@ai-sdk/deepseek';\n\nexport type AzureDeepSeekLanguageModelOptions = Omit<\n DeepSeekLanguageModelOptions,\n 'thinking'\n>;\n/** @deprecated Use `AzureDeepSeekLanguageModelOptions` instead. */\nexport type AzureDeepSeekChatOptions = AzureDeepSeekLanguageModelOptions;\n\nexport type {\n OpenAILanguageModelResponsesOptions,\n OpenAIResponsesSystemMessageOptions,\n /** @deprecated Use `OpenAILanguageModelResponsesOptions` instead. */\n OpenAILanguageModelResponsesOptions as OpenAIResponsesProviderOptions,\n OpenAILanguageModelChatOptions,\n /** @deprecated Use `OpenAILanguageModelChatOptions` instead. */\n OpenAILanguageModelChatOptions as OpenAIChatLanguageModelOptions,\n} from '@ai-sdk/openai';\n\nexport { azure, createAzure } from './azure-openai-provider';\nexport type {\n AzureOpenAIProvider,\n AzureOpenAIProviderSettings,\n} from './azure-openai-provider';\nexport type {\n AzureResponsesProviderMetadata,\n AzureResponsesReasoningProviderMetadata,\n AzureResponsesTextProviderMetadata,\n AzureResponsesSourceDocumentProviderMetadata,\n} from './azure-openai-provider-metadata';\nexport { VERSION } from './version';\n","import {\n OpenAIChatLanguageModel,\n OpenAICompletionLanguageModel,\n OpenAIEmbeddingModel,\n OpenAIImageModel,\n OpenAIResponsesLanguageModel,\n OpenAISpeechModel,\n OpenAITranscriptionModel,\n} from '@ai-sdk/openai/internal';\nimport { DeepSeekChatLanguageModel } from '@ai-sdk/deepseek/internal';\nimport {\n InvalidArgumentError,\n type EmbeddingModelV3,\n type LanguageModelV3,\n type ProviderV3,\n type ImageModelV3,\n type SpeechModelV3,\n type TranscriptionModelV3,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n loadSetting,\n normalizeHeaders,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV3 {\n (deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI responses API model for text generation.\n */\n languageModel(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI chat model for text generation.\n */\n chat(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure-hosted DeepSeek chat model for text generation.\n */\n deepseek(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI responses API model for text generation.\n */\n responses(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI completion model for text generation.\n */\n completion(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI model for text embeddings.\n */\n embedding(deploymentId: string): EmbeddingModelV3;\n\n /**\n * Creates an Azure OpenAI model for text embeddings.\n */\n embeddingModel(deploymentId: string): EmbeddingModelV3;\n\n /**\n * @deprecated Use `embedding` instead.\n */\n textEmbedding(deploymentId: string): EmbeddingModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(deploymentId: string): EmbeddingModelV3;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n image(deploymentId: string): ImageModelV3;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n imageModel(deploymentId: string): ImageModelV3;\n\n /**\n * Creates an Azure OpenAI model for audio transcription.\n */\n transcription(deploymentId: string): TranscriptionModelV3;\n\n /**\n * Creates an Azure OpenAI model for speech generation.\n */\n speech(deploymentId: string): SpeechModelV3;\n\n /**\n * AzureOpenAI-specific tools.\n */\n tools: typeof azureOpenaiTools;\n}\n\nexport interface AzureOpenAIProviderSettings {\n /**\n * Name of the Azure OpenAI resource. Either this or `baseURL` can be used.\n *\n * The resource name is used in the assembled URL: `https://{resourceName}.openai.azure.com/openai/v1{path}`.\n */\n resourceName?: string;\n\n /**\n * Use a different URL prefix for API calls, e.g. to use proxy servers. Either this or `resourceName` can be used.\n * When a baseURL is provided, the resourceName is ignored.\n *\n * With an unversioned Azure OpenAI baseURL, the resolved URL is `{baseURL}/v1{path}`.\n * Azure OpenAI base URLs that already end in `/openai/v1` are used as-is.\n * With a non-Azure custom gateway baseURL, the resolved URL is `{baseURL}{path}`.\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * A function that returns an access token for Microsoft Entra\n * (formerly known as Azure Active Directory), which will be invoked\n * on every request.\n */\n tokenProvider?: (() => Promise<string>) | undefined;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * Custom api version to use. Defaults to `v1`.\n * Complete v1 base URLs are used as-is.\n */\n apiVersion?: string;\n\n /**\n * Use deployment-based URLs for specific model types. Set to true to use legacy deployment format:\n * `{baseURL}/deployments/{deploymentId}{path}?api-version={apiVersion}` instead of\n * `{baseURL}/v1{path}?api-version={apiVersion}`.\n */\n useDeploymentBasedUrls?: boolean;\n}\n\nfunction getAzureOpenAIBaseURLInfo(baseURL: string | undefined) {\n if (baseURL == null) {\n return {\n isAzureOpenAI: true,\n isFoundryProject: false,\n isVersioned: false,\n };\n }\n\n const url = new URL(baseURL);\n const hostname = url.hostname;\n const isAzureOpenAI =\n hostname.endsWith('.openai.azure.com') ||\n hostname.endsWith('.services.ai.azure.com') ||\n hostname.endsWith('.cognitiveservices.azure.com');\n const pathname = url.pathname.replace(/\\/+$/, '');\n\n return {\n isAzureOpenAI,\n isFoundryProject:\n hostname.endsWith('.services.ai.azure.com') &&\n pathname.startsWith('/api/projects/'),\n isVersioned: isAzureOpenAI && pathname.toLowerCase().endsWith('/openai/v1'),\n };\n}\n\n/**\n * Create an Azure OpenAI provider instance.\n */\nexport function createAzure(\n options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n const tokenProvider = options.tokenProvider;\n\n if (options.apiKey && tokenProvider) {\n throw new InvalidArgumentError({\n argument: 'apiKey/tokenProvider',\n message:\n 'Both apiKey and tokenProvider were provided. Please use only one authentication method.',\n });\n }\n\n const getHeaders = () => {\n const authHeaders = tokenProvider\n ? {}\n : {\n 'api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'AZURE_API_KEY',\n description: 'Azure OpenAI',\n }),\n };\n\n return withUserAgentSuffix(\n {\n ...authHeaders,\n ...options.headers,\n },\n `ai-sdk/azure/${VERSION}`,\n );\n };\n\n const fetch: FetchFunction | undefined = tokenProvider\n ? async (input, init) => {\n const headers = normalizeHeaders(init?.headers);\n\n if (headers.authorization == null) {\n headers.authorization = `Bearer ${await tokenProvider()}`;\n }\n\n return (options.fetch ?? globalThis.fetch)(input, {\n ...init,\n headers,\n });\n }\n : options.fetch;\n\n const getResourceName = () =>\n loadSetting({\n settingValue: options.resourceName,\n settingName: 'resourceName',\n environmentVariableName: 'AZURE_RESOURCE_NAME',\n description: 'Azure OpenAI resource name',\n });\n\n const apiVersion = options.apiVersion ?? 'v1';\n const {\n isAzureOpenAI,\n isFoundryProject,\n isVersioned: isAzureOpenAIVersioned,\n } = getAzureOpenAIBaseURLInfo(options.baseURL);\n\n const url = ({ path, modelId }: { path: string; modelId: string }) => {\n const baseUrlPrefix = withoutTrailingSlash(\n options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`,\n );\n\n let fullUrl: URL;\n if (options.useDeploymentBasedUrls) {\n // Use deployment-based format for compatibility with certain Azure OpenAI models\n fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n } else if (!isAzureOpenAI || isAzureOpenAIVersioned) {\n // Custom gateways can own Azure routing and versioning themselves.\n // Complete Azure OpenAI v1 URLs also own their versioning.\n fullUrl = new URL(`${baseUrlPrefix}${path}`);\n } else {\n // Use v1 API format - no deployment ID in URL\n fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n }\n\n if (\n options.useDeploymentBasedUrls ||\n (isAzureOpenAI && !isAzureOpenAIVersioned && !isFoundryProject)\n ) {\n fullUrl.searchParams.set('api-version', apiVersion);\n }\n\n return fullUrl.toString();\n };\n\n const createChatModel = (deploymentName: string) =>\n new OpenAIChatLanguageModel(deploymentName, {\n provider: 'azure.chat',\n url,\n headers: getHeaders,\n fetch,\n });\n\n const createDeepSeekModel = (deploymentName: string) =>\n new DeepSeekChatLanguageModel(deploymentName, {\n provider: 'azure.deepseek',\n url,\n headers: getHeaders,\n fetch,\n supportsPenaltySampling: true,\n supportsThinking: false,\n // json_object with thinking enabled makes Azure return the JSON in reasoning_content with empty content\n supportsStructuredOutputs: true,\n });\n\n const createCompletionModel = (modelId: string) =>\n new OpenAICompletionLanguageModel(modelId, {\n provider: 'azure.completion',\n url,\n headers: getHeaders,\n fetch,\n });\n\n const createEmbeddingModel = (modelId: string) =>\n new OpenAIEmbeddingModel(modelId, {\n provider: 'azure.embeddings',\n headers: getHeaders,\n url,\n fetch,\n });\n\n const createResponsesModel = (modelId: string) =>\n new OpenAIResponsesLanguageModel(modelId, {\n provider: 'azure.responses',\n url,\n headers: getHeaders,\n fetch,\n explicitMessageItemType: isFoundryProject,\n fileIdPrefixes: ['assistant-'],\n });\n\n const createImageModel = (modelId: string) =>\n new OpenAIImageModel(modelId, {\n provider: 'azure.image',\n url,\n headers: getHeaders,\n fetch,\n });\n\n const createTranscriptionModel = (modelId: string) =>\n new OpenAITranscriptionModel(modelId, {\n provider: 'azure.transcription',\n url,\n headers: getHeaders,\n fetch,\n });\n\n const createSpeechModel = (modelId: string) =>\n new OpenAISpeechModel(modelId, {\n provider: 'azure.speech',\n url,\n headers: getHeaders,\n fetch,\n });\n\n const provider = function (deploymentId: string) {\n if (new.target) {\n throw new Error(\n 'The Azure OpenAI model function cannot be called with the new keyword.',\n );\n }\n\n return createResponsesModel(deploymentId);\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createResponsesModel;\n provider.chat = createChatModel;\n provider.deepseek = createDeepSeekModel;\n provider.completion = createCompletionModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.responses = createResponsesModel;\n provider.transcription = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.tools = azureOpenaiTools;\n return provider;\n}\n\n/**\n * Default Azure OpenAI provider instance.\n */\nexport const azure = createAzure();\n","import {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearch,\n webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n codeInterpreter: typeof codeInterpreter;\n fileSearch: typeof fileSearch;\n imageGeneration: typeof imageGeneration;\n webSearch: typeof webSearch;\n webSearchPreview: typeof webSearchPreview;\n} = {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearch,\n webSearchPreview,\n};\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_internal","_a"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/azure-openai-provider.ts","../src/azure-openai-tools.ts","../src/azure-speech-transcription-model.ts","../src/azure-transcription-model-options.ts","../src/azure-speech-transcription-model-options.ts","../src/version.ts"],"sourcesContent":["import type { DeepSeekLanguageModelOptions } from '@ai-sdk/deepseek';\n\nexport type AzureDeepSeekLanguageModelOptions = Omit<\n DeepSeekLanguageModelOptions,\n 'thinking'\n>;\n/** @deprecated Use `AzureDeepSeekLanguageModelOptions` instead. */\nexport type AzureDeepSeekChatOptions = AzureDeepSeekLanguageModelOptions;\n\nexport type {\n OpenAILanguageModelResponsesOptions,\n OpenAIResponsesSystemMessageOptions,\n /** @deprecated Use `OpenAILanguageModelResponsesOptions` instead. */\n OpenAILanguageModelResponsesOptions as OpenAIResponsesProviderOptions,\n OpenAILanguageModelChatOptions,\n /** @deprecated Use `OpenAILanguageModelChatOptions` instead. */\n OpenAILanguageModelChatOptions as OpenAIChatLanguageModelOptions,\n} from '@ai-sdk/openai';\n\nexport { azure, createAzure } from './azure-openai-provider';\nexport type {\n AzureOpenAIProvider,\n AzureOpenAIProviderSettings,\n} from './azure-openai-provider';\nexport type {\n AzureResponsesProviderMetadata,\n AzureResponsesReasoningProviderMetadata,\n AzureResponsesTextProviderMetadata,\n AzureResponsesSourceDocumentProviderMetadata,\n} from './azure-openai-provider-metadata';\nexport { VERSION } from './version';\nexport type { AzureTranscriptionModelOptions } from './azure-transcription-model-options';\nexport type { AzureTranscriptionProviderMetadata } from './azure-transcription-provider-metadata';\n","import {\n OpenAIChatLanguageModel,\n OpenAICompletionLanguageModel,\n OpenAIEmbeddingModel,\n OpenAIImageModel,\n OpenAIResponsesLanguageModel,\n OpenAISpeechModel,\n OpenAITranscriptionModel,\n} from '@ai-sdk/openai/internal';\nimport { DeepSeekChatLanguageModel } from '@ai-sdk/deepseek/internal';\nimport {\n InvalidArgumentError,\n type EmbeddingModelV3,\n type LanguageModelV3,\n type ProviderV3,\n type ImageModelV3,\n type SpeechModelV3,\n type TranscriptionModelV3,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n loadSetting,\n normalizeHeaders,\n parseProviderOptions,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { AzureSpeechTranscriptionModel } from './azure-speech-transcription-model';\nimport {\n azureTranscriptionModelOptions,\n isMAITranscribe2,\n} from './azure-transcription-model-options';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV3 {\n (deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI responses API model for text generation.\n */\n languageModel(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI chat model for text generation.\n */\n chat(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure-hosted DeepSeek chat model for text generation.\n */\n deepseek(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI responses API model for text generation.\n */\n responses(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI completion model for text generation.\n */\n completion(deploymentId: string): LanguageModelV3;\n\n /**\n * Creates an Azure OpenAI model for text embeddings.\n */\n embedding(deploymentId: string): EmbeddingModelV3;\n\n /**\n * Creates an Azure OpenAI model for text embeddings.\n */\n embeddingModel(deploymentId: string): EmbeddingModelV3;\n\n /**\n * @deprecated Use `embedding` instead.\n */\n textEmbedding(deploymentId: string): EmbeddingModelV3;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(deploymentId: string): EmbeddingModelV3;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n image(deploymentId: string): ImageModelV3;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n imageModel(deploymentId: string): ImageModelV3;\n\n /**\n * Creates an Azure transcription model. MAI-Transcribe-2 uses the Speech API\n * by default; other IDs use OpenAI. Override with providerOptions.azure.api.\n */\n transcription(deploymentId: string): TranscriptionModelV3;\n\n /**\n * Creates an Azure transcription model. Alias of `transcription`.\n */\n transcriptionModel(deploymentId: string): TranscriptionModelV3;\n\n /**\n * Creates an Azure OpenAI model for speech generation.\n */\n speech(deploymentId: string): SpeechModelV3;\n\n /**\n * AzureOpenAI-specific tools.\n */\n tools: typeof azureOpenaiTools;\n}\n\nexport interface AzureOpenAIProviderSettings {\n /**\n * Name of the Azure OpenAI resource. Either this or `baseURL` can be used.\n *\n * The resource name is used in the assembled URL: `https://{resourceName}.openai.azure.com/openai/v1{path}`.\n */\n resourceName?: string;\n\n /**\n * Use a different URL prefix for API calls, e.g. to use proxy servers. Either this or `resourceName` can be used.\n * When a baseURL is provided, the resourceName is ignored.\n *\n * With an unversioned Azure OpenAI baseURL, the resolved URL is `{baseURL}/v1{path}`.\n * Azure OpenAI base URLs that already end in `/openai/v1` are used as-is.\n * With a non-Azure custom gateway baseURL, the resolved URL is `{baseURL}{path}`.\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * A function that returns an access token for Microsoft Entra\n * (formerly known as Azure Active Directory), which will be invoked\n * on every request.\n */\n tokenProvider?: (() => Promise<string>) | undefined;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\n * Custom api version to use. Defaults to `v1`.\n * Complete v1 base URLs are used as-is.\n */\n apiVersion?: string;\n\n /**\n * Use deployment-based URLs for specific model types. Set to true to use legacy deployment format:\n * `{baseURL}/deployments/{deploymentId}{path}?api-version={apiVersion}` instead of\n * `{baseURL}/v1{path}?api-version={apiVersion}`.\n */\n useDeploymentBasedUrls?: boolean;\n\n /**\n * URL prefix for Azure Speech transcription (MAI-Transcribe-2), e.g. a\n * regional endpoint like `https://eastus.api.cognitive.microsoft.com`.\n * Defaults to `https://{resourceName}.cognitiveservices.azure.com`.\n * Speech requests do not use `baseURL` or `apiVersion`.\n */\n speechBaseURL?: string;\n}\n\nfunction getAzureOpenAIBaseURLInfo(baseURL: string | undefined) {\n if (baseURL == null) {\n return {\n isAzureOpenAI: true,\n isFoundryProject: false,\n isVersioned: false,\n };\n }\n\n const url = new URL(baseURL);\n const hostname = url.hostname;\n const isAzureOpenAI =\n hostname.endsWith('.openai.azure.com') ||\n hostname.endsWith('.services.ai.azure.com') ||\n hostname.endsWith('.cognitiveservices.azure.com');\n const pathname = url.pathname.replace(/\\/+$/, '');\n\n return {\n isAzureOpenAI,\n isFoundryProject:\n hostname.endsWith('.services.ai.azure.com') &&\n pathname.startsWith('/api/projects/'),\n isVersioned: isAzureOpenAI && pathname.toLowerCase().endsWith('/openai/v1'),\n };\n}\n\n/**\n * Create an Azure OpenAI provider instance.\n */\nexport function createAzure(\n options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n const tokenProvider = options.tokenProvider;\n\n if (options.apiKey && tokenProvider) {\n throw new InvalidArgumentError({\n argument: 'apiKey/tokenProvider',\n message:\n 'Both apiKey and tokenProvider were provided. Please use only one authentication method.',\n });\n }\n\n const getHeaders = (api: 'openai' | 'speech' = 'openai') => {\n const authHeaders = tokenProvider\n ? {}\n : {\n [api === 'speech' ? 'Ocp-Apim-Subscription-Key' : 'api-key']:\n loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'AZURE_API_KEY',\n description: api === 'speech' ? 'Azure Speech' : 'Azure OpenAI',\n }),\n };\n\n return withUserAgentSuffix(\n {\n ...authHeaders,\n ...options.headers,\n },\n `ai-sdk/azure/${VERSION}`,\n );\n };\n\n const fetch: FetchFunction | undefined = tokenProvider\n ? async (input, init) => {\n const headers = normalizeHeaders(init?.headers);\n\n if (headers.authorization == null) {\n headers.authorization = `Bearer ${await tokenProvider()}`;\n }\n\n return (options.fetch ?? globalThis.fetch)(input, {\n ...init,\n headers,\n });\n }\n : options.fetch;\n\n const getResourceName = () =>\n loadSetting({\n settingValue: options.resourceName,\n settingName: 'resourceName',\n environmentVariableName: 'AZURE_RESOURCE_NAME',\n description: 'Azure OpenAI resource name',\n });\n\n const apiVersion = options.apiVersion ?? 'v1';\n const {\n isAzureOpenAI,\n isFoundryProject,\n isVersioned: isAzureOpenAIVersioned,\n } = getAzureOpenAIBaseURLInfo(options.baseURL);\n\n const url = ({ path, modelId }: { path: string; modelId: string }) => {\n const baseUrlPrefix = withoutTrailingSlash(\n options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`,\n );\n\n let fullUrl: URL;\n if (options.useDeploymentBasedUrls) {\n // Use deployment-based format for compatibility with certain Azure OpenAI models\n fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n } else if (!isAzureOpenAI || isAzureOpenAIVersioned) {\n // Custom gateways can own Azure routing and versioning themselves.\n // Complete Azure OpenAI v1 URLs also own their versioning.\n fullUrl = new URL(`${baseUrlPrefix}${path}`);\n } else {\n // Use v1 API format - no deployment ID in URL\n fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n }\n\n if (\n options.useDeploymentBasedUrls ||\n (isAzureOpenAI && !isAzureOpenAIVersioned && !isFoundryProject)\n ) {\n fullUrl.searchParams.set('api-version', apiVersion);\n }\n\n return fullUrl.toString();\n };\n\n const createChatModel = (deploymentName: string) =>\n new OpenAIChatLanguageModel(deploymentName, {\n provider: 'azure.chat',\n url,\n headers: getHeaders,\n fetch,\n });\n\n const createDeepSeekModel = (deploymentName: string) =>\n new DeepSeekChatLanguageModel(deploymentName, {\n provider: 'azure.deepseek',\n url,\n headers: getHeaders,\n fetch,\n supportsPenaltySampling: true,\n supportsThinking: false,\n // json_object with thinking enabled makes Azure return the JSON in reasoning_content with empty content\n supportsStructuredOutputs: true,\n });\n\n const createCompletionModel = (modelId: string) =>\n new OpenAICompletionLanguageModel(modelId, {\n provider: 'azure.completion',\n url,\n headers: getHeaders,\n fetch,\n });\n\n const createEmbeddingModel = (modelId: string) =>\n new OpenAIEmbeddingModel(modelId, {\n provider: 'azure.embeddings',\n headers: getHeaders,\n url,\n fetch,\n });\n\n const createResponsesModel = (modelId: string) =>\n new OpenAIResponsesLanguageModel(modelId, {\n provider: 'azure.responses',\n url,\n headers: getHeaders,\n fetch,\n explicitMessageItemType: isFoundryProject,\n fileIdPrefixes: ['assistant-'],\n });\n\n const createImageModel = (modelId: string) =>\n new OpenAIImageModel(modelId, {\n provider: 'azure.image',\n url,\n headers: getHeaders,\n fetch,\n });\n\n const createTranscriptionModel = (modelId: string) =>\n new AzureTranscriptionModel(\n modelId,\n options,\n new OpenAITranscriptionModel(modelId, {\n provider: 'azure.transcription',\n url,\n headers: getHeaders,\n fetch,\n }),\n new AzureSpeechTranscriptionModel(modelId, {\n url: () =>\n `${\n withoutTrailingSlash(options.speechBaseURL) ??\n `https://${getResourceName()}.cognitiveservices.azure.com`\n }/speechtotext/transcriptions:transcribe?api-version=2025-10-15`,\n headers: () => getHeaders('speech'),\n fetch,\n }),\n );\n\n const createSpeechModel = (modelId: string) =>\n new OpenAISpeechModel(modelId, {\n provider: 'azure.speech',\n url,\n headers: getHeaders,\n fetch,\n });\n\n const provider = function (deploymentId: string) {\n if (new.target) {\n throw new Error(\n 'The Azure OpenAI model function cannot be called with the new keyword.',\n );\n }\n\n return createResponsesModel(deploymentId);\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.languageModel = createResponsesModel;\n provider.chat = createChatModel;\n provider.deepseek = createDeepSeekModel;\n provider.completion = createCompletionModel;\n provider.embedding = createEmbeddingModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.responses = createResponsesModel;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.tools = azureOpenaiTools;\n return provider;\n}\n\n/**\n * Default Azure OpenAI provider instance.\n */\nexport const azure = createAzure();\n\n// Resolves the API per request: providerOptions also reach this model via Gateway.\nclass AzureTranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'azure.transcription';\n\n constructor(\n readonly modelId: string,\n private readonly config: AzureOpenAIProviderSettings,\n private readonly openai: OpenAITranscriptionModel,\n private readonly speech: AzureSpeechTranscriptionModel,\n ) {}\n\n async doGenerate(options: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const { api, ...speechOptions } = await this.getOptions(\n options.providerOptions,\n );\n if (api === 'speech') {\n return this.speech.doGenerate(options, speechOptions);\n }\n\n const result = await this.openai.doGenerate(options);\n return {\n ...result,\n warnings: [\n ...result.warnings,\n ...Object.keys(speechOptions).map(key => ({\n type: 'unsupported' as const,\n feature: `providerOptions.azure.${key}`,\n details: 'This option requires the Azure Speech API.',\n })),\n ],\n };\n }\n\n private async getOptions(\n providerOptions: Parameters<\n TranscriptionModelV3['doGenerate']\n >[0]['providerOptions'],\n ) {\n const options = await parseProviderOptions({\n provider: 'azure',\n providerOptions,\n schema: azureTranscriptionModelOptions,\n });\n return {\n ...options,\n api:\n options?.api ?? (isMAITranscribe2(this.modelId) ? 'speech' : 'openai'),\n };\n }\n}\n","import {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearch,\n webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n codeInterpreter: typeof codeInterpreter;\n fileSearch: typeof fileSearch;\n imageGeneration: typeof imageGeneration;\n webSearch: typeof webSearch;\n webSearchPreview: typeof webSearchPreview;\n} = {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearch,\n webSearchPreview,\n};\n","import type { TranscriptionModelV3 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n mediaTypeToExtension,\n postFormDataToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { AzureTranscriptionProviderMetadata } from './azure-transcription-provider-metadata';\nimport type { AzureTranscriptionModelSpeechOptions } from './azure-speech-transcription-model-options';\nimport { isMAITranscribe2 } from './azure-transcription-model-options';\n\nexport class AzureSpeechTranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider = 'azure.transcription';\n\n constructor(\n readonly modelId: string,\n private readonly config: {\n url: () => string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n },\n ) {}\n\n async doGenerate(\n options: Parameters<TranscriptionModelV3['doGenerate']>[0],\n azureOptions: AzureTranscriptionModelSpeechOptions = {},\n ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n const timestamp = new Date();\n const formData = new FormData();\n formData.append(\n 'audio',\n new Blob(\n [\n typeof options.audio === 'string'\n ? convertBase64ToUint8Array(options.audio)\n : options.audio,\n ],\n { type: options.mediaType },\n ),\n `audio.${mediaTypeToExtension(options.mediaType)}`,\n );\n formData.append(\n 'definition',\n JSON.stringify({\n enhancedMode: {\n enabled: true,\n model: isMAITranscribe2(this.modelId)\n ? 'MAI-Transcribe-2'\n : this.modelId,\n modelOptions: {\n timestamps: azureOptions.timestamps ?? 'segment',\n transcribeStyle: azureOptions.transcribeStyle,\n },\n },\n locales: azureOptions.locales,\n diarization: azureOptions.diarization,\n phraseList: azureOptions.phraseList,\n }),\n );\n\n const { value, rawValue, responseHeaders } = await postFormDataToApi({\n url: this.config.url(),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: z.union([\n z.object({ error: z.object({ message: z.string() }) }),\n z.object({ message: z.string() }),\n ]),\n errorToMessage: data =>\n 'error' in data ? data.error.message : data.message,\n }),\n successfulResponseHandler: createJsonResponseHandler(responseSchema),\n });\n\n const phrases = value.phrases ?? [];\n // Consider every reported locale so mixed results (e.g. en + fil) are not\n // collapsed to one language; only ISO-639-1 codes are reported.\n const languages = new Set(\n phrases.flatMap(phrase =>\n phrase.locale ? [phrase.locale.split('-')[0].toLowerCase()] : [],\n ),\n );\n const [language] = languages;\n const reportedLanguage =\n languages.size === 1 && /^[a-z]{2}$/.test(language)\n ? language\n : undefined;\n\n return {\n text: value.combinedPhrases.map(phrase => phrase.text).join(' '),\n segments: phrases.flatMap(phrase =>\n phrase.offsetMilliseconds != null && phrase.durationMilliseconds != null\n ? [\n {\n text: phrase.text,\n startSecond: phrase.offsetMilliseconds / 1000,\n endSecond:\n (phrase.offsetMilliseconds + phrase.durationMilliseconds) /\n 1000,\n },\n ]\n : [],\n ),\n language: reportedLanguage,\n durationInSeconds:\n value.durationMilliseconds != null\n ? value.durationMilliseconds / 1000\n : undefined,\n warnings: [],\n providerMetadata: {\n azure: { phrases },\n } satisfies AzureTranscriptionProviderMetadata,\n response: {\n timestamp,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n\nconst responseSchema = z.object({\n combinedPhrases: z.array(z.object({ text: z.string() })),\n durationMilliseconds: z.number().nullish(),\n phrases: z\n .array(\n z.object({\n text: z.string(),\n offsetMilliseconds: z.number().nullish(),\n durationMilliseconds: z.number().nullish(),\n locale: z.string().nullish(),\n speaker: z.number().nullish(),\n confidence: z.number().nullish(),\n words: z\n .array(\n z.object({\n text: z.string(),\n offsetMilliseconds: z.number().nullish(),\n durationMilliseconds: z.number().nullish(),\n }),\n )\n .nullish(),\n }),\n )\n .nullish(),\n});\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { azureSpeechTranscriptionModelOptionsShape } from './azure-speech-transcription-model-options';\n\nexport const azureTranscriptionModelOptions = lazySchema(() =>\n zodSchema(\n z.strictObject({\n /**\n * API to use. Defaults to Speech for MAI-Transcribe-2, OpenAI otherwise.\n */\n api: z.enum(['openai', 'speech']).optional(),\n ...azureSpeechTranscriptionModelOptionsShape(),\n }),\n ),\n);\n\nexport type AzureTranscriptionModelOptions = InferSchema<\n typeof azureTranscriptionModelOptions\n>;\n\nexport function isMAITranscribe2(modelId: string): boolean {\n return modelId.toLowerCase() === 'mai-transcribe-2';\n}\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Strict objects reject unknown keys (e.g. `diarization.maxSpeakers`, which\n// MAI-Transcribe-2 does not support) instead of silently dropping them.\nexport const azureSpeechTranscriptionModelOptionsShape = () => ({\n /**\n * Timing granularity. Defaults to `segment` so that transcription results\n * include timed segments (Azure's own default is `none`).\n */\n timestamps: z.enum(['word', 'segment', 'none']).optional(),\n\n /**\n * `verbatim` keeps fillers and false starts, `clean` removes them.\n * Azure defaults to `verbatim`.\n */\n transcribeStyle: z.enum(['verbatim', 'clean']).optional(),\n\n /**\n * Forces a single language, e.g. `['en']`. Omit for automatic language\n * detection and code switching.\n */\n locales: z.array(z.string()).length(1).optional(),\n\n /**\n * Speaker diarization. Speaker IDs are available in provider metadata.\n */\n diarization: z.strictObject({ enabled: z.boolean() }).optional(),\n\n /**\n * Keyword biasing for names and domain terminology.\n */\n phraseList: z.strictObject({ phrases: z.array(z.string()) }).optional(),\n});\n\nexport const azureSpeechTranscriptionModelOptions = lazySchema(() =>\n zodSchema(z.strictObject(azureSpeechTranscriptionModelOptionsShape())),\n);\n\nexport type AzureTranscriptionModelSpeechOptions = InferSchema<\n typeof azureSpeechTranscriptionModelOptions\n>;\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_internal","import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4","_a"]}
|