@ai-sdk/togetherai 1.0.0-canary.8 → 1.0.0

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,575 @@
1
1
  # @ai-sdk/togetherai
2
2
 
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - d5f588f: AI SDK 5
8
+ - 516be5b: ### Move Image Model Settings into generate options
9
+
10
+ Image Models no longer have settings. Instead, `maxImagesPerCall` can be passed directly to `generateImage()`. All other image settings can be passed to `providerOptions[provider]`.
11
+
12
+ Before
13
+
14
+ ```js
15
+ await generateImage({
16
+ model: luma.image('photon-flash-1', {
17
+ maxImagesPerCall: 5,
18
+ pollIntervalMillis: 500,
19
+ }),
20
+ prompt,
21
+ n: 10,
22
+ });
23
+ ```
24
+
25
+ After
26
+
27
+ ```js
28
+ await generateImage({
29
+ model: luma.image('photon-flash-1'),
30
+ prompt,
31
+ n: 10,
32
+ maxImagesPerCall: 5,
33
+ providerOptions: {
34
+ luma: { pollIntervalMillis: 5 },
35
+ },
36
+ });
37
+ ```
38
+
39
+ Pull Request: https://github.com/vercel/ai/pull/6180
40
+
41
+ ### Patch Changes
42
+
43
+ - fa49207: feat(providers/openai-compatible): convert to providerOptions
44
+ - e2aceaf: feat: add raw chunk support
45
+ - eb173f1: chore (providers): remove model shorthand deprecation warnings
46
+ - 26735b5: chore(embedding-model): add v2 interface
47
+ - d9209ca: fix (image-model): `specificationVersion: v1` -> `v2`
48
+ - 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2`
49
+ - d1a034f: feature: using Zod 4 for internal stuff
50
+ - 205077b: fix: improve Zod compatibility
51
+ - Updated dependencies [a571d6e]
52
+ - Updated dependencies [742b7be]
53
+ - Updated dependencies [e7fcc86]
54
+ - Updated dependencies [7cddb72]
55
+ - Updated dependencies [ccce59b]
56
+ - Updated dependencies [e2b9e4b]
57
+ - Updated dependencies [95857aa]
58
+ - Updated dependencies [45c1ea2]
59
+ - Updated dependencies [6f6bb89]
60
+ - Updated dependencies [060370c]
61
+ - Updated dependencies [dc714f3]
62
+ - Updated dependencies [b5da06a]
63
+ - Updated dependencies [d1a1aa1]
64
+ - Updated dependencies [63f9e9b]
65
+ - Updated dependencies [5d142ab]
66
+ - Updated dependencies [d5f588f]
67
+ - Updated dependencies [e025824]
68
+ - Updated dependencies [0571b98]
69
+ - Updated dependencies [6db02c9]
70
+ - Updated dependencies [b6b43c7]
71
+ - Updated dependencies [4fef487]
72
+ - Updated dependencies [48d257a]
73
+ - Updated dependencies [0c0c0b3]
74
+ - Updated dependencies [0d2c085]
75
+ - Updated dependencies [fa49207]
76
+ - Updated dependencies [40acf9b]
77
+ - Updated dependencies [cf8280e]
78
+ - Updated dependencies [9222aeb]
79
+ - Updated dependencies [b9a6121]
80
+ - Updated dependencies [e2aceaf]
81
+ - Updated dependencies [411e483]
82
+ - Updated dependencies [8ba77a7]
83
+ - Updated dependencies [db72adc]
84
+ - Updated dependencies [7b3ae3f]
85
+ - Updated dependencies [a166433]
86
+ - Updated dependencies [26735b5]
87
+ - Updated dependencies [443d8ec]
88
+ - Updated dependencies [42e32b0]
89
+ - Updated dependencies [a8c8bd5]
90
+ - Updated dependencies [abf9a79]
91
+ - Updated dependencies [14c9410]
92
+ - Updated dependencies [e86be6f]
93
+ - Updated dependencies [9bf7291]
94
+ - Updated dependencies [2e13791]
95
+ - Updated dependencies [7b069ed]
96
+ - Updated dependencies [9f95b35]
97
+ - Updated dependencies [66962ed]
98
+ - Updated dependencies [0d06df6]
99
+ - Updated dependencies [472524a]
100
+ - Updated dependencies [dd3ff01]
101
+ - Updated dependencies [d9209ca]
102
+ - Updated dependencies [d9c98f4]
103
+ - Updated dependencies [05d2819]
104
+ - Updated dependencies [9301f86]
105
+ - Updated dependencies [0a87932]
106
+ - Updated dependencies [737f1e2]
107
+ - Updated dependencies [c4a2fec]
108
+ - Updated dependencies [957b739]
109
+ - Updated dependencies [79457bd]
110
+ - Updated dependencies [a3f768e]
111
+ - Updated dependencies [7435eb5]
112
+ - Updated dependencies [8aa9e20]
113
+ - Updated dependencies [4617fab]
114
+ - Updated dependencies [516be5b]
115
+ - Updated dependencies [ac34802]
116
+ - Updated dependencies [0054544]
117
+ - Updated dependencies [cb68df0]
118
+ - Updated dependencies [ad80501]
119
+ - Updated dependencies [68ecf2f]
120
+ - Updated dependencies [9e9c809]
121
+ - Updated dependencies [32831c6]
122
+ - Updated dependencies [6dc848c]
123
+ - Updated dependencies [6b98118]
124
+ - Updated dependencies [d0f9495]
125
+ - Updated dependencies [63d791d]
126
+ - Updated dependencies [87b828f]
127
+ - Updated dependencies [3f2f00c]
128
+ - Updated dependencies [bfdca8d]
129
+ - Updated dependencies [0ff02bb]
130
+ - Updated dependencies [7979f7f]
131
+ - Updated dependencies [39a4fab]
132
+ - Updated dependencies [44f4aba]
133
+ - Updated dependencies [9bd5ab5]
134
+ - Updated dependencies [57edfcb]
135
+ - Updated dependencies [faf8446]
136
+ - Updated dependencies [7ea4132]
137
+ - Updated dependencies [d1a034f]
138
+ - Updated dependencies [5c56081]
139
+ - Updated dependencies [fd65bc6]
140
+ - Updated dependencies [023ba40]
141
+ - Updated dependencies [ea7a7c9]
142
+ - Updated dependencies [1b101e1]
143
+ - Updated dependencies [26535e0]
144
+ - Updated dependencies [e030615]
145
+ - Updated dependencies [5e57fae]
146
+ - Updated dependencies [393138b]
147
+ - Updated dependencies [c57e248]
148
+ - Updated dependencies [88a8ee5]
149
+ - Updated dependencies [41fa418]
150
+ - Updated dependencies [205077b]
151
+ - Updated dependencies [71f938d]
152
+ - Updated dependencies [3795467]
153
+ - Updated dependencies [28a5ed5]
154
+ - Updated dependencies [7182d14]
155
+ - Updated dependencies [c1e6647]
156
+ - Updated dependencies [1766ede]
157
+ - Updated dependencies [811dff3]
158
+ - Updated dependencies [f10304b]
159
+ - Updated dependencies [dd5fd43]
160
+ - Updated dependencies [33f4a6a]
161
+ - Updated dependencies [383cbfa]
162
+ - Updated dependencies [27deb4d]
163
+ - Updated dependencies [c4df419]
164
+ - Updated dependencies [281bb1c]
165
+ - @ai-sdk/provider-utils@3.0.0
166
+ - @ai-sdk/provider@2.0.0
167
+ - @ai-sdk/openai-compatible@1.0.0
168
+
169
+ ## 1.0.0-beta.13
170
+
171
+ ### Patch Changes
172
+
173
+ - Updated dependencies [88a8ee5]
174
+ - @ai-sdk/provider-utils@3.0.0-beta.10
175
+ - @ai-sdk/openai-compatible@1.0.0-beta.13
176
+
177
+ ## 1.0.0-beta.12
178
+
179
+ ### Patch Changes
180
+
181
+ - Updated dependencies [27deb4d]
182
+ - @ai-sdk/provider@2.0.0-beta.2
183
+ - @ai-sdk/openai-compatible@1.0.0-beta.12
184
+ - @ai-sdk/provider-utils@3.0.0-beta.9
185
+
186
+ ## 1.0.0-beta.11
187
+
188
+ ### Patch Changes
189
+
190
+ - eb173f1: chore (providers): remove model shorthand deprecation warnings
191
+ - Updated dependencies [dd5fd43]
192
+ - @ai-sdk/provider-utils@3.0.0-beta.8
193
+ - @ai-sdk/openai-compatible@1.0.0-beta.11
194
+
195
+ ## 1.0.0-beta.10
196
+
197
+ ### Patch Changes
198
+
199
+ - Updated dependencies [e7fcc86]
200
+ - @ai-sdk/provider-utils@3.0.0-beta.7
201
+ - @ai-sdk/openai-compatible@1.0.0-beta.10
202
+
203
+ ## 1.0.0-beta.9
204
+
205
+ ### Patch Changes
206
+
207
+ - Updated dependencies [737f1e2]
208
+ - Updated dependencies [ac34802]
209
+ - @ai-sdk/openai-compatible@1.0.0-beta.9
210
+ - @ai-sdk/provider-utils@3.0.0-beta.6
211
+
212
+ ## 1.0.0-beta.8
213
+
214
+ ### Patch Changes
215
+
216
+ - Updated dependencies [57edfcb]
217
+ - Updated dependencies [383cbfa]
218
+ - @ai-sdk/provider-utils@3.0.0-beta.5
219
+ - @ai-sdk/openai-compatible@1.0.0-beta.8
220
+
221
+ ## 1.0.0-beta.7
222
+
223
+ ### Patch Changes
224
+
225
+ - 205077b: fix: improve Zod compatibility
226
+ - Updated dependencies [205077b]
227
+ - @ai-sdk/openai-compatible@1.0.0-beta.7
228
+ - @ai-sdk/provider-utils@3.0.0-beta.4
229
+
230
+ ## 1.0.0-beta.6
231
+
232
+ ### Patch Changes
233
+
234
+ - Updated dependencies [281bb1c]
235
+ - @ai-sdk/openai-compatible@1.0.0-beta.6
236
+
237
+ ## 1.0.0-beta.5
238
+
239
+ ### Patch Changes
240
+
241
+ - Updated dependencies [05d2819]
242
+ - @ai-sdk/provider-utils@3.0.0-beta.3
243
+ - @ai-sdk/openai-compatible@1.0.0-beta.5
244
+
245
+ ## 1.0.0-beta.4
246
+
247
+ ### Patch Changes
248
+
249
+ - Updated dependencies [1b101e1]
250
+ - @ai-sdk/openai-compatible@1.0.0-beta.4
251
+
252
+ ## 1.0.0-beta.3
253
+
254
+ ### Patch Changes
255
+
256
+ - Updated dependencies [7b069ed]
257
+ - @ai-sdk/openai-compatible@1.0.0-beta.3
258
+
259
+ ## 1.0.0-beta.2
260
+
261
+ ### Patch Changes
262
+
263
+ - d1a034f: feature: using Zod 4 for internal stuff
264
+ - Updated dependencies [0571b98]
265
+ - Updated dependencies [39a4fab]
266
+ - Updated dependencies [d1a034f]
267
+ - @ai-sdk/provider-utils@3.0.0-beta.2
268
+ - @ai-sdk/openai-compatible@1.0.0-beta.2
269
+
270
+ ## 1.0.0-beta.1
271
+
272
+ ### Patch Changes
273
+
274
+ - Updated dependencies [742b7be]
275
+ - Updated dependencies [7cddb72]
276
+ - Updated dependencies [ccce59b]
277
+ - Updated dependencies [e2b9e4b]
278
+ - Updated dependencies [45c1ea2]
279
+ - Updated dependencies [e025824]
280
+ - Updated dependencies [0d06df6]
281
+ - Updated dependencies [472524a]
282
+ - Updated dependencies [dd3ff01]
283
+ - Updated dependencies [7435eb5]
284
+ - Updated dependencies [cb68df0]
285
+ - Updated dependencies [bfdca8d]
286
+ - Updated dependencies [44f4aba]
287
+ - Updated dependencies [023ba40]
288
+ - Updated dependencies [5e57fae]
289
+ - Updated dependencies [71f938d]
290
+ - Updated dependencies [28a5ed5]
291
+ - @ai-sdk/provider@2.0.0-beta.1
292
+ - @ai-sdk/provider-utils@3.0.0-beta.1
293
+ - @ai-sdk/openai-compatible@1.0.0-beta.1
294
+
295
+ ## 1.0.0-alpha.15
296
+
297
+ ### Patch Changes
298
+
299
+ - Updated dependencies [48d257a]
300
+ - Updated dependencies [8ba77a7]
301
+ - @ai-sdk/provider@2.0.0-alpha.15
302
+ - @ai-sdk/provider-utils@3.0.0-alpha.15
303
+ - @ai-sdk/openai-compatible@1.0.0-alpha.15
304
+
305
+ ## 1.0.0-alpha.14
306
+
307
+ ### Patch Changes
308
+
309
+ - Updated dependencies [b5da06a]
310
+ - Updated dependencies [63f9e9b]
311
+ - Updated dependencies [2e13791]
312
+ - @ai-sdk/provider@2.0.0-alpha.14
313
+ - @ai-sdk/openai-compatible@1.0.0-alpha.14
314
+ - @ai-sdk/provider-utils@3.0.0-alpha.14
315
+
316
+ ## 1.0.0-alpha.13
317
+
318
+ ### Patch Changes
319
+
320
+ - Updated dependencies [68ecf2f]
321
+ - @ai-sdk/provider@2.0.0-alpha.13
322
+ - @ai-sdk/openai-compatible@1.0.0-alpha.13
323
+ - @ai-sdk/provider-utils@3.0.0-alpha.13
324
+
325
+ ## 1.0.0-alpha.12
326
+
327
+ ### Patch Changes
328
+
329
+ - e2aceaf: feat: add raw chunk support
330
+ - Updated dependencies [e2aceaf]
331
+ - @ai-sdk/openai-compatible@1.0.0-alpha.12
332
+ - @ai-sdk/provider@2.0.0-alpha.12
333
+ - @ai-sdk/provider-utils@3.0.0-alpha.12
334
+
335
+ ## 1.0.0-alpha.11
336
+
337
+ ### Patch Changes
338
+
339
+ - Updated dependencies [c1e6647]
340
+ - @ai-sdk/provider@2.0.0-alpha.11
341
+ - @ai-sdk/openai-compatible@1.0.0-alpha.11
342
+ - @ai-sdk/provider-utils@3.0.0-alpha.11
343
+
344
+ ## 1.0.0-alpha.10
345
+
346
+ ### Patch Changes
347
+
348
+ - Updated dependencies [c4df419]
349
+ - @ai-sdk/provider@2.0.0-alpha.10
350
+ - @ai-sdk/openai-compatible@1.0.0-alpha.10
351
+ - @ai-sdk/provider-utils@3.0.0-alpha.10
352
+
353
+ ## 1.0.0-alpha.9
354
+
355
+ ### Patch Changes
356
+
357
+ - Updated dependencies [811dff3]
358
+ - @ai-sdk/provider@2.0.0-alpha.9
359
+ - @ai-sdk/openai-compatible@1.0.0-alpha.9
360
+ - @ai-sdk/provider-utils@3.0.0-alpha.9
361
+
362
+ ## 1.0.0-alpha.8
363
+
364
+ ### Patch Changes
365
+
366
+ - Updated dependencies [4fef487]
367
+ - Updated dependencies [9222aeb]
368
+ - @ai-sdk/provider-utils@3.0.0-alpha.8
369
+ - @ai-sdk/provider@2.0.0-alpha.8
370
+ - @ai-sdk/openai-compatible@1.0.0-alpha.8
371
+
372
+ ## 1.0.0-alpha.7
373
+
374
+ ### Patch Changes
375
+
376
+ - Updated dependencies [5c56081]
377
+ - @ai-sdk/provider@2.0.0-alpha.7
378
+ - @ai-sdk/openai-compatible@1.0.0-alpha.7
379
+ - @ai-sdk/provider-utils@3.0.0-alpha.7
380
+
381
+ ## 1.0.0-alpha.6
382
+
383
+ ### Patch Changes
384
+
385
+ - Updated dependencies [0d2c085]
386
+ - @ai-sdk/provider@2.0.0-alpha.6
387
+ - @ai-sdk/openai-compatible@1.0.0-alpha.6
388
+ - @ai-sdk/provider-utils@3.0.0-alpha.6
389
+
390
+ ## 1.0.0-alpha.4
391
+
392
+ ### Patch Changes
393
+
394
+ - Updated dependencies [dc714f3]
395
+ - @ai-sdk/provider@2.0.0-alpha.4
396
+ - @ai-sdk/openai-compatible@1.0.0-alpha.4
397
+ - @ai-sdk/provider-utils@3.0.0-alpha.4
398
+
399
+ ## 1.0.0-alpha.3
400
+
401
+ ### Patch Changes
402
+
403
+ - Updated dependencies [6b98118]
404
+ - @ai-sdk/provider@2.0.0-alpha.3
405
+ - @ai-sdk/openai-compatible@1.0.0-alpha.3
406
+ - @ai-sdk/provider-utils@3.0.0-alpha.3
407
+
408
+ ## 1.0.0-alpha.2
409
+
410
+ ### Patch Changes
411
+
412
+ - Updated dependencies [26535e0]
413
+ - @ai-sdk/provider@2.0.0-alpha.2
414
+ - @ai-sdk/openai-compatible@1.0.0-alpha.2
415
+ - @ai-sdk/provider-utils@3.0.0-alpha.2
416
+
417
+ ## 1.0.0-alpha.1
418
+
419
+ ### Patch Changes
420
+
421
+ - Updated dependencies [3f2f00c]
422
+ - @ai-sdk/provider@2.0.0-alpha.1
423
+ - @ai-sdk/openai-compatible@1.0.0-alpha.1
424
+ - @ai-sdk/provider-utils@3.0.0-alpha.1
425
+
426
+ ## 1.0.0-canary.19
427
+
428
+ ### Patch Changes
429
+
430
+ - Updated dependencies [faf8446]
431
+ - @ai-sdk/provider-utils@3.0.0-canary.19
432
+ - @ai-sdk/openai-compatible@1.0.0-canary.19
433
+
434
+ ## 1.0.0-canary.18
435
+
436
+ ### Patch Changes
437
+
438
+ - Updated dependencies [40acf9b]
439
+ - @ai-sdk/provider-utils@3.0.0-canary.18
440
+ - @ai-sdk/openai-compatible@1.0.0-canary.18
441
+
442
+ ## 1.0.0-canary.17
443
+
444
+ ### Major Changes
445
+
446
+ - 516be5b: ### Move Image Model Settings into generate options
447
+
448
+ Image Models no longer have settings. Instead, `maxImagesPerCall` can be passed directly to `generateImage()`. All other image settings can be passed to `providerOptions[provider]`.
449
+
450
+ Before
451
+
452
+ ```js
453
+ await generateImage({
454
+ model: luma.image('photon-flash-1', {
455
+ maxImagesPerCall: 5,
456
+ pollIntervalMillis: 500,
457
+ }),
458
+ prompt,
459
+ n: 10,
460
+ });
461
+ ```
462
+
463
+ After
464
+
465
+ ```js
466
+ await generateImage({
467
+ model: luma.image('photon-flash-1'),
468
+ prompt,
469
+ n: 10,
470
+ maxImagesPerCall: 5,
471
+ providerOptions: {
472
+ luma: { pollIntervalMillis: 5 },
473
+ },
474
+ });
475
+ ```
476
+
477
+ Pull Request: https://github.com/vercel/ai/pull/6180
478
+
479
+ ### Patch Changes
480
+
481
+ - Updated dependencies [516be5b]
482
+ - Updated dependencies [ea7a7c9]
483
+ - @ai-sdk/openai-compatible@1.0.0-canary.17
484
+ - @ai-sdk/provider-utils@3.0.0-canary.17
485
+
486
+ ## 1.0.0-canary.16
487
+
488
+ ### Patch Changes
489
+
490
+ - Updated dependencies [87b828f]
491
+ - @ai-sdk/provider-utils@3.0.0-canary.16
492
+ - @ai-sdk/openai-compatible@1.0.0-canary.16
493
+
494
+ ## 1.0.0-canary.15
495
+
496
+ ### Patch Changes
497
+
498
+ - Updated dependencies [a571d6e]
499
+ - Updated dependencies [a8c8bd5]
500
+ - Updated dependencies [7979f7f]
501
+ - Updated dependencies [41fa418]
502
+ - @ai-sdk/provider-utils@3.0.0-canary.15
503
+ - @ai-sdk/provider@2.0.0-canary.14
504
+ - @ai-sdk/openai-compatible@1.0.0-canary.15
505
+
506
+ ## 1.0.0-canary.14
507
+
508
+ ### Patch Changes
509
+
510
+ - Updated dependencies [957b739]
511
+ - Updated dependencies [9bd5ab5]
512
+ - @ai-sdk/provider-utils@3.0.0-canary.14
513
+ - @ai-sdk/provider@2.0.0-canary.13
514
+ - @ai-sdk/openai-compatible@1.0.0-canary.14
515
+
516
+ ## 1.0.0-canary.13
517
+
518
+ ### Patch Changes
519
+
520
+ - d9209ca: fix (image-model): `specificationVersion: v1` -> `v2`
521
+ - Updated dependencies [7b3ae3f]
522
+ - Updated dependencies [d9209ca]
523
+ - Updated dependencies [0ff02bb]
524
+ - @ai-sdk/provider@2.0.0-canary.12
525
+ - @ai-sdk/openai-compatible@1.0.0-canary.13
526
+ - @ai-sdk/provider-utils@3.0.0-canary.13
527
+
528
+ ## 1.0.0-canary.12
529
+
530
+ ### Patch Changes
531
+
532
+ - Updated dependencies [9bf7291]
533
+ - Updated dependencies [4617fab]
534
+ - Updated dependencies [e030615]
535
+ - @ai-sdk/provider@2.0.0-canary.11
536
+ - @ai-sdk/openai-compatible@1.0.0-canary.12
537
+ - @ai-sdk/provider-utils@3.0.0-canary.12
538
+
539
+ ## 1.0.0-canary.11
540
+
541
+ ### Patch Changes
542
+
543
+ - 9301f86: refactor (image-model): rename `ImageModelV1` to `ImageModelV2`
544
+ - Updated dependencies [db72adc]
545
+ - Updated dependencies [42e32b0]
546
+ - Updated dependencies [66962ed]
547
+ - Updated dependencies [9301f86]
548
+ - Updated dependencies [a3f768e]
549
+ - @ai-sdk/openai-compatible@1.0.0-canary.11
550
+ - @ai-sdk/provider-utils@3.0.0-canary.11
551
+ - @ai-sdk/provider@2.0.0-canary.10
552
+
553
+ ## 1.0.0-canary.10
554
+
555
+ ### Patch Changes
556
+
557
+ - Updated dependencies [cf8280e]
558
+ - Updated dependencies [e86be6f]
559
+ - @ai-sdk/openai-compatible@1.0.0-canary.10
560
+ - @ai-sdk/provider@2.0.0-canary.9
561
+ - @ai-sdk/provider-utils@3.0.0-canary.10
562
+
563
+ ## 1.0.0-canary.9
564
+
565
+ ### Patch Changes
566
+
567
+ - Updated dependencies [95857aa]
568
+ - Updated dependencies [7ea4132]
569
+ - @ai-sdk/provider@2.0.0-canary.8
570
+ - @ai-sdk/openai-compatible@1.0.0-canary.9
571
+ - @ai-sdk/provider-utils@3.0.0-canary.9
572
+
3
573
  ## 1.0.0-canary.8
4
574
 
5
575
  ### Patch Changes
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # AI SDK - Together.ai Provider
2
2
 
3
- The **[Together.ai provider](https://sdk.vercel.ai/providers/ai-sdk-providers/togetherai)** for the [AI SDK](https://sdk.vercel.ai/docs) contains language model support for the [Together.ai](https://together.ai) platform.
3
+ The **[Together.ai provider](https://ai-sdk.dev/providers/ai-sdk-providers/togetherai)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model support for the [Together.ai](https://together.ai) 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 **[Together.ai provider](https://sdk.vercel.ai/providers/ai-sdk-providers/togetherai)** for more information.
35
+ Please check out the **[Together.ai provider](https://ai-sdk.dev/providers/ai-sdk-providers/togetherai)** for more information.
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { ProviderV2, LanguageModelV2, EmbeddingModelV2, ImageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV2, LanguageModelV2, EmbeddingModelV2, ImageModelV2 } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
3
  export { OpenAICompatibleErrorData as TogetherAIErrorData } from '@ai-sdk/openai-compatible';
4
4
 
@@ -9,12 +9,6 @@ type TogetherAIEmbeddingModelId = 'togethercomputer/m2-bert-80M-2k-retrieval' |
9
9
  type TogetherAICompletionModelId = 'meta-llama/Llama-2-70b-hf' | 'mistralai/Mistral-7B-v0.1' | 'mistralai/Mixtral-8x7B-v0.1' | 'Meta-Llama/Llama-Guard-7b' | 'codellama/CodeLlama-34b-Instruct-hf' | 'Qwen/Qwen2.5-Coder-32B-Instruct' | (string & {});
10
10
 
11
11
  type TogetherAIImageModelId = 'stabilityai/stable-diffusion-xl-base-1.0' | 'black-forest-labs/FLUX.1-dev' | 'black-forest-labs/FLUX.1-dev-lora' | 'black-forest-labs/FLUX.1-schnell' | 'black-forest-labs/FLUX.1-canny' | 'black-forest-labs/FLUX.1-depth' | 'black-forest-labs/FLUX.1-redux' | 'black-forest-labs/FLUX.1.1-pro' | 'black-forest-labs/FLUX.1-pro' | 'black-forest-labs/FLUX.1-schnell-Free' | (string & {});
12
- interface TogetherAIImageSettings {
13
- /**
14
- Override the maximum number of images per call (default 1)
15
- */
16
- maxImagesPerCall?: number;
17
- }
18
12
 
19
13
  interface TogetherAIProviderSettings {
20
14
  /**
@@ -57,13 +51,13 @@ interface TogetherAIProvider extends ProviderV2 {
57
51
  */
58
52
  textEmbeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV2<string>;
59
53
  /**
60
- Creates a model for image generation.
61
- */
62
- image(modelId: TogetherAIImageModelId, settings?: TogetherAIImageSettings): ImageModelV1;
54
+ Creates a model for image generation.
55
+ */
56
+ image(modelId: TogetherAIImageModelId): ImageModelV2;
63
57
  /**
64
- Creates a model for image generation.
65
- */
66
- imageModel(modelId: TogetherAIImageModelId): ImageModelV1;
58
+ Creates a model for image generation.
59
+ */
60
+ imageModel(modelId: TogetherAIImageModelId): ImageModelV2;
67
61
  }
68
62
  declare function createTogetherAI(options?: TogetherAIProviderSettings): TogetherAIProvider;
69
63
  declare const togetherai: TogetherAIProvider;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ProviderV2, LanguageModelV2, EmbeddingModelV2, ImageModelV1 } from '@ai-sdk/provider';
1
+ import { ProviderV2, LanguageModelV2, EmbeddingModelV2, ImageModelV2 } from '@ai-sdk/provider';
2
2
  import { FetchFunction } from '@ai-sdk/provider-utils';
3
3
  export { OpenAICompatibleErrorData as TogetherAIErrorData } from '@ai-sdk/openai-compatible';
4
4
 
@@ -9,12 +9,6 @@ type TogetherAIEmbeddingModelId = 'togethercomputer/m2-bert-80M-2k-retrieval' |
9
9
  type TogetherAICompletionModelId = 'meta-llama/Llama-2-70b-hf' | 'mistralai/Mistral-7B-v0.1' | 'mistralai/Mixtral-8x7B-v0.1' | 'Meta-Llama/Llama-Guard-7b' | 'codellama/CodeLlama-34b-Instruct-hf' | 'Qwen/Qwen2.5-Coder-32B-Instruct' | (string & {});
10
10
 
11
11
  type TogetherAIImageModelId = 'stabilityai/stable-diffusion-xl-base-1.0' | 'black-forest-labs/FLUX.1-dev' | 'black-forest-labs/FLUX.1-dev-lora' | 'black-forest-labs/FLUX.1-schnell' | 'black-forest-labs/FLUX.1-canny' | 'black-forest-labs/FLUX.1-depth' | 'black-forest-labs/FLUX.1-redux' | 'black-forest-labs/FLUX.1.1-pro' | 'black-forest-labs/FLUX.1-pro' | 'black-forest-labs/FLUX.1-schnell-Free' | (string & {});
12
- interface TogetherAIImageSettings {
13
- /**
14
- Override the maximum number of images per call (default 1)
15
- */
16
- maxImagesPerCall?: number;
17
- }
18
12
 
19
13
  interface TogetherAIProviderSettings {
20
14
  /**
@@ -57,13 +51,13 @@ interface TogetherAIProvider extends ProviderV2 {
57
51
  */
58
52
  textEmbeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV2<string>;
59
53
  /**
60
- Creates a model for image generation.
61
- */
62
- image(modelId: TogetherAIImageModelId, settings?: TogetherAIImageSettings): ImageModelV1;
54
+ Creates a model for image generation.
55
+ */
56
+ image(modelId: TogetherAIImageModelId): ImageModelV2;
63
57
  /**
64
- Creates a model for image generation.
65
- */
66
- imageModel(modelId: TogetherAIImageModelId): ImageModelV1;
58
+ Creates a model for image generation.
59
+ */
60
+ imageModel(modelId: TogetherAIImageModelId): ImageModelV2;
67
61
  }
68
62
  declare function createTogetherAI(options?: TogetherAIProviderSettings): TogetherAIProvider;
69
63
  declare const togetherai: TogetherAIProvider;
package/dist/index.js CHANGED
@@ -31,21 +31,17 @@ var import_provider_utils2 = require("@ai-sdk/provider-utils");
31
31
 
32
32
  // src/togetherai-image-model.ts
33
33
  var import_provider_utils = require("@ai-sdk/provider-utils");
34
- var import_zod = require("zod");
34
+ var import_v4 = require("zod/v4");
35
35
  var TogetherAIImageModel = class {
36
- constructor(modelId, settings, config) {
36
+ constructor(modelId, config) {
37
37
  this.modelId = modelId;
38
- this.settings = settings;
39
38
  this.config = config;
40
- this.specificationVersion = "v1";
39
+ this.specificationVersion = "v2";
40
+ this.maxImagesPerCall = 1;
41
41
  }
42
42
  get provider() {
43
43
  return this.config.provider;
44
44
  }
45
- get maxImagesPerCall() {
46
- var _a;
47
- return (_a = this.settings.maxImagesPerCall) != null ? _a : 1;
48
- }
49
45
  async doGenerate({
50
46
  prompt,
51
47
  n,
@@ -102,16 +98,16 @@ var TogetherAIImageModel = class {
102
98
  };
103
99
  }
104
100
  };
105
- var togetheraiImageResponseSchema = import_zod.z.object({
106
- data: import_zod.z.array(
107
- import_zod.z.object({
108
- b64_json: import_zod.z.string()
101
+ var togetheraiImageResponseSchema = import_v4.z.object({
102
+ data: import_v4.z.array(
103
+ import_v4.z.object({
104
+ b64_json: import_v4.z.string()
109
105
  })
110
106
  )
111
107
  });
112
- var togetheraiErrorSchema = import_zod.z.object({
113
- error: import_zod.z.object({
114
- message: import_zod.z.string()
108
+ var togetheraiErrorSchema = import_v4.z.object({
109
+ error: import_v4.z.object({
110
+ message: import_v4.z.string()
115
111
  })
116
112
  });
117
113
 
@@ -136,10 +132,10 @@ function createTogetherAI(options = {}) {
136
132
  fetch: options.fetch
137
133
  });
138
134
  const createChatModel = (modelId) => {
139
- return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId, {
140
- ...getCommonModelConfig("chat"),
141
- defaultObjectGenerationMode: "tool"
142
- });
135
+ return new import_openai_compatible.OpenAICompatibleChatLanguageModel(
136
+ modelId,
137
+ getCommonModelConfig("chat")
138
+ );
143
139
  };
144
140
  const createCompletionModel = (modelId) => new import_openai_compatible.OpenAICompatibleCompletionLanguageModel(
145
141
  modelId,
@@ -149,7 +145,7 @@ function createTogetherAI(options = {}) {
149
145
  modelId,
150
146
  getCommonModelConfig("embedding")
151
147
  );
152
- const createImageModel = (modelId, settings = {}) => new TogetherAIImageModel(modelId, settings, {
148
+ const createImageModel = (modelId) => new TogetherAIImageModel(modelId, {
153
149
  ...getCommonModelConfig("image"),
154
150
  baseURL: baseURL != null ? baseURL : "https://api.together.xyz/v1/"
155
151
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/togetherai-provider.ts","../src/togetherai-image-model.ts"],"sourcesContent":["export { createTogetherAI, togetherai } from './togetherai-provider';\nexport type {\n TogetherAIProvider,\n TogetherAIProviderSettings,\n} from './togetherai-provider';\nexport type { OpenAICompatibleErrorData as TogetherAIErrorData } from '@ai-sdk/openai-compatible';\n","import {\n LanguageModelV2,\n EmbeddingModelV2,\n ProviderV2,\n ImageModelV1,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIChatModelId } from './togetherai-chat-settings';\nimport { TogetherAIEmbeddingModelId } from './togetherai-embedding-settings';\nimport { TogetherAICompletionModelId } from './togetherai-completion-settings';\nimport { TogetherAIImageModel } from './togetherai-image-model';\nimport {\n TogetherAIImageModelId,\n TogetherAIImageSettings,\n} from './togetherai-image-settings';\n\nexport interface TogetherAIProviderSettings {\n /**\nTogetherAI 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 TogetherAIProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n chatModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n languageModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a completion model for text generation.\n*/\n completionModel(modelId: TogetherAICompletionModelId): LanguageModelV2;\n\n /**\nCreates a text embedding model for text generation.\n*/\n textEmbeddingModel(\n modelId: TogetherAIEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n /**\n Creates a model for image generation.\n */\n image(\n modelId: TogetherAIImageModelId,\n settings?: TogetherAIImageSettings,\n ): ImageModelV1;\n\n /**\n Creates a model for image generation.\n */\n imageModel(modelId: TogetherAIImageModelId): ImageModelV1;\n}\n\nexport function createTogetherAI(\n options: TogetherAIProviderSettings = {},\n): TogetherAIProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.together.xyz/v1/',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'TOGETHER_AI_API_KEY',\n description: 'TogetherAI',\n })}`,\n ...options.headers,\n });\n\n interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `togetherai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: TogetherAIChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n ...getCommonModelConfig('chat'),\n defaultObjectGenerationMode: 'tool',\n });\n };\n\n const createCompletionModel = (modelId: TogetherAICompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig('completion'),\n );\n\n const createTextEmbeddingModel = (modelId: TogetherAIEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig('embedding'),\n );\n\n const createImageModel = (\n modelId: TogetherAIImageModelId,\n settings: TogetherAIImageSettings = {},\n ) =>\n new TogetherAIImageModel(modelId, settings, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL ?? 'https://api.together.xyz/v1/',\n });\n\n const provider = (modelId: TogetherAIChatModelId) => createChatModel(modelId);\n\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\nexport const togetherai = createTogetherAI();\n","import { ImageModelV1, ImageModelV1CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport {\n TogetherAIImageModelId,\n TogetherAIImageSettings,\n} from './togetherai-image-settings';\nimport { z } from 'zod';\n\ninterface TogetherAIImageModelConfig {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class TogetherAIImageModel implements ImageModelV1 {\n readonly specificationVersion = 'v1';\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxImagesPerCall(): number {\n return this.settings.maxImagesPerCall ?? 1;\n }\n\n constructor(\n readonly modelId: TogetherAIImageModelId,\n readonly settings: TogetherAIImageSettings,\n private config: TogetherAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support the `aspectRatio` option. Use `size` instead.',\n });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const splitSize = size?.split('x');\n // https://docs.together.ai/reference/post_images-generations\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n seed,\n n,\n ...(splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1]),\n }),\n response_format: 'base64',\n ...(providerOptions.togetherai ?? {}),\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: data => data.error.message,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n }),\n ),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n }),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,+BAIO;AACP,IAAAA,yBAIO;;;ACdP,4BAMO;AAKP,iBAAkB;AAYX,IAAM,uBAAN,MAAmD;AAAA,EAWxD,YACW,SACA,UACD,QACR;AAHS;AACA;AACD;AAbV,SAAS,uBAAuB;AAAA,EAc7B;AAAA,EAZH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,IAAI,mBAA2B;AA/BjC;AAgCI,YAAO,UAAK,SAAS,qBAAd,YAAkC;AAAA,EAC3C;AAAA,EAQA,MAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AAnDJ;AAoDI,UAAM,WAA2C,CAAC;AAElD,QAAI,QAAQ,MAAM;AAChB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SACE;AAAA,MACJ,CAAC;AAAA,IACH;AAEA,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,YAAY,6BAAM,MAAM;AAE9B,UAAM,EAAE,OAAO,UAAU,gBAAgB,IAAI,UAAM,qCAAc;AAAA,MAC/D,KAAK,GAAG,KAAK,OAAO,OAAO;AAAA,MAC3B,aAAS,sCAAe,KAAK,OAAO,QAAQ,GAAG,OAAO;AAAA,MACtD,MAAM;AAAA,QACJ,OAAO,KAAK;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAI,aAAa;AAAA,UACf,OAAO,SAAS,UAAU,CAAC,CAAC;AAAA,UAC5B,QAAQ,SAAS,UAAU,CAAC,CAAC;AAAA,QAC/B;AAAA,QACA,iBAAiB;AAAA,QACjB,IAAI,qBAAgB,eAAhB,YAA8B,CAAC;AAAA,MACrC;AAAA,MACA,2BAAuB,sDAA+B;AAAA,QACpD,aAAa;AAAA,QACb,gBAAgB,UAAQ,KAAK,MAAM;AAAA,MACrC,CAAC;AAAA,MACD,+BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,QAAQ,SAAS,KAAK,IAAI,UAAQ,KAAK,QAAQ;AAAA,MAC/C;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAIA,IAAM,gCAAgC,aAAE,OAAO;AAAA,EAC7C,MAAM,aAAE;AAAA,IACN,aAAE,OAAO;AAAA,MACP,UAAU,aAAE,OAAO;AAAA,IACrB,CAAC;AAAA,EACH;AACF,CAAC;AAID,IAAM,wBAAwB,aAAE,OAAO;AAAA,EACrC,OAAO,aAAE,OAAO;AAAA,IACd,SAAS,aAAE,OAAO;AAAA,EACpB,CAAC;AACH,CAAC;;;ADjCM,SAAS,iBACd,UAAsC,CAAC,GACnB;AAzFtB;AA0FE,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;AASA,QAAM,uBAAuB,CAAC,eAA0C;AAAA,IACtE,UAAU,cAAc,SAAS;AAAA,IACjC,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,IACpC,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB;AAEA,QAAM,kBAAkB,CAAC,YAAmC;AAC1D,WAAO,IAAI,2DAAkC,SAAS;AAAA,MACpD,GAAG,qBAAqB,MAAM;AAAA,MAC9B,6BAA6B;AAAA,IAC/B,CAAC;AAAA,EACH;AAEA,QAAM,wBAAwB,CAAC,YAC7B,IAAI;AAAA,IACF;AAAA,IACA,qBAAqB,YAAY;AAAA,EACnC;AAEF,QAAM,2BAA2B,CAAC,YAChC,IAAI;AAAA,IACF;AAAA,IACA,qBAAqB,WAAW;AAAA,EAClC;AAEF,QAAM,mBAAmB,CACvB,SACA,WAAoC,CAAC,MAErC,IAAI,qBAAqB,SAAS,UAAU;AAAA,IAC1C,GAAG,qBAAqB,OAAO;AAAA,IAC/B,SAAS,4BAAW;AAAA,EACtB,CAAC;AAEH,QAAM,WAAW,CAAC,YAAmC,gBAAgB,OAAO;AAE5E,WAAS,kBAAkB;AAC3B,WAAS,gBAAgB;AACzB,WAAS,YAAY;AACrB,WAAS,qBAAqB;AAC9B,WAAS,QAAQ;AACjB,WAAS,aAAa;AAEtB,SAAO;AACT;AAEO,IAAM,aAAa,iBAAiB;","names":["import_provider_utils"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/togetherai-provider.ts","../src/togetherai-image-model.ts"],"sourcesContent":["export { createTogetherAI, togetherai } from './togetherai-provider';\nexport type {\n TogetherAIProvider,\n TogetherAIProviderSettings,\n} from './togetherai-provider';\nexport type { OpenAICompatibleErrorData as TogetherAIErrorData } from '@ai-sdk/openai-compatible';\n","import {\n LanguageModelV2,\n EmbeddingModelV2,\n ProviderV2,\n ImageModelV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIChatModelId } from './togetherai-chat-options';\nimport { TogetherAIEmbeddingModelId } from './togetherai-embedding-options';\nimport { TogetherAICompletionModelId } from './togetherai-completion-options';\nimport { TogetherAIImageModel } from './togetherai-image-model';\nimport { TogetherAIImageModelId } from './togetherai-image-settings';\n\nexport interface TogetherAIProviderSettings {\n /**\nTogetherAI 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 TogetherAIProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n chatModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n languageModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a completion model for text generation.\n*/\n completionModel(modelId: TogetherAICompletionModelId): LanguageModelV2;\n\n /**\nCreates a text embedding model for text generation.\n*/\n textEmbeddingModel(\n modelId: TogetherAIEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n /**\nCreates a model for image generation.\n*/\n image(modelId: TogetherAIImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n*/\n imageModel(modelId: TogetherAIImageModelId): ImageModelV2;\n}\n\nexport function createTogetherAI(\n options: TogetherAIProviderSettings = {},\n): TogetherAIProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.together.xyz/v1/',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'TOGETHER_AI_API_KEY',\n description: 'TogetherAI',\n })}`,\n ...options.headers,\n });\n\n interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `togetherai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: TogetherAIChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(\n modelId,\n getCommonModelConfig('chat'),\n );\n };\n\n const createCompletionModel = (modelId: TogetherAICompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig('completion'),\n );\n\n const createTextEmbeddingModel = (modelId: TogetherAIEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig('embedding'),\n );\n\n const createImageModel = (modelId: TogetherAIImageModelId) =>\n new TogetherAIImageModel(modelId, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL ?? 'https://api.together.xyz/v1/',\n });\n\n const provider = (modelId: TogetherAIChatModelId) => createChatModel(modelId);\n\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\nexport const togetherai = createTogetherAI();\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIImageModelId } from './togetherai-image-settings';\nimport { z } from 'zod/v4';\n\ninterface TogetherAIImageModelConfig {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class TogetherAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: TogetherAIImageModelId,\n private config: TogetherAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support the `aspectRatio` option. Use `size` instead.',\n });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const splitSize = size?.split('x');\n // https://docs.together.ai/reference/post_images-generations\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n seed,\n n,\n ...(splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1]),\n }),\n response_format: 'base64',\n ...(providerOptions.togetherai ?? {}),\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: data => data.error.message,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n }),\n ),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n }),\n});\n"],"mappings":"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","names":["import_provider_utils"]}
package/dist/index.mjs CHANGED
@@ -16,21 +16,17 @@ import {
16
16
  createJsonErrorResponseHandler,
17
17
  postJsonToApi
18
18
  } from "@ai-sdk/provider-utils";
19
- import { z } from "zod";
19
+ import { z } from "zod/v4";
20
20
  var TogetherAIImageModel = class {
21
- constructor(modelId, settings, config) {
21
+ constructor(modelId, config) {
22
22
  this.modelId = modelId;
23
- this.settings = settings;
24
23
  this.config = config;
25
- this.specificationVersion = "v1";
24
+ this.specificationVersion = "v2";
25
+ this.maxImagesPerCall = 1;
26
26
  }
27
27
  get provider() {
28
28
  return this.config.provider;
29
29
  }
30
- get maxImagesPerCall() {
31
- var _a;
32
- return (_a = this.settings.maxImagesPerCall) != null ? _a : 1;
33
- }
34
30
  async doGenerate({
35
31
  prompt,
36
32
  n,
@@ -121,10 +117,10 @@ function createTogetherAI(options = {}) {
121
117
  fetch: options.fetch
122
118
  });
123
119
  const createChatModel = (modelId) => {
124
- return new OpenAICompatibleChatLanguageModel(modelId, {
125
- ...getCommonModelConfig("chat"),
126
- defaultObjectGenerationMode: "tool"
127
- });
120
+ return new OpenAICompatibleChatLanguageModel(
121
+ modelId,
122
+ getCommonModelConfig("chat")
123
+ );
128
124
  };
129
125
  const createCompletionModel = (modelId) => new OpenAICompatibleCompletionLanguageModel(
130
126
  modelId,
@@ -134,7 +130,7 @@ function createTogetherAI(options = {}) {
134
130
  modelId,
135
131
  getCommonModelConfig("embedding")
136
132
  );
137
- const createImageModel = (modelId, settings = {}) => new TogetherAIImageModel(modelId, settings, {
133
+ const createImageModel = (modelId) => new TogetherAIImageModel(modelId, {
138
134
  ...getCommonModelConfig("image"),
139
135
  baseURL: baseURL != null ? baseURL : "https://api.together.xyz/v1/"
140
136
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/togetherai-provider.ts","../src/togetherai-image-model.ts"],"sourcesContent":["import {\n LanguageModelV2,\n EmbeddingModelV2,\n ProviderV2,\n ImageModelV1,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIChatModelId } from './togetherai-chat-settings';\nimport { TogetherAIEmbeddingModelId } from './togetherai-embedding-settings';\nimport { TogetherAICompletionModelId } from './togetherai-completion-settings';\nimport { TogetherAIImageModel } from './togetherai-image-model';\nimport {\n TogetherAIImageModelId,\n TogetherAIImageSettings,\n} from './togetherai-image-settings';\n\nexport interface TogetherAIProviderSettings {\n /**\nTogetherAI 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 TogetherAIProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n chatModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n languageModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a completion model for text generation.\n*/\n completionModel(modelId: TogetherAICompletionModelId): LanguageModelV2;\n\n /**\nCreates a text embedding model for text generation.\n*/\n textEmbeddingModel(\n modelId: TogetherAIEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n /**\n Creates a model for image generation.\n */\n image(\n modelId: TogetherAIImageModelId,\n settings?: TogetherAIImageSettings,\n ): ImageModelV1;\n\n /**\n Creates a model for image generation.\n */\n imageModel(modelId: TogetherAIImageModelId): ImageModelV1;\n}\n\nexport function createTogetherAI(\n options: TogetherAIProviderSettings = {},\n): TogetherAIProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.together.xyz/v1/',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'TOGETHER_AI_API_KEY',\n description: 'TogetherAI',\n })}`,\n ...options.headers,\n });\n\n interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `togetherai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: TogetherAIChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n ...getCommonModelConfig('chat'),\n defaultObjectGenerationMode: 'tool',\n });\n };\n\n const createCompletionModel = (modelId: TogetherAICompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig('completion'),\n );\n\n const createTextEmbeddingModel = (modelId: TogetherAIEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig('embedding'),\n );\n\n const createImageModel = (\n modelId: TogetherAIImageModelId,\n settings: TogetherAIImageSettings = {},\n ) =>\n new TogetherAIImageModel(modelId, settings, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL ?? 'https://api.together.xyz/v1/',\n });\n\n const provider = (modelId: TogetherAIChatModelId) => createChatModel(modelId);\n\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\nexport const togetherai = createTogetherAI();\n","import { ImageModelV1, ImageModelV1CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport {\n TogetherAIImageModelId,\n TogetherAIImageSettings,\n} from './togetherai-image-settings';\nimport { z } from 'zod';\n\ninterface TogetherAIImageModelConfig {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class TogetherAIImageModel implements ImageModelV1 {\n readonly specificationVersion = 'v1';\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxImagesPerCall(): number {\n return this.settings.maxImagesPerCall ?? 1;\n }\n\n constructor(\n readonly modelId: TogetherAIImageModelId,\n readonly settings: TogetherAIImageSettings,\n private config: TogetherAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support the `aspectRatio` option. Use `size` instead.',\n });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const splitSize = size?.split('x');\n // https://docs.together.ai/reference/post_images-generations\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n seed,\n n,\n ...(splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1]),\n }),\n response_format: 'base64',\n ...(providerOptions.togetherai ?? {}),\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: data => data.error.message,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n }),\n ),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n }),\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/togetherai-provider.ts","../src/togetherai-image-model.ts"],"sourcesContent":["import {\n LanguageModelV2,\n EmbeddingModelV2,\n ProviderV2,\n ImageModelV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIChatModelId } from './togetherai-chat-options';\nimport { TogetherAIEmbeddingModelId } from './togetherai-embedding-options';\nimport { TogetherAICompletionModelId } from './togetherai-completion-options';\nimport { TogetherAIImageModel } from './togetherai-image-model';\nimport { TogetherAIImageModelId } from './togetherai-image-settings';\n\nexport interface TogetherAIProviderSettings {\n /**\nTogetherAI 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 TogetherAIProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n chatModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n languageModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a completion model for text generation.\n*/\n completionModel(modelId: TogetherAICompletionModelId): LanguageModelV2;\n\n /**\nCreates a text embedding model for text generation.\n*/\n textEmbeddingModel(\n modelId: TogetherAIEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n /**\nCreates a model for image generation.\n*/\n image(modelId: TogetherAIImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n*/\n imageModel(modelId: TogetherAIImageModelId): ImageModelV2;\n}\n\nexport function createTogetherAI(\n options: TogetherAIProviderSettings = {},\n): TogetherAIProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.together.xyz/v1/',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'TOGETHER_AI_API_KEY',\n description: 'TogetherAI',\n })}`,\n ...options.headers,\n });\n\n interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `togetherai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: TogetherAIChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(\n modelId,\n getCommonModelConfig('chat'),\n );\n };\n\n const createCompletionModel = (modelId: TogetherAICompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig('completion'),\n );\n\n const createTextEmbeddingModel = (modelId: TogetherAIEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig('embedding'),\n );\n\n const createImageModel = (modelId: TogetherAIImageModelId) =>\n new TogetherAIImageModel(modelId, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL ?? 'https://api.together.xyz/v1/',\n });\n\n const provider = (modelId: TogetherAIChatModelId) => createChatModel(modelId);\n\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\nexport const togetherai = createTogetherAI();\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIImageModelId } from './togetherai-image-settings';\nimport { z } from 'zod/v4';\n\ninterface TogetherAIImageModelConfig {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class TogetherAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: TogetherAIImageModelId,\n private config: TogetherAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support the `aspectRatio` option. Use `size` instead.',\n });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const splitSize = size?.split('x');\n // https://docs.together.ai/reference/post_images-generations\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n seed,\n n,\n ...(splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1]),\n }),\n response_format: 'base64',\n ...(providerOptions.togetherai ?? {}),\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: data => data.error.message,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n }),\n ),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n }),\n});\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/togetherai",
3
- "version": "1.0.0-canary.8",
3
+ "version": "1.0.0",
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.8",
23
- "@ai-sdk/provider": "2.0.0-canary.7",
24
- "@ai-sdk/provider-utils": "3.0.0-canary.8"
22
+ "@ai-sdk/openai-compatible": "1.0.0",
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"
@@ -58,6 +58,8 @@
58
58
  "type-check": "tsc --build",
59
59
  "prettier-check": "prettier --check \"./**/*.ts*\"",
60
60
  "test": "pnpm test:node && pnpm test:edge",
61
+ "test:update": "pnpm test:node -u",
62
+ "test:watch": "vitest --config vitest.node.config.js",
61
63
  "test:edge": "vitest --config vitest.edge.config.js --run",
62
64
  "test:node": "vitest --config vitest.node.config.js --run"
63
65
  }