@ai-sdk/deepseek 1.0.0-canary.9 → 1.0.1

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 CHANGED
@@ -1,5 +1,498 @@
1
1
  # @ai-sdk/deepseek
2
2
 
3
+ ## 1.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [0e8ed8e]
8
+ - @ai-sdk/openai-compatible@1.0.1
9
+
10
+ ## 1.0.0
11
+
12
+ ### Major Changes
13
+
14
+ - d5f588f: AI SDK 5
15
+
16
+ ### Patch Changes
17
+
18
+ - fa49207: feat(providers/openai-compatible): convert to providerOptions
19
+ - e2aceaf: feat: add raw chunk support
20
+ - d1a034f: feature: using Zod 4 for internal stuff
21
+ - 205077b: fix: improve Zod compatibility
22
+ - Updated dependencies [a571d6e]
23
+ - Updated dependencies [742b7be]
24
+ - Updated dependencies [e7fcc86]
25
+ - Updated dependencies [7cddb72]
26
+ - Updated dependencies [ccce59b]
27
+ - Updated dependencies [e2b9e4b]
28
+ - Updated dependencies [95857aa]
29
+ - Updated dependencies [45c1ea2]
30
+ - Updated dependencies [6f6bb89]
31
+ - Updated dependencies [060370c]
32
+ - Updated dependencies [dc714f3]
33
+ - Updated dependencies [b5da06a]
34
+ - Updated dependencies [d1a1aa1]
35
+ - Updated dependencies [63f9e9b]
36
+ - Updated dependencies [5d142ab]
37
+ - Updated dependencies [d5f588f]
38
+ - Updated dependencies [e025824]
39
+ - Updated dependencies [0571b98]
40
+ - Updated dependencies [6db02c9]
41
+ - Updated dependencies [b6b43c7]
42
+ - Updated dependencies [4fef487]
43
+ - Updated dependencies [48d257a]
44
+ - Updated dependencies [0c0c0b3]
45
+ - Updated dependencies [0d2c085]
46
+ - Updated dependencies [fa49207]
47
+ - Updated dependencies [40acf9b]
48
+ - Updated dependencies [cf8280e]
49
+ - Updated dependencies [9222aeb]
50
+ - Updated dependencies [b9a6121]
51
+ - Updated dependencies [e2aceaf]
52
+ - Updated dependencies [411e483]
53
+ - Updated dependencies [8ba77a7]
54
+ - Updated dependencies [db72adc]
55
+ - Updated dependencies [7b3ae3f]
56
+ - Updated dependencies [a166433]
57
+ - Updated dependencies [26735b5]
58
+ - Updated dependencies [443d8ec]
59
+ - Updated dependencies [42e32b0]
60
+ - Updated dependencies [a8c8bd5]
61
+ - Updated dependencies [abf9a79]
62
+ - Updated dependencies [14c9410]
63
+ - Updated dependencies [e86be6f]
64
+ - Updated dependencies [9bf7291]
65
+ - Updated dependencies [2e13791]
66
+ - Updated dependencies [7b069ed]
67
+ - Updated dependencies [9f95b35]
68
+ - Updated dependencies [66962ed]
69
+ - Updated dependencies [0d06df6]
70
+ - Updated dependencies [472524a]
71
+ - Updated dependencies [dd3ff01]
72
+ - Updated dependencies [d9209ca]
73
+ - Updated dependencies [d9c98f4]
74
+ - Updated dependencies [05d2819]
75
+ - Updated dependencies [9301f86]
76
+ - Updated dependencies [0a87932]
77
+ - Updated dependencies [737f1e2]
78
+ - Updated dependencies [c4a2fec]
79
+ - Updated dependencies [957b739]
80
+ - Updated dependencies [79457bd]
81
+ - Updated dependencies [a3f768e]
82
+ - Updated dependencies [7435eb5]
83
+ - Updated dependencies [8aa9e20]
84
+ - Updated dependencies [4617fab]
85
+ - Updated dependencies [516be5b]
86
+ - Updated dependencies [ac34802]
87
+ - Updated dependencies [0054544]
88
+ - Updated dependencies [cb68df0]
89
+ - Updated dependencies [ad80501]
90
+ - Updated dependencies [68ecf2f]
91
+ - Updated dependencies [9e9c809]
92
+ - Updated dependencies [32831c6]
93
+ - Updated dependencies [6dc848c]
94
+ - Updated dependencies [6b98118]
95
+ - Updated dependencies [d0f9495]
96
+ - Updated dependencies [63d791d]
97
+ - Updated dependencies [87b828f]
98
+ - Updated dependencies [3f2f00c]
99
+ - Updated dependencies [bfdca8d]
100
+ - Updated dependencies [0ff02bb]
101
+ - Updated dependencies [7979f7f]
102
+ - Updated dependencies [39a4fab]
103
+ - Updated dependencies [44f4aba]
104
+ - Updated dependencies [9bd5ab5]
105
+ - Updated dependencies [57edfcb]
106
+ - Updated dependencies [faf8446]
107
+ - Updated dependencies [7ea4132]
108
+ - Updated dependencies [d1a034f]
109
+ - Updated dependencies [5c56081]
110
+ - Updated dependencies [fd65bc6]
111
+ - Updated dependencies [023ba40]
112
+ - Updated dependencies [ea7a7c9]
113
+ - Updated dependencies [1b101e1]
114
+ - Updated dependencies [26535e0]
115
+ - Updated dependencies [e030615]
116
+ - Updated dependencies [5e57fae]
117
+ - Updated dependencies [393138b]
118
+ - Updated dependencies [c57e248]
119
+ - Updated dependencies [88a8ee5]
120
+ - Updated dependencies [41fa418]
121
+ - Updated dependencies [205077b]
122
+ - Updated dependencies [71f938d]
123
+ - Updated dependencies [3795467]
124
+ - Updated dependencies [28a5ed5]
125
+ - Updated dependencies [7182d14]
126
+ - Updated dependencies [c1e6647]
127
+ - Updated dependencies [1766ede]
128
+ - Updated dependencies [811dff3]
129
+ - Updated dependencies [f10304b]
130
+ - Updated dependencies [dd5fd43]
131
+ - Updated dependencies [33f4a6a]
132
+ - Updated dependencies [383cbfa]
133
+ - Updated dependencies [27deb4d]
134
+ - Updated dependencies [c4df419]
135
+ - Updated dependencies [281bb1c]
136
+ - @ai-sdk/provider-utils@3.0.0
137
+ - @ai-sdk/provider@2.0.0
138
+ - @ai-sdk/openai-compatible@1.0.0
139
+
140
+ ## 1.0.0-beta.13
141
+
142
+ ### Patch Changes
143
+
144
+ - Updated dependencies [88a8ee5]
145
+ - @ai-sdk/provider-utils@3.0.0-beta.10
146
+ - @ai-sdk/openai-compatible@1.0.0-beta.13
147
+
148
+ ## 1.0.0-beta.12
149
+
150
+ ### Patch Changes
151
+
152
+ - Updated dependencies [27deb4d]
153
+ - @ai-sdk/provider@2.0.0-beta.2
154
+ - @ai-sdk/openai-compatible@1.0.0-beta.12
155
+ - @ai-sdk/provider-utils@3.0.0-beta.9
156
+
157
+ ## 1.0.0-beta.11
158
+
159
+ ### Patch Changes
160
+
161
+ - Updated dependencies [dd5fd43]
162
+ - @ai-sdk/provider-utils@3.0.0-beta.8
163
+ - @ai-sdk/openai-compatible@1.0.0-beta.11
164
+
165
+ ## 1.0.0-beta.10
166
+
167
+ ### Patch Changes
168
+
169
+ - Updated dependencies [e7fcc86]
170
+ - @ai-sdk/provider-utils@3.0.0-beta.7
171
+ - @ai-sdk/openai-compatible@1.0.0-beta.10
172
+
173
+ ## 1.0.0-beta.9
174
+
175
+ ### Patch Changes
176
+
177
+ - Updated dependencies [737f1e2]
178
+ - Updated dependencies [ac34802]
179
+ - @ai-sdk/openai-compatible@1.0.0-beta.9
180
+ - @ai-sdk/provider-utils@3.0.0-beta.6
181
+
182
+ ## 1.0.0-beta.8
183
+
184
+ ### Patch Changes
185
+
186
+ - Updated dependencies [57edfcb]
187
+ - Updated dependencies [383cbfa]
188
+ - @ai-sdk/provider-utils@3.0.0-beta.5
189
+ - @ai-sdk/openai-compatible@1.0.0-beta.8
190
+
191
+ ## 1.0.0-beta.7
192
+
193
+ ### Patch Changes
194
+
195
+ - 205077b: fix: improve Zod compatibility
196
+ - Updated dependencies [205077b]
197
+ - @ai-sdk/openai-compatible@1.0.0-beta.7
198
+ - @ai-sdk/provider-utils@3.0.0-beta.4
199
+
200
+ ## 1.0.0-beta.6
201
+
202
+ ### Patch Changes
203
+
204
+ - Updated dependencies [281bb1c]
205
+ - @ai-sdk/openai-compatible@1.0.0-beta.6
206
+
207
+ ## 1.0.0-beta.5
208
+
209
+ ### Patch Changes
210
+
211
+ - Updated dependencies [05d2819]
212
+ - @ai-sdk/provider-utils@3.0.0-beta.3
213
+ - @ai-sdk/openai-compatible@1.0.0-beta.5
214
+
215
+ ## 1.0.0-beta.4
216
+
217
+ ### Patch Changes
218
+
219
+ - Updated dependencies [1b101e1]
220
+ - @ai-sdk/openai-compatible@1.0.0-beta.4
221
+
222
+ ## 1.0.0-beta.3
223
+
224
+ ### Patch Changes
225
+
226
+ - Updated dependencies [7b069ed]
227
+ - @ai-sdk/openai-compatible@1.0.0-beta.3
228
+
229
+ ## 1.0.0-beta.2
230
+
231
+ ### Patch Changes
232
+
233
+ - d1a034f: feature: using Zod 4 for internal stuff
234
+ - Updated dependencies [0571b98]
235
+ - Updated dependencies [39a4fab]
236
+ - Updated dependencies [d1a034f]
237
+ - @ai-sdk/provider-utils@3.0.0-beta.2
238
+ - @ai-sdk/openai-compatible@1.0.0-beta.2
239
+
240
+ ## 1.0.0-beta.1
241
+
242
+ ### Patch Changes
243
+
244
+ - Updated dependencies [742b7be]
245
+ - Updated dependencies [7cddb72]
246
+ - Updated dependencies [ccce59b]
247
+ - Updated dependencies [e2b9e4b]
248
+ - Updated dependencies [45c1ea2]
249
+ - Updated dependencies [e025824]
250
+ - Updated dependencies [0d06df6]
251
+ - Updated dependencies [472524a]
252
+ - Updated dependencies [dd3ff01]
253
+ - Updated dependencies [7435eb5]
254
+ - Updated dependencies [cb68df0]
255
+ - Updated dependencies [bfdca8d]
256
+ - Updated dependencies [44f4aba]
257
+ - Updated dependencies [023ba40]
258
+ - Updated dependencies [5e57fae]
259
+ - Updated dependencies [71f938d]
260
+ - Updated dependencies [28a5ed5]
261
+ - @ai-sdk/provider@2.0.0-beta.1
262
+ - @ai-sdk/provider-utils@3.0.0-beta.1
263
+ - @ai-sdk/openai-compatible@1.0.0-beta.1
264
+
265
+ ## 1.0.0-alpha.15
266
+
267
+ ### Patch Changes
268
+
269
+ - Updated dependencies [48d257a]
270
+ - Updated dependencies [8ba77a7]
271
+ - @ai-sdk/provider@2.0.0-alpha.15
272
+ - @ai-sdk/provider-utils@3.0.0-alpha.15
273
+ - @ai-sdk/openai-compatible@1.0.0-alpha.15
274
+
275
+ ## 1.0.0-alpha.14
276
+
277
+ ### Patch Changes
278
+
279
+ - Updated dependencies [b5da06a]
280
+ - Updated dependencies [63f9e9b]
281
+ - Updated dependencies [2e13791]
282
+ - @ai-sdk/provider@2.0.0-alpha.14
283
+ - @ai-sdk/openai-compatible@1.0.0-alpha.14
284
+ - @ai-sdk/provider-utils@3.0.0-alpha.14
285
+
286
+ ## 1.0.0-alpha.13
287
+
288
+ ### Patch Changes
289
+
290
+ - Updated dependencies [68ecf2f]
291
+ - @ai-sdk/provider@2.0.0-alpha.13
292
+ - @ai-sdk/openai-compatible@1.0.0-alpha.13
293
+ - @ai-sdk/provider-utils@3.0.0-alpha.13
294
+
295
+ ## 1.0.0-alpha.12
296
+
297
+ ### Patch Changes
298
+
299
+ - e2aceaf: feat: add raw chunk support
300
+ - Updated dependencies [e2aceaf]
301
+ - @ai-sdk/openai-compatible@1.0.0-alpha.12
302
+ - @ai-sdk/provider@2.0.0-alpha.12
303
+ - @ai-sdk/provider-utils@3.0.0-alpha.12
304
+
305
+ ## 1.0.0-alpha.11
306
+
307
+ ### Patch Changes
308
+
309
+ - Updated dependencies [c1e6647]
310
+ - @ai-sdk/provider@2.0.0-alpha.11
311
+ - @ai-sdk/openai-compatible@1.0.0-alpha.11
312
+ - @ai-sdk/provider-utils@3.0.0-alpha.11
313
+
314
+ ## 1.0.0-alpha.10
315
+
316
+ ### Patch Changes
317
+
318
+ - Updated dependencies [c4df419]
319
+ - @ai-sdk/provider@2.0.0-alpha.10
320
+ - @ai-sdk/openai-compatible@1.0.0-alpha.10
321
+ - @ai-sdk/provider-utils@3.0.0-alpha.10
322
+
323
+ ## 1.0.0-alpha.9
324
+
325
+ ### Patch Changes
326
+
327
+ - Updated dependencies [811dff3]
328
+ - @ai-sdk/provider@2.0.0-alpha.9
329
+ - @ai-sdk/openai-compatible@1.0.0-alpha.9
330
+ - @ai-sdk/provider-utils@3.0.0-alpha.9
331
+
332
+ ## 1.0.0-alpha.8
333
+
334
+ ### Patch Changes
335
+
336
+ - Updated dependencies [4fef487]
337
+ - Updated dependencies [9222aeb]
338
+ - @ai-sdk/provider-utils@3.0.0-alpha.8
339
+ - @ai-sdk/provider@2.0.0-alpha.8
340
+ - @ai-sdk/openai-compatible@1.0.0-alpha.8
341
+
342
+ ## 1.0.0-alpha.7
343
+
344
+ ### Patch Changes
345
+
346
+ - Updated dependencies [5c56081]
347
+ - @ai-sdk/provider@2.0.0-alpha.7
348
+ - @ai-sdk/openai-compatible@1.0.0-alpha.7
349
+ - @ai-sdk/provider-utils@3.0.0-alpha.7
350
+
351
+ ## 1.0.0-alpha.6
352
+
353
+ ### Patch Changes
354
+
355
+ - Updated dependencies [0d2c085]
356
+ - @ai-sdk/provider@2.0.0-alpha.6
357
+ - @ai-sdk/openai-compatible@1.0.0-alpha.6
358
+ - @ai-sdk/provider-utils@3.0.0-alpha.6
359
+
360
+ ## 1.0.0-alpha.4
361
+
362
+ ### Patch Changes
363
+
364
+ - Updated dependencies [dc714f3]
365
+ - @ai-sdk/provider@2.0.0-alpha.4
366
+ - @ai-sdk/openai-compatible@1.0.0-alpha.4
367
+ - @ai-sdk/provider-utils@3.0.0-alpha.4
368
+
369
+ ## 1.0.0-alpha.3
370
+
371
+ ### Patch Changes
372
+
373
+ - Updated dependencies [6b98118]
374
+ - @ai-sdk/provider@2.0.0-alpha.3
375
+ - @ai-sdk/openai-compatible@1.0.0-alpha.3
376
+ - @ai-sdk/provider-utils@3.0.0-alpha.3
377
+
378
+ ## 1.0.0-alpha.2
379
+
380
+ ### Patch Changes
381
+
382
+ - Updated dependencies [26535e0]
383
+ - @ai-sdk/provider@2.0.0-alpha.2
384
+ - @ai-sdk/openai-compatible@1.0.0-alpha.2
385
+ - @ai-sdk/provider-utils@3.0.0-alpha.2
386
+
387
+ ## 1.0.0-alpha.1
388
+
389
+ ### Patch Changes
390
+
391
+ - Updated dependencies [3f2f00c]
392
+ - @ai-sdk/provider@2.0.0-alpha.1
393
+ - @ai-sdk/openai-compatible@1.0.0-alpha.1
394
+ - @ai-sdk/provider-utils@3.0.0-alpha.1
395
+
396
+ ## 1.0.0-canary.19
397
+
398
+ ### Patch Changes
399
+
400
+ - Updated dependencies [faf8446]
401
+ - @ai-sdk/provider-utils@3.0.0-canary.19
402
+ - @ai-sdk/openai-compatible@1.0.0-canary.19
403
+
404
+ ## 1.0.0-canary.18
405
+
406
+ ### Patch Changes
407
+
408
+ - Updated dependencies [40acf9b]
409
+ - @ai-sdk/provider-utils@3.0.0-canary.18
410
+ - @ai-sdk/openai-compatible@1.0.0-canary.18
411
+
412
+ ## 1.0.0-canary.17
413
+
414
+ ### Patch Changes
415
+
416
+ - Updated dependencies [516be5b]
417
+ - Updated dependencies [ea7a7c9]
418
+ - @ai-sdk/openai-compatible@1.0.0-canary.17
419
+ - @ai-sdk/provider-utils@3.0.0-canary.17
420
+
421
+ ## 1.0.0-canary.16
422
+
423
+ ### Patch Changes
424
+
425
+ - Updated dependencies [87b828f]
426
+ - @ai-sdk/provider-utils@3.0.0-canary.16
427
+ - @ai-sdk/openai-compatible@1.0.0-canary.16
428
+
429
+ ## 1.0.0-canary.15
430
+
431
+ ### Patch Changes
432
+
433
+ - Updated dependencies [a571d6e]
434
+ - Updated dependencies [a8c8bd5]
435
+ - Updated dependencies [7979f7f]
436
+ - Updated dependencies [41fa418]
437
+ - @ai-sdk/provider-utils@3.0.0-canary.15
438
+ - @ai-sdk/provider@2.0.0-canary.14
439
+ - @ai-sdk/openai-compatible@1.0.0-canary.15
440
+
441
+ ## 1.0.0-canary.14
442
+
443
+ ### Patch Changes
444
+
445
+ - Updated dependencies [957b739]
446
+ - Updated dependencies [9bd5ab5]
447
+ - @ai-sdk/provider-utils@3.0.0-canary.14
448
+ - @ai-sdk/provider@2.0.0-canary.13
449
+ - @ai-sdk/openai-compatible@1.0.0-canary.14
450
+
451
+ ## 1.0.0-canary.13
452
+
453
+ ### Patch Changes
454
+
455
+ - Updated dependencies [7b3ae3f]
456
+ - Updated dependencies [d9209ca]
457
+ - Updated dependencies [0ff02bb]
458
+ - @ai-sdk/provider@2.0.0-canary.12
459
+ - @ai-sdk/openai-compatible@1.0.0-canary.13
460
+ - @ai-sdk/provider-utils@3.0.0-canary.13
461
+
462
+ ## 1.0.0-canary.12
463
+
464
+ ### Patch Changes
465
+
466
+ - Updated dependencies [9bf7291]
467
+ - Updated dependencies [4617fab]
468
+ - Updated dependencies [e030615]
469
+ - @ai-sdk/provider@2.0.0-canary.11
470
+ - @ai-sdk/openai-compatible@1.0.0-canary.12
471
+ - @ai-sdk/provider-utils@3.0.0-canary.12
472
+
473
+ ## 1.0.0-canary.11
474
+
475
+ ### Patch Changes
476
+
477
+ - Updated dependencies [db72adc]
478
+ - Updated dependencies [42e32b0]
479
+ - Updated dependencies [66962ed]
480
+ - Updated dependencies [9301f86]
481
+ - Updated dependencies [a3f768e]
482
+ - @ai-sdk/openai-compatible@1.0.0-canary.11
483
+ - @ai-sdk/provider-utils@3.0.0-canary.11
484
+ - @ai-sdk/provider@2.0.0-canary.10
485
+
486
+ ## 1.0.0-canary.10
487
+
488
+ ### Patch Changes
489
+
490
+ - Updated dependencies [cf8280e]
491
+ - Updated dependencies [e86be6f]
492
+ - @ai-sdk/openai-compatible@1.0.0-canary.10
493
+ - @ai-sdk/provider@2.0.0-canary.9
494
+ - @ai-sdk/provider-utils@3.0.0-canary.10
495
+
3
496
  ## 1.0.0-canary.9
4
497
 
5
498
  ### Patch Changes
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # AI SDK - DeepSeek Provider
2
2
 
3
- The **[DeepSeek provider](https://sdk.vercel.ai/providers/ai-sdk-providers/deepseek)** for the [AI SDK](https://sdk.vercel.ai/docs) contains language model support for the [DeepSeek](https://www.deepseek.com) platform.
3
+ The **[DeepSeek provider](https://ai-sdk.dev/providers/ai-sdk-providers/deepseek)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model support for the [DeepSeek](https://www.deepseek.com) platform.
4
4
 
5
5
  ## Setup
6
6
 
@@ -32,4 +32,4 @@ const { text } = await generateText({
32
32
 
33
33
  ## Documentation
34
34
 
35
- Please check out the **[DeepSeek provider](https://sdk.vercel.ai/providers/ai-sdk-providers/deepseek)** for more information.
35
+ Please check out the **[DeepSeek provider](https://ai-sdk.dev/providers/ai-sdk-providers/deepseek)** for more information.
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ var import_provider_utils2 = require("@ai-sdk/provider-utils");
32
32
 
33
33
  // src/deepseek-metadata-extractor.ts
34
34
  var import_provider_utils = require("@ai-sdk/provider-utils");
35
- var import_zod = require("zod");
35
+ var import_v4 = require("zod/v4");
36
36
  var buildDeepseekMetadata = (usage) => {
37
37
  var _a, _b;
38
38
  return usage == null ? void 0 : {
@@ -43,8 +43,8 @@ var buildDeepseekMetadata = (usage) => {
43
43
  };
44
44
  };
45
45
  var deepSeekMetadataExtractor = {
46
- extractMetadata: ({ parsedBody }) => {
47
- const parsed = (0, import_provider_utils.safeValidateTypes)({
46
+ extractMetadata: async ({ parsedBody }) => {
47
+ const parsed = await (0, import_provider_utils.safeValidateTypes)({
48
48
  value: parsedBody,
49
49
  schema: deepSeekResponseSchema
50
50
  });
@@ -53,9 +53,9 @@ var deepSeekMetadataExtractor = {
53
53
  createStreamExtractor: () => {
54
54
  let usage;
55
55
  return {
56
- processChunk: (chunk) => {
56
+ processChunk: async (chunk) => {
57
57
  var _a, _b;
58
- const parsed = (0, import_provider_utils.safeValidateTypes)({
58
+ const parsed = await (0, import_provider_utils.safeValidateTypes)({
59
59
  value: chunk,
60
60
  schema: deepSeekStreamChunkSchema
61
61
  });
@@ -67,17 +67,17 @@ var deepSeekMetadataExtractor = {
67
67
  };
68
68
  }
69
69
  };
70
- var deepSeekUsageSchema = import_zod.z.object({
71
- prompt_cache_hit_tokens: import_zod.z.number().nullish(),
72
- prompt_cache_miss_tokens: import_zod.z.number().nullish()
70
+ var deepSeekUsageSchema = import_v4.z.object({
71
+ prompt_cache_hit_tokens: import_v4.z.number().nullish(),
72
+ prompt_cache_miss_tokens: import_v4.z.number().nullish()
73
73
  });
74
- var deepSeekResponseSchema = import_zod.z.object({
74
+ var deepSeekResponseSchema = import_v4.z.object({
75
75
  usage: deepSeekUsageSchema.nullish()
76
76
  });
77
- var deepSeekStreamChunkSchema = import_zod.z.object({
78
- choices: import_zod.z.array(
79
- import_zod.z.object({
80
- finish_reason: import_zod.z.string().nullish()
77
+ var deepSeekStreamChunkSchema = import_v4.z.object({
78
+ choices: import_v4.z.array(
79
+ import_v4.z.object({
80
+ finish_reason: import_v4.z.string().nullish()
81
81
  })
82
82
  ).nullish(),
83
83
  usage: deepSeekUsageSchema.nullish()
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/deepseek-provider.ts","../src/deepseek-metadata-extractor.ts"],"sourcesContent":["export { createDeepSeek, deepseek } from './deepseek-provider';\nexport type {\n DeepSeekProvider,\n DeepSeekProviderSettings,\n} from './deepseek-provider';\nexport type { OpenAICompatibleErrorData as DeepSeekErrorData } from '@ai-sdk/openai-compatible';\n","import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './deepseek-chat-settings';\nimport { deepSeekMetadataExtractor } from './deepseek-metadata-extractor';\n\nexport interface DeepSeekProviderSettings {\n /**\nDeepSeek API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPSEEK_API_KEY',\n description: 'DeepSeek API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (modelId: DeepSeekChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `deepseek.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n metadataExtractor: deepSeekMetadataExtractor,\n });\n };\n\n const provider = (modelId: DeepSeekChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const deepseek = createDeepSeek();\n","import { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport { safeValidateTypes } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst buildDeepseekMetadata = (\n usage: z.infer<typeof deepSeekUsageSchema> | undefined,\n) => {\n return usage == null\n ? undefined\n : {\n deepseek: {\n promptCacheHitTokens: usage.prompt_cache_hit_tokens ?? NaN,\n promptCacheMissTokens: usage.prompt_cache_miss_tokens ?? NaN,\n },\n };\n};\n\nexport const deepSeekMetadataExtractor: MetadataExtractor = {\n extractMetadata: ({ parsedBody }: { parsedBody: unknown }) => {\n const parsed = safeValidateTypes({\n value: parsedBody,\n schema: deepSeekResponseSchema,\n });\n\n return !parsed.success || parsed.value.usage == null\n ? undefined\n : buildDeepseekMetadata(parsed.value.usage);\n },\n\n createStreamExtractor: () => {\n let usage: z.infer<typeof deepSeekUsageSchema> | undefined;\n\n return {\n processChunk: (chunk: unknown) => {\n const parsed = safeValidateTypes({\n value: chunk,\n schema: deepSeekStreamChunkSchema,\n });\n\n if (\n parsed.success &&\n parsed.value.choices?.[0]?.finish_reason === 'stop' &&\n parsed.value.usage\n ) {\n usage = parsed.value.usage;\n }\n },\n buildMetadata: () => buildDeepseekMetadata(usage),\n };\n },\n};\n\nconst deepSeekUsageSchema = z.object({\n prompt_cache_hit_tokens: z.number().nullish(),\n prompt_cache_miss_tokens: z.number().nullish(),\n});\n\nconst deepSeekResponseSchema = z.object({\n usage: deepSeekUsageSchema.nullish(),\n});\n\nconst deepSeekStreamChunkSchema = z.object({\n choices: z\n .array(\n z.object({\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n usage: deepSeekUsageSchema.nullish(),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,+BAAkD;AAClD,sBAIO;AACP,IAAAA,yBAIO;;;ACTP,4BAAkC;AAClC,iBAAkB;AAElB,IAAM,wBAAwB,CAC5B,UACG;AANL;AAOE,SAAO,SAAS,OACZ,SACA;AAAA,IACE,UAAU;AAAA,MACR,uBAAsB,WAAM,4BAAN,YAAiC;AAAA,MACvD,wBAAuB,WAAM,6BAAN,YAAkC;AAAA,IAC3D;AAAA,EACF;AACN;AAEO,IAAM,4BAA+C;AAAA,EAC1D,iBAAiB,CAAC,EAAE,WAAW,MAA+B;AAC5D,UAAM,aAAS,yCAAkB;AAAA,MAC/B,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,CAAC,OAAO,WAAW,OAAO,MAAM,SAAS,OAC5C,SACA,sBAAsB,OAAO,MAAM,KAAK;AAAA,EAC9C;AAAA,EAEA,uBAAuB,MAAM;AAC3B,QAAI;AAEJ,WAAO;AAAA,MACL,cAAc,CAAC,UAAmB;AAjCxC;AAkCQ,cAAM,aAAS,yCAAkB;AAAA,UAC/B,OAAO;AAAA,UACP,QAAQ;AAAA,QACV,CAAC;AAED,YACE,OAAO,aACP,kBAAO,MAAM,YAAb,mBAAuB,OAAvB,mBAA2B,mBAAkB,UAC7C,OAAO,MAAM,OACb;AACA,kBAAQ,OAAO,MAAM;AAAA,QACvB;AAAA,MACF;AAAA,MACA,eAAe,MAAM,sBAAsB,KAAK;AAAA,IAClD;AAAA,EACF;AACF;AAEA,IAAM,sBAAsB,aAAE,OAAO;AAAA,EACnC,yBAAyB,aAAE,OAAO,EAAE,QAAQ;AAAA,EAC5C,0BAA0B,aAAE,OAAO,EAAE,QAAQ;AAC/C,CAAC;AAED,IAAM,yBAAyB,aAAE,OAAO;AAAA,EACtC,OAAO,oBAAoB,QAAQ;AACrC,CAAC;AAED,IAAM,4BAA4B,aAAE,OAAO;AAAA,EACzC,SAAS,aACN;AAAA,IACC,aAAE,OAAO;AAAA,MACP,eAAe,aAAE,OAAO,EAAE,QAAQ;AAAA,IACpC,CAAC;AAAA,EACH,EACC,QAAQ;AAAA,EACX,OAAO,oBAAoB,QAAQ;AACrC,CAAC;;;ADnBM,SAAS,eACd,UAAoC,CAAC,GACnB;AArDpB;AAsDE,QAAM,cAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,cAAU,mCAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAAC,YAAiC;AAC5D,WAAO,IAAI,2DAAkC,SAAS;AAAA,MACpD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAChB,oBAAoB,OAAO;AAE7B,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAEhB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEO,IAAM,WAAW,eAAe;","names":["import_provider_utils"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/deepseek-provider.ts","../src/deepseek-metadata-extractor.ts"],"sourcesContent":["export { createDeepSeek, deepseek } from './deepseek-provider';\nexport type {\n DeepSeekProvider,\n DeepSeekProviderSettings,\n} from './deepseek-provider';\nexport type { OpenAICompatibleErrorData as DeepSeekErrorData } from '@ai-sdk/openai-compatible';\n","import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './deepseek-chat-options';\nimport { deepSeekMetadataExtractor } from './deepseek-metadata-extractor';\n\nexport interface DeepSeekProviderSettings {\n /**\nDeepSeek API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPSEEK_API_KEY',\n description: 'DeepSeek API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (modelId: DeepSeekChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `deepseek.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n metadataExtractor: deepSeekMetadataExtractor,\n });\n };\n\n const provider = (modelId: DeepSeekChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const deepseek = createDeepSeek();\n","import { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport { safeValidateTypes } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst buildDeepseekMetadata = (\n usage: z.infer<typeof deepSeekUsageSchema> | undefined,\n) => {\n return usage == null\n ? undefined\n : {\n deepseek: {\n promptCacheHitTokens: usage.prompt_cache_hit_tokens ?? NaN,\n promptCacheMissTokens: usage.prompt_cache_miss_tokens ?? NaN,\n },\n };\n};\n\nexport const deepSeekMetadataExtractor: MetadataExtractor = {\n extractMetadata: async ({ parsedBody }: { parsedBody: unknown }) => {\n const parsed = await safeValidateTypes({\n value: parsedBody,\n schema: deepSeekResponseSchema,\n });\n\n return !parsed.success || parsed.value.usage == null\n ? undefined\n : buildDeepseekMetadata(parsed.value.usage);\n },\n\n createStreamExtractor: () => {\n let usage: z.infer<typeof deepSeekUsageSchema> | undefined;\n\n return {\n processChunk: async (chunk: unknown) => {\n const parsed = await safeValidateTypes({\n value: chunk,\n schema: deepSeekStreamChunkSchema,\n });\n\n if (\n parsed.success &&\n parsed.value.choices?.[0]?.finish_reason === 'stop' &&\n parsed.value.usage\n ) {\n usage = parsed.value.usage;\n }\n },\n buildMetadata: () => buildDeepseekMetadata(usage),\n };\n },\n};\n\nconst deepSeekUsageSchema = z.object({\n prompt_cache_hit_tokens: z.number().nullish(),\n prompt_cache_miss_tokens: z.number().nullish(),\n});\n\nconst deepSeekResponseSchema = z.object({\n usage: deepSeekUsageSchema.nullish(),\n});\n\nconst deepSeekStreamChunkSchema = z.object({\n choices: z\n .array(\n z.object({\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n usage: deepSeekUsageSchema.nullish(),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,+BAAkD;AAClD,sBAIO;AACP,IAAAA,yBAIO;;;ACTP,4BAAkC;AAClC,gBAAkB;AAElB,IAAM,wBAAwB,CAC5B,UACG;AANL;AAOE,SAAO,SAAS,OACZ,SACA;AAAA,IACE,UAAU;AAAA,MACR,uBAAsB,WAAM,4BAAN,YAAiC;AAAA,MACvD,wBAAuB,WAAM,6BAAN,YAAkC;AAAA,IAC3D;AAAA,EACF;AACN;AAEO,IAAM,4BAA+C;AAAA,EAC1D,iBAAiB,OAAO,EAAE,WAAW,MAA+B;AAClE,UAAM,SAAS,UAAM,yCAAkB;AAAA,MACrC,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,CAAC,OAAO,WAAW,OAAO,MAAM,SAAS,OAC5C,SACA,sBAAsB,OAAO,MAAM,KAAK;AAAA,EAC9C;AAAA,EAEA,uBAAuB,MAAM;AAC3B,QAAI;AAEJ,WAAO;AAAA,MACL,cAAc,OAAO,UAAmB;AAjC9C;AAkCQ,cAAM,SAAS,UAAM,yCAAkB;AAAA,UACrC,OAAO;AAAA,UACP,QAAQ;AAAA,QACV,CAAC;AAED,YACE,OAAO,aACP,kBAAO,MAAM,YAAb,mBAAuB,OAAvB,mBAA2B,mBAAkB,UAC7C,OAAO,MAAM,OACb;AACA,kBAAQ,OAAO,MAAM;AAAA,QACvB;AAAA,MACF;AAAA,MACA,eAAe,MAAM,sBAAsB,KAAK;AAAA,IAClD;AAAA,EACF;AACF;AAEA,IAAM,sBAAsB,YAAE,OAAO;AAAA,EACnC,yBAAyB,YAAE,OAAO,EAAE,QAAQ;AAAA,EAC5C,0BAA0B,YAAE,OAAO,EAAE,QAAQ;AAC/C,CAAC;AAED,IAAM,yBAAyB,YAAE,OAAO;AAAA,EACtC,OAAO,oBAAoB,QAAQ;AACrC,CAAC;AAED,IAAM,4BAA4B,YAAE,OAAO;AAAA,EACzC,SAAS,YACN;AAAA,IACC,YAAE,OAAO;AAAA,MACP,eAAe,YAAE,OAAO,EAAE,QAAQ;AAAA,IACpC,CAAC;AAAA,EACH,EACC,QAAQ;AAAA,EACX,OAAO,oBAAoB,QAAQ;AACrC,CAAC;;;ADnBM,SAAS,eACd,UAAoC,CAAC,GACnB;AArDpB;AAsDE,QAAM,cAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,cAAU,mCAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAAC,YAAiC;AAC5D,WAAO,IAAI,2DAAkC,SAAS;AAAA,MACpD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAChB,oBAAoB,OAAO;AAE7B,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAEhB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEO,IAAM,WAAW,eAAe;","names":["import_provider_utils"]}
package/dist/index.mjs CHANGED
@@ -10,7 +10,7 @@ import {
10
10
 
11
11
  // src/deepseek-metadata-extractor.ts
12
12
  import { safeValidateTypes } from "@ai-sdk/provider-utils";
13
- import { z } from "zod";
13
+ import { z } from "zod/v4";
14
14
  var buildDeepseekMetadata = (usage) => {
15
15
  var _a, _b;
16
16
  return usage == null ? void 0 : {
@@ -21,8 +21,8 @@ var buildDeepseekMetadata = (usage) => {
21
21
  };
22
22
  };
23
23
  var deepSeekMetadataExtractor = {
24
- extractMetadata: ({ parsedBody }) => {
25
- const parsed = safeValidateTypes({
24
+ extractMetadata: async ({ parsedBody }) => {
25
+ const parsed = await safeValidateTypes({
26
26
  value: parsedBody,
27
27
  schema: deepSeekResponseSchema
28
28
  });
@@ -31,9 +31,9 @@ var deepSeekMetadataExtractor = {
31
31
  createStreamExtractor: () => {
32
32
  let usage;
33
33
  return {
34
- processChunk: (chunk) => {
34
+ processChunk: async (chunk) => {
35
35
  var _a, _b;
36
- const parsed = safeValidateTypes({
36
+ const parsed = await safeValidateTypes({
37
37
  value: chunk,
38
38
  schema: deepSeekStreamChunkSchema
39
39
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/deepseek-provider.ts","../src/deepseek-metadata-extractor.ts"],"sourcesContent":["import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './deepseek-chat-settings';\nimport { deepSeekMetadataExtractor } from './deepseek-metadata-extractor';\n\nexport interface DeepSeekProviderSettings {\n /**\nDeepSeek API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPSEEK_API_KEY',\n description: 'DeepSeek API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (modelId: DeepSeekChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `deepseek.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n metadataExtractor: deepSeekMetadataExtractor,\n });\n };\n\n const provider = (modelId: DeepSeekChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const deepseek = createDeepSeek();\n","import { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport { safeValidateTypes } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst buildDeepseekMetadata = (\n usage: z.infer<typeof deepSeekUsageSchema> | undefined,\n) => {\n return usage == null\n ? undefined\n : {\n deepseek: {\n promptCacheHitTokens: usage.prompt_cache_hit_tokens ?? NaN,\n promptCacheMissTokens: usage.prompt_cache_miss_tokens ?? NaN,\n },\n };\n};\n\nexport const deepSeekMetadataExtractor: MetadataExtractor = {\n extractMetadata: ({ parsedBody }: { parsedBody: unknown }) => {\n const parsed = safeValidateTypes({\n value: parsedBody,\n schema: deepSeekResponseSchema,\n });\n\n return !parsed.success || parsed.value.usage == null\n ? undefined\n : buildDeepseekMetadata(parsed.value.usage);\n },\n\n createStreamExtractor: () => {\n let usage: z.infer<typeof deepSeekUsageSchema> | undefined;\n\n return {\n processChunk: (chunk: unknown) => {\n const parsed = safeValidateTypes({\n value: chunk,\n schema: deepSeekStreamChunkSchema,\n });\n\n if (\n parsed.success &&\n parsed.value.choices?.[0]?.finish_reason === 'stop' &&\n parsed.value.usage\n ) {\n usage = parsed.value.usage;\n }\n },\n buildMetadata: () => buildDeepseekMetadata(usage),\n };\n },\n};\n\nconst deepSeekUsageSchema = z.object({\n prompt_cache_hit_tokens: z.number().nullish(),\n prompt_cache_miss_tokens: z.number().nullish(),\n});\n\nconst deepSeekResponseSchema = z.object({\n usage: deepSeekUsageSchema.nullish(),\n});\n\nconst deepSeekStreamChunkSchema = z.object({\n choices: z\n .array(\n z.object({\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n usage: deepSeekUsageSchema.nullish(),\n});\n"],"mappings":";AAAA,SAAS,yCAAyC;AAClD;AAAA,EAEE;AAAA,OAEK;AACP;AAAA,EAEE;AAAA,EACA;AAAA,OACK;;;ACTP,SAAS,yBAAyB;AAClC,SAAS,SAAS;AAElB,IAAM,wBAAwB,CAC5B,UACG;AANL;AAOE,SAAO,SAAS,OACZ,SACA;AAAA,IACE,UAAU;AAAA,MACR,uBAAsB,WAAM,4BAAN,YAAiC;AAAA,MACvD,wBAAuB,WAAM,6BAAN,YAAkC;AAAA,IAC3D;AAAA,EACF;AACN;AAEO,IAAM,4BAA+C;AAAA,EAC1D,iBAAiB,CAAC,EAAE,WAAW,MAA+B;AAC5D,UAAM,SAAS,kBAAkB;AAAA,MAC/B,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,CAAC,OAAO,WAAW,OAAO,MAAM,SAAS,OAC5C,SACA,sBAAsB,OAAO,MAAM,KAAK;AAAA,EAC9C;AAAA,EAEA,uBAAuB,MAAM;AAC3B,QAAI;AAEJ,WAAO;AAAA,MACL,cAAc,CAAC,UAAmB;AAjCxC;AAkCQ,cAAM,SAAS,kBAAkB;AAAA,UAC/B,OAAO;AAAA,UACP,QAAQ;AAAA,QACV,CAAC;AAED,YACE,OAAO,aACP,kBAAO,MAAM,YAAb,mBAAuB,OAAvB,mBAA2B,mBAAkB,UAC7C,OAAO,MAAM,OACb;AACA,kBAAQ,OAAO,MAAM;AAAA,QACvB;AAAA,MACF;AAAA,MACA,eAAe,MAAM,sBAAsB,KAAK;AAAA,IAClD;AAAA,EACF;AACF;AAEA,IAAM,sBAAsB,EAAE,OAAO;AAAA,EACnC,yBAAyB,EAAE,OAAO,EAAE,QAAQ;AAAA,EAC5C,0BAA0B,EAAE,OAAO,EAAE,QAAQ;AAC/C,CAAC;AAED,IAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,OAAO,oBAAoB,QAAQ;AACrC,CAAC;AAED,IAAM,4BAA4B,EAAE,OAAO;AAAA,EACzC,SAAS,EACN;AAAA,IACC,EAAE,OAAO;AAAA,MACP,eAAe,EAAE,OAAO,EAAE,QAAQ;AAAA,IACpC,CAAC;AAAA,EACH,EACC,QAAQ;AAAA,EACX,OAAO,oBAAoB,QAAQ;AACrC,CAAC;;;ADnBM,SAAS,eACd,UAAoC,CAAC,GACnB;AArDpB;AAsDE,QAAM,UAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,UAAU,WAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAAC,YAAiC;AAC5D,WAAO,IAAI,kCAAkC,SAAS;AAAA,MACpD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAChB,oBAAoB,OAAO;AAE7B,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAEhB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEO,IAAM,WAAW,eAAe;","names":[]}
1
+ {"version":3,"sources":["../src/deepseek-provider.ts","../src/deepseek-metadata-extractor.ts"],"sourcesContent":["import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './deepseek-chat-options';\nimport { deepSeekMetadataExtractor } from './deepseek-metadata-extractor';\n\nexport interface DeepSeekProviderSettings {\n /**\nDeepSeek API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPSEEK_API_KEY',\n description: 'DeepSeek API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (modelId: DeepSeekChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `deepseek.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n metadataExtractor: deepSeekMetadataExtractor,\n });\n };\n\n const provider = (modelId: DeepSeekChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const deepseek = createDeepSeek();\n","import { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport { safeValidateTypes } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst buildDeepseekMetadata = (\n usage: z.infer<typeof deepSeekUsageSchema> | undefined,\n) => {\n return usage == null\n ? undefined\n : {\n deepseek: {\n promptCacheHitTokens: usage.prompt_cache_hit_tokens ?? NaN,\n promptCacheMissTokens: usage.prompt_cache_miss_tokens ?? NaN,\n },\n };\n};\n\nexport const deepSeekMetadataExtractor: MetadataExtractor = {\n extractMetadata: async ({ parsedBody }: { parsedBody: unknown }) => {\n const parsed = await safeValidateTypes({\n value: parsedBody,\n schema: deepSeekResponseSchema,\n });\n\n return !parsed.success || parsed.value.usage == null\n ? undefined\n : buildDeepseekMetadata(parsed.value.usage);\n },\n\n createStreamExtractor: () => {\n let usage: z.infer<typeof deepSeekUsageSchema> | undefined;\n\n return {\n processChunk: async (chunk: unknown) => {\n const parsed = await safeValidateTypes({\n value: chunk,\n schema: deepSeekStreamChunkSchema,\n });\n\n if (\n parsed.success &&\n parsed.value.choices?.[0]?.finish_reason === 'stop' &&\n parsed.value.usage\n ) {\n usage = parsed.value.usage;\n }\n },\n buildMetadata: () => buildDeepseekMetadata(usage),\n };\n },\n};\n\nconst deepSeekUsageSchema = z.object({\n prompt_cache_hit_tokens: z.number().nullish(),\n prompt_cache_miss_tokens: z.number().nullish(),\n});\n\nconst deepSeekResponseSchema = z.object({\n usage: deepSeekUsageSchema.nullish(),\n});\n\nconst deepSeekStreamChunkSchema = z.object({\n choices: z\n .array(\n z.object({\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n usage: deepSeekUsageSchema.nullish(),\n});\n"],"mappings":";AAAA,SAAS,yCAAyC;AAClD;AAAA,EAEE;AAAA,OAEK;AACP;AAAA,EAEE;AAAA,EACA;AAAA,OACK;;;ACTP,SAAS,yBAAyB;AAClC,SAAS,SAAS;AAElB,IAAM,wBAAwB,CAC5B,UACG;AANL;AAOE,SAAO,SAAS,OACZ,SACA;AAAA,IACE,UAAU;AAAA,MACR,uBAAsB,WAAM,4BAAN,YAAiC;AAAA,MACvD,wBAAuB,WAAM,6BAAN,YAAkC;AAAA,IAC3D;AAAA,EACF;AACN;AAEO,IAAM,4BAA+C;AAAA,EAC1D,iBAAiB,OAAO,EAAE,WAAW,MAA+B;AAClE,UAAM,SAAS,MAAM,kBAAkB;AAAA,MACrC,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,CAAC,OAAO,WAAW,OAAO,MAAM,SAAS,OAC5C,SACA,sBAAsB,OAAO,MAAM,KAAK;AAAA,EAC9C;AAAA,EAEA,uBAAuB,MAAM;AAC3B,QAAI;AAEJ,WAAO;AAAA,MACL,cAAc,OAAO,UAAmB;AAjC9C;AAkCQ,cAAM,SAAS,MAAM,kBAAkB;AAAA,UACrC,OAAO;AAAA,UACP,QAAQ;AAAA,QACV,CAAC;AAED,YACE,OAAO,aACP,kBAAO,MAAM,YAAb,mBAAuB,OAAvB,mBAA2B,mBAAkB,UAC7C,OAAO,MAAM,OACb;AACA,kBAAQ,OAAO,MAAM;AAAA,QACvB;AAAA,MACF;AAAA,MACA,eAAe,MAAM,sBAAsB,KAAK;AAAA,IAClD;AAAA,EACF;AACF;AAEA,IAAM,sBAAsB,EAAE,OAAO;AAAA,EACnC,yBAAyB,EAAE,OAAO,EAAE,QAAQ;AAAA,EAC5C,0BAA0B,EAAE,OAAO,EAAE,QAAQ;AAC/C,CAAC;AAED,IAAM,yBAAyB,EAAE,OAAO;AAAA,EACtC,OAAO,oBAAoB,QAAQ;AACrC,CAAC;AAED,IAAM,4BAA4B,EAAE,OAAO;AAAA,EACzC,SAAS,EACN;AAAA,IACC,EAAE,OAAO;AAAA,MACP,eAAe,EAAE,OAAO,EAAE,QAAQ;AAAA,IACpC,CAAC;AAAA,EACH,EACC,QAAQ;AAAA,EACX,OAAO,oBAAoB,QAAQ;AACrC,CAAC;;;ADnBM,SAAS,eACd,UAAoC,CAAC,GACnB;AArDpB;AAsDE,QAAM,UAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,UAAU,WAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAAC,YAAiC;AAC5D,WAAO,IAAI,kCAAkC,SAAS;AAAA,MACpD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAChB,oBAAoB,OAAO;AAE7B,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAEhB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEO,IAAM,WAAW,eAAe;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/deepseek",
3
- "version": "1.0.0-canary.9",
3
+ "version": "1.0.1",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -19,19 +19,19 @@
19
19
  }
20
20
  },
21
21
  "dependencies": {
22
- "@ai-sdk/openai-compatible": "1.0.0-canary.9",
23
- "@ai-sdk/provider": "2.0.0-canary.8",
24
- "@ai-sdk/provider-utils": "3.0.0-canary.9"
22
+ "@ai-sdk/openai-compatible": "1.0.1",
23
+ "@ai-sdk/provider": "2.0.0",
24
+ "@ai-sdk/provider-utils": "3.0.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "20.17.24",
28
28
  "tsup": "^8",
29
29
  "typescript": "5.8.3",
30
- "zod": "3.23.8",
30
+ "zod": "3.25.76",
31
31
  "@vercel/ai-tsconfig": "0.0.0"
32
32
  },
33
33
  "peerDependencies": {
34
- "zod": "^3.0.0"
34
+ "zod": "^3.25.76 || ^4"
35
35
  },
36
36
  "engines": {
37
37
  "node": ">=18"
@@ -39,7 +39,7 @@
39
39
  "publishConfig": {
40
40
  "access": "public"
41
41
  },
42
- "homepage": "https://sdk.vercel.ai/docs",
42
+ "homepage": "https://ai-sdk.dev/docs",
43
43
  "repository": {
44
44
  "type": "git",
45
45
  "url": "git+https://github.com/vercel/ai.git"