@ai-sdk/azure 4.0.0-beta.7 → 4.0.0-beta.76

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/dist/index.js CHANGED
@@ -1,62 +1,81 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- VERSION: () => VERSION,
24
- azure: () => azure,
25
- createAzure: () => createAzure
26
- });
27
- module.exports = __toCommonJS(index_exports);
28
-
29
1
  // src/azure-openai-provider.ts
30
- var import_internal2 = require("@ai-sdk/openai/internal");
31
- var import_provider_utils = require("@ai-sdk/provider-utils");
2
+ import {
3
+ OpenAIChatLanguageModel,
4
+ OpenAICompletionLanguageModel,
5
+ OpenAIEmbeddingModel,
6
+ OpenAIImageModel,
7
+ OpenAIResponsesLanguageModel,
8
+ OpenAISpeechModel,
9
+ OpenAITranscriptionModel
10
+ } from "@ai-sdk/openai/internal";
11
+ import { DeepSeekChatLanguageModel } from "@ai-sdk/deepseek/internal";
12
+ import {
13
+ InvalidArgumentError
14
+ } from "@ai-sdk/provider";
15
+ import {
16
+ loadApiKey,
17
+ loadSetting,
18
+ normalizeHeaders,
19
+ withUserAgentSuffix
20
+ } from "@ai-sdk/provider-utils";
32
21
 
33
22
  // src/azure-openai-tools.ts
34
- var import_internal = require("@ai-sdk/openai/internal");
23
+ import {
24
+ codeInterpreter,
25
+ fileSearch,
26
+ imageGeneration,
27
+ webSearch,
28
+ webSearchPreview
29
+ } from "@ai-sdk/openai/internal";
35
30
  var azureOpenaiTools = {
36
- codeInterpreter: import_internal.codeInterpreter,
37
- fileSearch: import_internal.fileSearch,
38
- imageGeneration: import_internal.imageGeneration,
39
- webSearchPreview: import_internal.webSearchPreview
31
+ codeInterpreter,
32
+ fileSearch,
33
+ imageGeneration,
34
+ webSearch,
35
+ webSearchPreview
40
36
  };
41
37
 
42
38
  // src/version.ts
43
- var VERSION = true ? "4.0.0-beta.7" : "0.0.0-test";
39
+ var VERSION = true ? "4.0.0-beta.76" : "0.0.0-test";
44
40
 
45
41
  // src/azure-openai-provider.ts
46
42
  function createAzure(options = {}) {
47
43
  var _a;
44
+ const tokenProvider = options.tokenProvider;
45
+ if (options.apiKey && tokenProvider) {
46
+ throw new InvalidArgumentError({
47
+ argument: "apiKey/tokenProvider",
48
+ message: "Both apiKey and tokenProvider were provided. Please use only one authentication method."
49
+ });
50
+ }
48
51
  const getHeaders = () => {
49
- const baseHeaders = {
50
- "api-key": (0, import_provider_utils.loadApiKey)({
52
+ const authHeaders = tokenProvider ? {} : {
53
+ "api-key": loadApiKey({
51
54
  apiKey: options.apiKey,
52
55
  environmentVariableName: "AZURE_API_KEY",
53
56
  description: "Azure OpenAI"
54
- }),
55
- ...options.headers
57
+ })
56
58
  };
57
- return (0, import_provider_utils.withUserAgentSuffix)(baseHeaders, `ai-sdk/azure/${VERSION}`);
59
+ return withUserAgentSuffix(
60
+ {
61
+ ...authHeaders,
62
+ ...options.headers
63
+ },
64
+ `ai-sdk/azure/${VERSION}`
65
+ );
58
66
  };
59
- const getResourceName = () => (0, import_provider_utils.loadSetting)({
67
+ const fetch = tokenProvider ? async (input, init) => {
68
+ var _a2;
69
+ const headers = normalizeHeaders(init == null ? void 0 : init.headers);
70
+ if (headers.authorization == null) {
71
+ headers.authorization = `Bearer ${await tokenProvider()}`;
72
+ }
73
+ return ((_a2 = options.fetch) != null ? _a2 : globalThis.fetch)(input, {
74
+ ...init,
75
+ headers
76
+ });
77
+ } : options.fetch;
78
+ const getResourceName = () => loadSetting({
60
79
  settingValue: options.resourceName,
61
80
  settingName: "resourceName",
62
81
  environmentVariableName: "AZURE_RESOURCE_NAME",
@@ -75,48 +94,56 @@ function createAzure(options = {}) {
75
94
  fullUrl.searchParams.set("api-version", apiVersion);
76
95
  return fullUrl.toString();
77
96
  };
78
- const createChatModel = (deploymentName) => new import_internal2.OpenAIChatLanguageModel(deploymentName, {
97
+ const createChatModel = (deploymentName) => new OpenAIChatLanguageModel(deploymentName, {
79
98
  provider: "azure.chat",
80
99
  url,
81
100
  headers: getHeaders,
82
- fetch: options.fetch
101
+ fetch
102
+ });
103
+ const createDeepSeekModel = (deploymentName) => new DeepSeekChatLanguageModel(deploymentName, {
104
+ provider: "azure.deepseek",
105
+ url,
106
+ headers: getHeaders,
107
+ fetch,
108
+ supportsThinking: false
83
109
  });
84
- const createCompletionModel = (modelId) => new import_internal2.OpenAICompletionLanguageModel(modelId, {
110
+ const createCompletionModel = (modelId) => new OpenAICompletionLanguageModel(modelId, {
85
111
  provider: "azure.completion",
86
112
  url,
87
113
  headers: getHeaders,
88
- fetch: options.fetch
114
+ fetch
89
115
  });
90
- const createEmbeddingModel = (modelId) => new import_internal2.OpenAIEmbeddingModel(modelId, {
116
+ const createEmbeddingModel = (modelId) => new OpenAIEmbeddingModel(modelId, {
91
117
  provider: "azure.embeddings",
92
118
  headers: getHeaders,
93
119
  url,
94
- fetch: options.fetch
120
+ fetch
95
121
  });
96
- const createResponsesModel = (modelId) => new import_internal2.OpenAIResponsesLanguageModel(modelId, {
122
+ const createResponsesModel = (modelId) => new OpenAIResponsesLanguageModel(modelId, {
97
123
  provider: "azure.responses",
98
124
  url,
99
125
  headers: getHeaders,
100
- fetch: options.fetch,
126
+ fetch,
127
+ // Soft-deprecated. TODO: remove in v8
101
128
  fileIdPrefixes: ["assistant-"]
102
129
  });
103
- const createImageModel = (modelId) => new import_internal2.OpenAIImageModel(modelId, {
130
+ const createImageModel = (modelId) => new OpenAIImageModel(modelId, {
104
131
  provider: "azure.image",
105
132
  url,
106
133
  headers: getHeaders,
107
- fetch: options.fetch
134
+ fetch
108
135
  });
109
- const createTranscriptionModel = (modelId) => new import_internal2.OpenAITranscriptionModel(modelId, {
136
+ const createTranscriptionModel = (modelId) => new OpenAITranscriptionModel(modelId, {
110
137
  provider: "azure.transcription",
111
138
  url,
112
139
  headers: getHeaders,
113
- fetch: options.fetch
140
+ fetch
114
141
  });
115
- const createSpeechModel = (modelId) => new import_internal2.OpenAISpeechModel(modelId, {
142
+ const createSpeechModel = (modelId) => new OpenAISpeechModel(modelId, {
116
143
  provider: "azure.speech",
117
144
  url,
118
145
  headers: getHeaders,
119
- fetch: options.fetch
146
+ fetch
120
147
  });
121
148
  const provider = function(deploymentId) {
122
149
  if (new.target) {
@@ -129,6 +156,7 @@ function createAzure(options = {}) {
129
156
  provider.specificationVersion = "v4";
130
157
  provider.languageModel = createResponsesModel;
131
158
  provider.chat = createChatModel;
159
+ provider.deepseek = createDeepSeekModel;
132
160
  provider.completion = createCompletionModel;
133
161
  provider.embedding = createEmbeddingModel;
134
162
  provider.embeddingModel = createEmbeddingModel;
@@ -143,10 +171,9 @@ function createAzure(options = {}) {
143
171
  return provider;
144
172
  }
145
173
  var azure = createAzure();
146
- // Annotate the CommonJS export names for ESM import in node:
147
- 0 && (module.exports = {
174
+ export {
148
175
  VERSION,
149
176
  azure,
150
177
  createAzure
151
- });
178
+ };
152
179
  //# sourceMappingURL=index.js.map
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":["export type {\n OpenAILanguageModelResponsesOptions,\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 {\n EmbeddingModelV4,\n LanguageModelV4,\n ProviderV4,\n ImageModelV4,\n SpeechModelV4,\n TranscriptionModelV4,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n loadSetting,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV4 {\n (deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI responses API model for text generation.\n */\n languageModel(deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI chat model for text generation.\n */\n chat(deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI responses API model for text generation.\n */\n responses(deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI completion model for text generation.\n */\n completion(deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI model for text embeddings.\n */\n embedding(deploymentId: string): EmbeddingModelV4;\n\n /**\n * Creates an Azure OpenAI model for text embeddings.\n */\n embeddingModel(deploymentId: string): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embedding` instead.\n */\n textEmbedding(deploymentId: string): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(deploymentId: string): EmbeddingModelV4;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n image(deploymentId: string): ImageModelV4;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n imageModel(deploymentId: string): ImageModelV4;\n\n /**\n * Creates an Azure OpenAI model for audio transcription.\n */\n transcription(deploymentId: string): TranscriptionModelV4;\n\n /**\n * Creates an Azure OpenAI model for speech generation.\n */\n speech(deploymentId: string): SpeechModelV4;\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 a baseURL, the resolved URL is `{baseURL}/v1{path}`.\n */\n baseURL?: string;\n\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\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 `preview`.\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/**\n * Create an Azure OpenAI provider instance.\n */\nexport function createAzure(\n options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n const getHeaders = () => {\n const baseHeaders = {\n 'api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'AZURE_API_KEY',\n description: 'Azure OpenAI',\n }),\n ...options.headers,\n };\n return withUserAgentSuffix(baseHeaders, `ai-sdk/azure/${VERSION}`);\n };\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\n const url = ({ path, modelId }: { path: string; modelId: string }) => {\n const baseUrlPrefix =\n options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`;\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 {\n // Use v1 API format - no deployment ID in URL\n fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n }\n\n fullUrl.searchParams.set('api-version', apiVersion);\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: options.fetch,\n });\n\n const createCompletionModel = (modelId: string) =>\n new OpenAICompletionLanguageModel(modelId, {\n provider: 'azure.completion',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (modelId: string) =>\n new OpenAIEmbeddingModel(modelId, {\n provider: 'azure.embeddings',\n headers: getHeaders,\n url,\n fetch: options.fetch,\n });\n\n const createResponsesModel = (modelId: string) =>\n new OpenAIResponsesLanguageModel(modelId, {\n provider: 'azure.responses',\n url,\n headers: getHeaders,\n fetch: options.fetch,\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: options.fetch,\n });\n\n const createTranscriptionModel = (modelId: string) =>\n new OpenAITranscriptionModel(modelId, {\n provider: 'azure.transcription',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: string) =>\n new OpenAISpeechModel(modelId, {\n provider: 'azure.speech',\n url,\n headers: getHeaders,\n fetch: options.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 = 'v4' as const;\n provider.languageModel = createResponsesModel;\n provider.chat = createChatModel;\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 webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n codeInterpreter: typeof codeInterpreter;\n fileSearch: typeof fileSearch;\n imageGeneration: typeof imageGeneration;\n webSearchPreview: typeof webSearchPreview;\n} = {\n codeInterpreter,\n fileSearch,\n imageGeneration,\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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,mBAQO;AASP,4BAKO;;;ACtBP,sBAKO;AAEA,IAAM,mBAKT;AAAA,EACF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACfO,IAAM,UACX,OACI,iBACA;;;AF0IC,SAAS,YACd,UAAuC,CAAC,GACnB;AAjJvB;AAkJE,QAAM,aAAa,MAAM;AACvB,UAAM,cAAc;AAAA,MAClB,eAAW,kCAAW;AAAA,QACpB,QAAQ,QAAQ;AAAA,QAChB,yBAAyB;AAAA,QACzB,aAAa;AAAA,MACf,CAAC;AAAA,MACD,GAAG,QAAQ;AAAA,IACb;AACA,eAAO,2CAAoB,aAAa,gBAAgB,OAAO,EAAE;AAAA,EACnE;AAEA,QAAM,kBAAkB,UACtB,mCAAY;AAAA,IACV,cAAc,QAAQ;AAAA,IACtB,aAAa;AAAA,IACb,yBAAyB;AAAA,IACzB,aAAa;AAAA,EACf,CAAC;AAEH,QAAM,cAAa,aAAQ,eAAR,YAAsB;AAEzC,QAAM,MAAM,CAAC,EAAE,MAAM,QAAQ,MAAyC;AAxKxE,QAAAC;AAyKI,UAAM,iBACJA,MAAA,QAAQ,YAAR,OAAAA,MAAmB,WAAW,gBAAgB,CAAC;AAEjD,QAAI;AACJ,QAAI,QAAQ,wBAAwB;AAElC,gBAAU,IAAI,IAAI,GAAG,aAAa,gBAAgB,OAAO,GAAG,IAAI,EAAE;AAAA,IACpE,OAAO;AAEL,gBAAU,IAAI,IAAI,GAAG,aAAa,MAAM,IAAI,EAAE;AAAA,IAChD;AAEA,YAAQ,aAAa,IAAI,eAAe,UAAU;AAClD,WAAO,QAAQ,SAAS;AAAA,EAC1B;AAEA,QAAM,kBAAkB,CAAC,mBACvB,IAAI,yCAAwB,gBAAgB;AAAA,IAC1C,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,wBAAwB,CAAC,YAC7B,IAAI,+CAA8B,SAAS;AAAA,IACzC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,uBAAuB,CAAC,YAC5B,IAAI,sCAAqB,SAAS;AAAA,IAChC,UAAU;AAAA,IACV,SAAS;AAAA,IACT;AAAA,IACA,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,uBAAuB,CAAC,YAC5B,IAAI,8CAA6B,SAAS;AAAA,IACxC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,IACf,gBAAgB,CAAC,YAAY;AAAA,EAC/B,CAAC;AAEH,QAAM,mBAAmB,CAAC,YACxB,IAAI,kCAAiB,SAAS;AAAA,IAC5B,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,2BAA2B,CAAC,YAChC,IAAI,0CAAyB,SAAS;AAAA,IACpC,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,oBAAoB,CAAC,YACzB,IAAI,mCAAkB,SAAS;AAAA,IAC7B,UAAU;AAAA,IACV;AAAA,IACA,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,WAAW,SAAU,cAAsB;AAC/C,QAAI,YAAY;AACd,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,qBAAqB,YAAY;AAAA,EAC1C;AAEA,WAAS,uBAAuB;AAChC,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAChB,WAAS,aAAa;AACtB,WAAS,YAAY;AACrB,WAAS,iBAAiB;AAC1B,WAAS,gBAAgB;AACzB,WAAS,qBAAqB;AAC9B,WAAS,QAAQ;AACjB,WAAS,aAAa;AACtB,WAAS,YAAY;AACrB,WAAS,gBAAgB;AACzB,WAAS,SAAS;AAClB,WAAS,QAAQ;AACjB,SAAO;AACT;AAKO,IAAM,QAAQ,YAAY;","names":["import_internal","_a"]}
1
+ {"version":3,"sources":["../src/azure-openai-provider.ts","../src/azure-openai-tools.ts","../src/version.ts"],"sourcesContent":["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 EmbeddingModelV4,\n type LanguageModelV4,\n type ProviderV4,\n type ImageModelV4,\n type SpeechModelV4,\n type TranscriptionModelV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n loadSetting,\n normalizeHeaders,\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 ProviderV4 {\n (deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI responses API model for text generation.\n */\n languageModel(deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI chat model for text generation.\n */\n chat(deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure-hosted DeepSeek chat model for text generation.\n */\n deepseek(deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI responses API model for text generation.\n */\n responses(deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI completion model for text generation.\n */\n completion(deploymentId: string): LanguageModelV4;\n\n /**\n * Creates an Azure OpenAI model for text embeddings.\n */\n embedding(deploymentId: string): EmbeddingModelV4;\n\n /**\n * Creates an Azure OpenAI model for text embeddings.\n */\n embeddingModel(deploymentId: string): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embedding` instead.\n */\n textEmbedding(deploymentId: string): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(deploymentId: string): EmbeddingModelV4;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n image(deploymentId: string): ImageModelV4;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n imageModel(deploymentId: string): ImageModelV4;\n\n /**\n * Creates an Azure OpenAI model for audio transcription.\n */\n transcription(deploymentId: string): TranscriptionModelV4;\n\n /**\n * Creates an Azure OpenAI model for speech generation.\n */\n speech(deploymentId: string): SpeechModelV4;\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 a baseURL, the resolved URL is `{baseURL}/v1{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 `preview`.\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/**\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\n const url = ({ path, modelId }: { path: string; modelId: string }) => {\n const baseUrlPrefix =\n options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`;\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 {\n // Use v1 API format - no deployment ID in URL\n fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n }\n\n fullUrl.searchParams.set('api-version', apiVersion);\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 supportsThinking: false,\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 // Soft-deprecated. TODO: remove in v8\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 = 'v4' 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":["_a"]}
package/docs/04-azure.mdx CHANGED
@@ -46,6 +46,26 @@ const azure = createAzure({
46
46
  });
47
47
  ```
48
48
 
49
+ For Microsoft Entra ID authentication, you can provide a token provider.
50
+ Install `@azure/identity` separately if you want to use its credential helpers:
51
+
52
+ ```ts
53
+ import { createAzure } from '@ai-sdk/azure';
54
+ import {
55
+ DefaultAzureCredential,
56
+ getBearerTokenProvider,
57
+ } from '@azure/identity';
58
+
59
+ const credential = new DefaultAzureCredential();
60
+ const scope = 'https://cognitiveservices.azure.com/.default';
61
+ const tokenProvider = getBearerTokenProvider(credential, scope);
62
+
63
+ const azure = createAzure({
64
+ resourceName: 'your-resource-name',
65
+ tokenProvider,
66
+ });
67
+ ```
68
+
49
69
  You can use the following optional settings to customize the OpenAI provider instance:
50
70
 
51
71
  - **resourceName** _string_
@@ -61,6 +81,11 @@ You can use the following optional settings to customize the OpenAI provider ins
61
81
  API key that is being sent using the `api-key` header.
62
82
  It defaults to the `AZURE_API_KEY` environment variable.
63
83
 
84
+ - **tokenProvider** _() => Promise&lt;string&gt;_
85
+
86
+ Microsoft Entra ID token provider that returns an access token to be sent using the `Authorization` header.
87
+ When provided, this is used instead of `apiKey`.
88
+
64
89
  - **apiVersion** _string_
65
90
 
66
91
  Sets a custom [api version](https://learn.microsoft.com/en-us/azure/ai-services/openai/api-version-deprecation).
@@ -168,8 +193,9 @@ const messages = [
168
193
  text: 'What is the capital of the moon?',
169
194
  },
170
195
  {
171
- type: 'image',
172
- image: 'https://example.com/image.png',
196
+ type: 'file',
197
+ mediaType: 'image',
198
+ data: 'https://example.com/image.png',
173
199
  providerOptions: {
174
200
  openai: { imageDetail: 'low' },
175
201
  },
@@ -260,6 +286,30 @@ The following optional provider options are available for OpenAI chat models:
260
286
  A unique identifier representing your end-user, which can help OpenAI to
261
287
  monitor and detect abuse. Learn more.
262
288
 
289
+ ### DeepSeek Chat Models
290
+
291
+ You can create Azure-hosted DeepSeek chat models using the `.deepseek()` factory method:
292
+
293
+ ```ts
294
+ const model = azure.deepseek('your-deepseek-deployment-name');
295
+ ```
296
+
297
+ Use this factory for Azure DeepSeek models that support DeepSeek's chat
298
+ reasoning fields, such as `deepseek-v4-pro` and `deepseek-v4-flash`. The
299
+ factory maps top-level `reasoning` to DeepSeek `reasoning_effort` request
300
+ settings, and parses streamed `reasoning_content` as AI SDK reasoning parts.
301
+
302
+ ```ts
303
+ import { azure, type AzureDeepSeekLanguageModelOptions } from '@ai-sdk/azure';
304
+ import { generateText } from 'ai';
305
+
306
+ const result = generateText({
307
+ model: azure.deepseek('your-deepseek-deployment-name'),
308
+ prompt: 'How many "r"s are in the word "strawberry"?',
309
+ reasoning: 'high',
310
+ });
311
+ ```
312
+
263
313
  ### Responses Models
264
314
 
265
315
  Azure OpenAI uses responses API as default with the `azure(deploymentName)` factory method.
@@ -361,45 +411,56 @@ The following Azure-specific metadata may be returned:
361
411
 
362
412
  #### Web Search Tool
363
413
 
364
- The Azure OpenAI responses API supports web search(preview) through the `azure.tools.webSearchPreview` tool.
414
+ The Azure OpenAI responses API supports web search through the `azure.tools.webSearch` tool.
365
415
 
366
416
  ```ts
367
417
  const result = await generateText({
368
- model: azure('gpt-4.1-mini'),
418
+ model: azure('gpt-5'),
369
419
  prompt: 'What happened in San Francisco last week?',
370
420
  tools: {
371
- web_search_preview: azure.tools.webSearchPreview({
421
+ web_search: azure.tools.webSearch({
372
422
  // optional configuration:
373
- searchContextSize: 'low',
423
+ searchContextSize: 'high',
374
424
  userLocation: {
375
425
  type: 'approximate',
376
426
  city: 'San Francisco',
377
427
  region: 'California',
378
428
  },
429
+ filters: {
430
+ allowedDomains: ['sfchronicle.com', 'sfgate.com'],
431
+ },
379
432
  }),
380
433
  },
381
434
  // Force web search tool (optional):
382
- toolChoice: { type: 'tool', toolName: 'web_search_preview' },
435
+ toolChoice: { type: 'tool', toolName: 'web_search' },
383
436
  });
384
437
 
385
- console.log(result.text);
386
-
387
438
  // URL sources directly from `results`
388
439
  const sources = result.sources;
389
- for (const source of sources) {
390
- console.log('source:', source);
440
+
441
+ // Or access sources from tool results
442
+ for (const toolResult of result.toolResults) {
443
+ if (toolResult.toolName === 'web_search') {
444
+ console.log('Query:', toolResult.output.action.query);
445
+ console.log('Sources:', toolResult.output.sources);
446
+ // `sources` is an array of object: { type: 'url', url: string }
447
+ }
391
448
  }
392
449
  ```
393
450
 
394
- <Note>
395
- The tool must be named `web_search_preview` when using Azure OpenAI's web
396
- search(preview) functionality. This name is required by Azure OpenAI's API
397
- specification and cannot be customized.
398
- </Note>
451
+ The web search tool supports the following configuration options:
452
+
453
+ - **externalWebAccess** _boolean_ - Whether to use external web access for fetching live content. Defaults to `true`.
454
+ - **searchContextSize** _'low' | 'medium' | 'high'_ - Controls the amount of context used for the search. Higher values provide more comprehensive results but may have higher latency and cost.
455
+ - **userLocation** - Optional location information to provide geographically relevant results. Includes `type` (always `'approximate'`), `country`, `city`, `region`, and `timezone`.
456
+ - **filters** - Optional filter configuration to restrict search results.
457
+ - **allowedDomains** _string[]_ - Array of allowed domains for the search. Subdomains of the provided domains are automatically included.
458
+
459
+ For detailed information on configuration options see the [Azure OpenAI Web Search Tool documentation](https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/web-search).
399
460
 
400
461
  <Note>
401
- The 'web_search_preview' tool is only supported with the default responses
402
- API, and is not supported when using 'azure.chat' or 'azure.completion'
462
+ On Microsoft Foundry environment , Live internet access is not supported. The
463
+ parameter `externalWebAccess` if passed will be ignored.
403
464
  </Note>
404
465
 
405
466
  #### File Search Tool
@@ -593,7 +654,6 @@ This metadata includes the following fields:
593
654
  If no annotations are present, this property itself may be omitted (`undefined`).
594
655
 
595
656
  Each element in `annotations` is a discriminated union with a required `type` field. Supported types include, for example:
596
-
597
657
  - `url_citation`
598
658
  - `file_citation`
599
659
  - `container_file_citation`
@@ -914,6 +974,10 @@ const model = azure.image('your-dalle-deployment-name');
914
974
  Azure OpenAI image models support several additional settings. You can pass them as `providerOptions.openai` when generating the image:
915
975
 
916
976
  ```ts
977
+ import { azure } from '@ai-sdk/azure';
978
+ import type { OpenAIImageModelGenerationOptions } from '@ai-sdk/openai';
979
+ import { generateImage } from 'ai';
980
+
917
981
  await generateImage({
918
982
  model: azure.image('your-dalle-deployment-name'),
919
983
  prompt: 'A photorealistic image of a cat astronaut floating in space',
@@ -921,8 +985,7 @@ await generateImage({
921
985
  providerOptions: {
922
986
  openai: {
923
987
  user: 'test-user', // optional unique user identifier
924
- responseFormat: 'url', // 'url' or 'b64_json', defaults to 'url'
925
- },
988
+ } satisfies OpenAIImageModelGenerationOptions,
926
989
  },
927
990
  });
928
991
  ```
@@ -993,7 +1056,7 @@ When using useDeploymentBasedUrls, the default api-version is not valid. You mus
993
1056
  You can also pass additional provider-specific options using the `providerOptions` argument. For example, supplying the input language in ISO-639-1 (e.g. `en`) format will improve accuracy and latency.
994
1057
 
995
1058
  ```ts highlight="6"
996
- import { experimental_transcribe as transcribe } from 'ai';
1059
+ import { transcribe } from 'ai';
997
1060
  import { azure, type OpenAITranscriptionModelOptions } from '@ai-sdk/azure';
998
1061
  import { readFile } from 'fs/promises';
999
1062
 
@@ -1054,7 +1117,7 @@ const model = azure.speech('your-tts-deployment-name');
1054
1117
 
1055
1118
  ```ts
1056
1119
  import { azure } from '@ai-sdk/azure';
1057
- import { experimental_generateSpeech as generateSpeech } from 'ai';
1120
+ import { generateSpeech } from 'ai';
1058
1121
 
1059
1122
  const result = await generateSpeech({
1060
1123
  model: azure.speech('your-tts-deployment-name'),
@@ -1067,7 +1130,7 @@ You can also pass additional provider-specific options using the `providerOption
1067
1130
 
1068
1131
  ```ts
1069
1132
  import { azure, type OpenAISpeechModelOptions } from '@ai-sdk/azure';
1070
- import { experimental_generateSpeech as generateSpeech } from 'ai';
1133
+ import { generateSpeech } from 'ai';
1071
1134
 
1072
1135
  const result = await generateSpeech({
1073
1136
  model: azure.speech('your-tts-deployment-name'),
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@ai-sdk/azure",
3
- "version": "4.0.0-beta.7",
3
+ "version": "4.0.0-beta.76",
4
+ "type": "module",
4
5
  "license": "Apache-2.0",
5
6
  "sideEffects": false,
6
7
  "main": "./dist/index.js",
7
- "module": "./dist/index.mjs",
8
8
  "types": "./dist/index.d.ts",
9
9
  "files": [
10
10
  "dist/**/*",
@@ -24,36 +24,39 @@
24
24
  "./package.json": "./package.json",
25
25
  ".": {
26
26
  "types": "./dist/index.d.ts",
27
- "import": "./dist/index.mjs",
28
- "require": "./dist/index.js"
27
+ "import": "./dist/index.js",
28
+ "default": "./dist/index.js"
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@ai-sdk/openai": "4.0.0-beta.7",
33
- "@ai-sdk/provider": "4.0.0-beta.1",
34
- "@ai-sdk/provider-utils": "5.0.0-beta.2"
32
+ "@ai-sdk/deepseek": "3.0.0-beta.55",
33
+ "@ai-sdk/openai": "4.0.0-beta.74",
34
+ "@ai-sdk/provider": "4.0.0-beta.19",
35
+ "@ai-sdk/provider-utils": "5.0.0-beta.49"
35
36
  },
36
37
  "devDependencies": {
37
- "@types/node": "20.17.24",
38
- "tsup": "^8",
38
+ "@types/node": "22.19.19",
39
+ "tsup": "^8.5.1",
39
40
  "typescript": "5.8.3",
40
41
  "zod": "3.25.76",
41
- "@ai-sdk/test-server": "2.0.0-beta.0",
42
+ "@ai-sdk/test-server": "2.0.0-beta.7",
42
43
  "@vercel/ai-tsconfig": "0.0.0"
43
44
  },
44
45
  "peerDependencies": {
45
46
  "zod": "^3.25.76 || ^4.1.8"
46
47
  },
47
48
  "engines": {
48
- "node": ">=18"
49
+ "node": ">=22"
49
50
  },
50
51
  "publishConfig": {
51
- "access": "public"
52
+ "access": "public",
53
+ "provenance": true
52
54
  },
53
55
  "homepage": "https://ai-sdk.dev/docs",
54
56
  "repository": {
55
57
  "type": "git",
56
- "url": "git+https://github.com/vercel/ai.git"
58
+ "url": "https://github.com/vercel/ai",
59
+ "directory": "packages/azure"
57
60
  },
58
61
  "bugs": {
59
62
  "url": "https://github.com/vercel/ai/issues"
@@ -65,9 +68,7 @@
65
68
  "build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
66
69
  "build:watch": "pnpm clean && tsup --watch",
67
70
  "clean": "del-cli dist docs *.tsbuildinfo",
68
- "lint": "eslint \"./**/*.ts*\"",
69
71
  "type-check": "tsc --build",
70
- "prettier-check": "prettier --check \"./**/*.ts*\"",
71
72
  "test": "pnpm test:node && pnpm test:edge",
72
73
  "test:update": "pnpm test:node -u",
73
74
  "test:watch": "vitest --config vitest.node.config.js",
@@ -1,4 +1,4 @@
1
- import {
1
+ import type {
2
2
  ResponsesProviderMetadata,
3
3
  ResponsesReasoningProviderMetadata,
4
4
  ResponsesSourceDocumentProviderMetadata,