@ai-sdk/togetherai 3.0.59 → 3.0.61

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,24 @@
1
1
  # @ai-sdk/togetherai
2
2
 
3
+ ## 3.0.61
4
+
5
+ ### Patch Changes
6
+
7
+ - ede5b89: chore: migrate package builds from tsup to tsdown
8
+ - Updated dependencies [ede5b89]
9
+ - @ai-sdk/openai-compatible@3.0.60
10
+ - @ai-sdk/provider@4.0.20
11
+ - @ai-sdk/provider-utils@5.0.52
12
+
13
+ ## 3.0.60
14
+
15
+ ### Patch Changes
16
+
17
+ - c2511c1: fix: use standards-compliant User-Agent header
18
+ - Updated dependencies [c2511c1]
19
+ - @ai-sdk/openai-compatible@3.0.59
20
+ - @ai-sdk/provider-utils@5.0.51
21
+
3
22
  ## 3.0.59
4
23
 
5
24
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -1,103 +1,110 @@
1
- export { OpenAICompatibleErrorData as TogetherAIErrorData } from '@ai-sdk/openai-compatible';
2
- import { ProviderV4, LanguageModelV4, EmbeddingModelV4, ImageModelV4, RerankingModelV4 } from '@ai-sdk/provider';
3
- import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
4
- import { FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
5
-
1
+ import { OpenAICompatibleErrorData as TogetherAIErrorData } from "@ai-sdk/openai-compatible";
2
+ import { FetchFunction, InferSchema } from "@ai-sdk/provider-utils";
3
+ import { EmbeddingModelV4, ImageModelV4, LanguageModelV4, ProviderV4, RerankingModelV4 } from "@ai-sdk/provider";
4
+ //#region src/reranking/togetherai-reranking-model-options.d.ts
6
5
  type TogetherAIRerankingModelId = 'Salesforce/Llama-Rank-v1' | 'mixedbread-ai/Mxbai-Rerank-Large-V2' | (string & {});
7
6
  type TogetherAIRerankingModelOptions = {
8
- /**
9
- * List of keys in the JSON Object document to rank by.
10
- * Defaults to use all supplied keys for ranking.
11
- *
12
- * @example ["title", "text"]
13
- */
14
- rankFields?: string[];
7
+ /**
8
+ * List of keys in the JSON Object document to rank by.
9
+ * Defaults to use all supplied keys for ranking.
10
+ *
11
+ * @example ["title", "text"]
12
+ */
13
+ rankFields?: string[];
15
14
  };
16
-
15
+ //#endregion
16
+ //#region src/togetherai-chat-options.d.ts
17
17
  type TogetherAIChatModelId = 'meta-llama/Llama-3.3-70B-Instruct-Turbo' | 'meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo' | 'meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo' | 'meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo' | 'meta-llama/Meta-Llama-3-8B-Instruct-Turbo' | 'meta-llama/Meta-Llama-3-70B-Instruct-Turbo' | 'meta-llama/Llama-3.2-3B-Instruct-Turbo' | 'meta-llama/Meta-Llama-3-8B-Instruct-Lite' | 'meta-llama/Meta-Llama-3-70B-Instruct-Lite' | 'meta-llama/Llama-3-8b-chat-hf' | 'meta-llama/Llama-3-70b-chat-hf' | 'nvidia/Llama-3.1-Nemotron-70B-Instruct-HF' | 'Qwen/Qwen2.5-Coder-32B-Instruct' | 'Qwen/QwQ-32B-Preview' | 'microsoft/WizardLM-2-8x22B' | 'google/gemma-2-27b-it' | 'google/gemma-2-9b-it' | 'databricks/dbrx-instruct' | 'deepseek-ai/deepseek-llm-67b-chat' | 'deepseek-ai/DeepSeek-V3' | 'deepseek-ai/DeepSeek-V4-Flash-0731' | 'google/gemma-2b-it' | 'Gryphe/MythoMax-L2-13b' | 'meta-llama/Llama-2-13b-chat-hf' | 'mistralai/Mistral-7B-Instruct-v0.1' | 'mistralai/Mistral-7B-Instruct-v0.2' | 'mistralai/Mistral-7B-Instruct-v0.3' | 'mistralai/Mixtral-8x7B-Instruct-v0.1' | 'mistralai/Mixtral-8x22B-Instruct-v0.1' | 'NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO' | 'Qwen/Qwen2.5-7B-Instruct-Turbo' | 'Qwen/Qwen2.5-72B-Instruct-Turbo' | 'Qwen/Qwen2-72B-Instruct' | 'upstage/SOLAR-10.7B-Instruct-v1.0' | (string & {});
18
-
18
+ //#endregion
19
+ //#region src/togetherai-completion-options.d.ts
19
20
  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 & {});
20
-
21
+ //#endregion
22
+ //#region src/togetherai-embedding-options.d.ts
21
23
  type TogetherAIEmbeddingModelId = 'togethercomputer/m2-bert-80M-2k-retrieval' | 'togethercomputer/m2-bert-80M-32k-retrieval' | 'togethercomputer/m2-bert-80M-8k-retrieval' | 'WhereIsAI/UAE-Large-V1' | 'BAAI/bge-large-en-v1.5' | 'BAAI/bge-base-en-v1.5' | 'sentence-transformers/msmarco-bert-base-dot-v5' | 'bert-base-uncased' | (string & {});
22
-
24
+ //#endregion
25
+ //#region src/togetherai-image-settings.d.ts
23
26
  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' | 'black-forest-labs/FLUX.1-kontext-pro' | 'black-forest-labs/FLUX.1-kontext-max' | 'black-forest-labs/FLUX.1-kontext-dev' | (string & {});
24
-
27
+ //#endregion
28
+ //#region src/togetherai-provider.d.ts
25
29
  interface TogetherAIProviderSettings {
26
- /**
27
- * TogetherAI API key.
28
- */
29
- apiKey?: string;
30
- /**
31
- * Base URL for the API calls.
32
- */
33
- baseURL?: string;
34
- /**
35
- * Custom headers to include in the requests.
36
- */
37
- headers?: Record<string, string>;
38
- /**
39
- * Custom fetch implementation. You can use it as a middleware to intercept requests,
40
- * or to provide a custom fetch implementation for e.g. testing.
41
- */
42
- fetch?: FetchFunction;
30
+ /**
31
+ * TogetherAI API key.
32
+ */
33
+ apiKey?: string;
34
+ /**
35
+ * Base URL for the API calls.
36
+ */
37
+ baseURL?: string;
38
+ /**
39
+ * Custom headers to include in the requests.
40
+ */
41
+ headers?: Record<string, string>;
42
+ /**
43
+ * Custom fetch implementation. You can use it as a middleware to intercept requests,
44
+ * or to provide a custom fetch implementation for e.g. testing.
45
+ */
46
+ fetch?: FetchFunction;
43
47
  }
44
48
  interface TogetherAIProvider extends ProviderV4 {
45
- /**
46
- * Creates a model for text generation.
47
- */
48
- (modelId: TogetherAIChatModelId): LanguageModelV4;
49
- /**
50
- * Creates a chat model for text generation.
51
- */
52
- chatModel(modelId: TogetherAIChatModelId): LanguageModelV4;
53
- /**
54
- * Creates a chat model for text generation.
55
- */
56
- languageModel(modelId: TogetherAIChatModelId): LanguageModelV4;
57
- /**
58
- * Creates a completion model for text generation.
59
- */
60
- completionModel(modelId: TogetherAICompletionModelId): LanguageModelV4;
61
- /**
62
- * Creates a text embedding model for text generation.
63
- */
64
- embeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV4;
65
- /**
66
- * @deprecated Use `embeddingModel` instead.
67
- */
68
- textEmbeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV4;
69
- /**
70
- * Creates a model for image generation.
71
- */
72
- image(modelId: TogetherAIImageModelId): ImageModelV4;
73
- /**
74
- * Creates a model for image generation.
75
- */
76
- imageModel(modelId: TogetherAIImageModelId): ImageModelV4;
77
- /**
78
- * Creates a model for reranking.
79
- */
80
- reranking(modelId: TogetherAIRerankingModelId): RerankingModelV4;
81
- /**
82
- * Creates a model for reranking.
83
- */
84
- rerankingModel(modelId: TogetherAIRerankingModelId): RerankingModelV4;
49
+ /**
50
+ * Creates a model for text generation.
51
+ */
52
+ (modelId: TogetherAIChatModelId): LanguageModelV4;
53
+ /**
54
+ * Creates a chat model for text generation.
55
+ */
56
+ chatModel(modelId: TogetherAIChatModelId): LanguageModelV4;
57
+ /**
58
+ * Creates a chat model for text generation.
59
+ */
60
+ languageModel(modelId: TogetherAIChatModelId): LanguageModelV4;
61
+ /**
62
+ * Creates a completion model for text generation.
63
+ */
64
+ completionModel(modelId: TogetherAICompletionModelId): LanguageModelV4;
65
+ /**
66
+ * Creates a text embedding model for text generation.
67
+ */
68
+ embeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV4;
69
+ /**
70
+ * @deprecated Use `embeddingModel` instead.
71
+ */
72
+ textEmbeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV4;
73
+ /**
74
+ * Creates a model for image generation.
75
+ */
76
+ image(modelId: TogetherAIImageModelId): ImageModelV4;
77
+ /**
78
+ * Creates a model for image generation.
79
+ */
80
+ imageModel(modelId: TogetherAIImageModelId): ImageModelV4;
81
+ /**
82
+ * Creates a model for reranking.
83
+ */
84
+ reranking(modelId: TogetherAIRerankingModelId): RerankingModelV4;
85
+ /**
86
+ * Creates a model for reranking.
87
+ */
88
+ rerankingModel(modelId: TogetherAIRerankingModelId): RerankingModelV4;
85
89
  }
86
- declare function createTogetherAI(options?: TogetherAIProviderSettings): TogetherAIProvider;
87
- declare const togetherai: TogetherAIProvider;
88
-
90
+ export declare function createTogetherAI(options?: TogetherAIProviderSettings): TogetherAIProvider;
91
+ export declare const togetherai: TogetherAIProvider;
92
+ //#endregion
93
+ //#region src/togetherai-image-model-options.d.ts
89
94
  /**
90
95
  * Provider options schema for Together AI image generation.
91
96
  */
92
- declare const togetheraiImageModelOptionsSchema: _ai_sdk_provider_utils.LazySchema<{
93
- [x: string]: unknown;
94
- steps?: number | null | undefined;
95
- guidance?: number | null | undefined;
96
- negative_prompt?: string | null | undefined;
97
- disable_safety_checker?: boolean | null | undefined;
97
+ declare const togetheraiImageModelOptionsSchema: import("@ai-sdk/provider-utils").LazySchema<{
98
+ [x: string]: unknown;
99
+ steps?: number | null | undefined;
100
+ guidance?: number | null | undefined;
101
+ negative_prompt?: string | null | undefined;
102
+ disable_safety_checker?: boolean | null | undefined;
98
103
  }>;
99
104
  type TogetherAIImageModelOptions = InferSchema<typeof togetheraiImageModelOptionsSchema>;
100
-
101
- declare const VERSION: string;
102
-
103
- export { type TogetherAIImageModelOptions, type TogetherAIImageModelOptions as TogetherAIImageProviderOptions, type TogetherAIProvider, type TogetherAIProviderSettings, type TogetherAIRerankingModelOptions, type TogetherAIRerankingModelOptions as TogetherAIRerankingOptions, VERSION, createTogetherAI, togetherai };
105
+ //#endregion
106
+ //#region src/version.d.ts
107
+ export declare const VERSION: string;
108
+ //#endregion
109
+ export type { TogetherAIErrorData, TogetherAIImageModelOptions, TogetherAIImageModelOptions as TogetherAIImageProviderOptions, TogetherAIProvider, TogetherAIProviderSettings, TogetherAIRerankingModelOptions, TogetherAIRerankingModelOptions as TogetherAIRerankingOptions };
110
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/reranking/togetherai-reranking-model-options.ts","../src/togetherai-chat-options.ts","../src/togetherai-completion-options.ts","../src/togetherai-embedding-options.ts","../src/togetherai-image-settings.ts","../src/togetherai-provider.ts","../src/togetherai-image-model-options.ts","../src/version.ts"],"mappings":";;;;KAQY;KAKA;;;;;;;EAOV;;;;KCnBU;;;KCAA;;;KCAA;;;KCAA;;;UC0BK;;;;EAIf;;;;EAIA;;;;EAIA,UAAU;;;;;EAKV,QAAQ;;UAGO,2BAA2B;;;;GAIzC,SAAS,wBAAwB;;;;EAKlC,UAAU,SAAS,wBAAwB;;;;EAK3C,cAAc,SAAS,wBAAwB;;;;EAK/C,gBAAgB,SAAS,8BAA8B;;;;EAKvD,eAAe,SAAS,6BAA6B;;;;EAKrD,mBAAmB,SAAS,6BAA6B;;;;EAKzD,MAAM,SAAS,yBAAyB;;;;EAKxC,WAAW,SAAS,yBAAyB;;;;EAK7C,UAAU,SAAS,6BAA6B;;;;EAKhD,eAAe,SAAS,6BAA6B;;wBA0BvC,iBACd,UAAS,6BACR;qBA+EU,YAAU;;;;;;cCjMV,oEAAiC;;;;;;;KA4BlC,8BAA8B,mBACjC;;;qBCrCI"}
package/dist/index.js CHANGED
@@ -1,420 +1,286 @@
1
- // src/togetherai-provider.ts
2
- import {
3
- OpenAICompatibleChatLanguageModel,
4
- OpenAICompatibleCompletionLanguageModel,
5
- OpenAICompatibleEmbeddingModel
6
- } from "@ai-sdk/openai-compatible";
7
- import {
8
- loadApiKey,
9
- withoutTrailingSlash,
10
- withUserAgentSuffix
11
- } from "@ai-sdk/provider-utils";
12
-
13
- // src/reranking/togetherai-reranking-model.ts
14
- import {
15
- combineHeaders,
16
- createJsonErrorResponseHandler,
17
- createJsonResponseHandler,
18
- parseProviderOptions,
19
- postJsonToApi
20
- } from "@ai-sdk/provider-utils";
21
-
22
- // src/reranking/togetherai-reranking-api.ts
23
- import { lazySchema, zodSchema } from "@ai-sdk/provider-utils";
1
+ import { OpenAICompatibleChatLanguageModel, OpenAICompatibleCompletionLanguageModel, OpenAICompatibleEmbeddingModel } from "@ai-sdk/openai-compatible";
2
+ import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, convertImageModelFileToDataUri, createJsonErrorResponseHandler, createJsonResponseHandler, lazySchema, loadApiKey, parseProviderOptions, postJsonToApi, serializeModelOptions, withUserAgentSuffix, withoutTrailingSlash, zodSchema } from "@ai-sdk/provider-utils";
24
3
  import { z } from "zod/v4";
25
- var togetheraiErrorSchema = lazySchema(
26
- () => zodSchema(
27
- z.object({
28
- error: z.object({
29
- message: z.string()
30
- })
31
- })
32
- )
33
- );
34
- var togetheraiRerankingResponseSchema = lazySchema(
35
- () => zodSchema(
36
- z.object({
37
- id: z.string().nullish(),
38
- model: z.string().nullish(),
39
- results: z.array(
40
- z.object({
41
- index: z.number(),
42
- relevance_score: z.number()
43
- })
44
- ),
45
- usage: z.object({
46
- prompt_tokens: z.number(),
47
- completion_tokens: z.number(),
48
- total_tokens: z.number()
49
- })
50
- })
51
- )
52
- );
53
-
54
- // src/reranking/togetherai-reranking-model-options.ts
55
- import {
56
- lazySchema as lazySchema2,
57
- zodSchema as zodSchema2
58
- } from "@ai-sdk/provider-utils";
59
- import { z as z2 } from "zod/v4";
60
- var togetheraiRerankingModelOptionsSchema = lazySchema2(
61
- () => zodSchema2(
62
- z2.object({
63
- rankFields: z2.array(z2.string()).optional()
64
- })
65
- )
66
- );
67
-
68
- // src/reranking/togetherai-reranking-model.ts
4
+ //#region src/reranking/togetherai-reranking-api.ts
5
+ const togetheraiErrorSchema$1 = lazySchema(() => zodSchema(z.object({ error: z.object({ message: z.string() }) })));
6
+ const togetheraiRerankingResponseSchema = lazySchema(() => zodSchema(z.object({
7
+ id: z.string().nullish(),
8
+ model: z.string().nullish(),
9
+ results: z.array(z.object({
10
+ index: z.number(),
11
+ relevance_score: z.number()
12
+ })),
13
+ usage: z.object({
14
+ prompt_tokens: z.number(),
15
+ completion_tokens: z.number(),
16
+ total_tokens: z.number()
17
+ })
18
+ })));
19
+ //#endregion
20
+ //#region src/reranking/togetherai-reranking-model-options.ts
21
+ const togetheraiRerankingModelOptionsSchema = lazySchema(() => zodSchema(z.object({ rankFields: z.array(z.string()).optional() })));
22
+ //#endregion
23
+ //#region src/reranking/togetherai-reranking-model.ts
69
24
  var TogetherAIRerankingModel = class {
70
- constructor(modelId, config) {
71
- this.specificationVersion = "v4";
72
- this.modelId = modelId;
73
- this.config = config;
74
- }
75
- get provider() {
76
- return this.config.provider;
77
- }
78
- // see https://docs.together.ai/reference/rerank-1
79
- async doRerank({
80
- documents,
81
- headers,
82
- query,
83
- topN,
84
- abortSignal,
85
- providerOptions
86
- }) {
87
- const rerankingOptions = await parseProviderOptions({
88
- provider: "togetherai",
89
- providerOptions,
90
- schema: togetheraiRerankingModelOptionsSchema
91
- });
92
- const {
93
- responseHeaders,
94
- value: response,
95
- rawValue
96
- } = await postJsonToApi({
97
- url: `${this.config.baseURL}/rerank`,
98
- headers: combineHeaders(this.config.headers(), headers),
99
- body: {
100
- model: this.modelId,
101
- documents: documents.values,
102
- query,
103
- top_n: topN,
104
- rank_fields: rerankingOptions?.rankFields,
105
- return_documents: false
106
- // reduce response size
107
- },
108
- failedResponseHandler: createJsonErrorResponseHandler({
109
- errorSchema: togetheraiErrorSchema,
110
- errorToMessage: (data) => data.error.message
111
- }),
112
- successfulResponseHandler: createJsonResponseHandler(
113
- togetheraiRerankingResponseSchema
114
- ),
115
- abortSignal,
116
- fetch: this.config.fetch
117
- });
118
- return {
119
- ranking: response.results.map((result) => ({
120
- index: result.index,
121
- relevanceScore: result.relevance_score
122
- })),
123
- response: {
124
- id: response.id ?? void 0,
125
- modelId: response.model ?? void 0,
126
- headers: responseHeaders,
127
- body: rawValue
128
- }
129
- };
130
- }
25
+ constructor(modelId, config) {
26
+ this.specificationVersion = "v4";
27
+ this.modelId = modelId;
28
+ this.config = config;
29
+ }
30
+ get provider() {
31
+ return this.config.provider;
32
+ }
33
+ async doRerank({ documents, headers, query, topN, abortSignal, providerOptions }) {
34
+ const rerankingOptions = await parseProviderOptions({
35
+ provider: "togetherai",
36
+ providerOptions,
37
+ schema: togetheraiRerankingModelOptionsSchema
38
+ });
39
+ const { responseHeaders, value: response, rawValue } = await postJsonToApi({
40
+ url: `${this.config.baseURL}/rerank`,
41
+ headers: combineHeaders(this.config.headers(), headers),
42
+ body: {
43
+ model: this.modelId,
44
+ documents: documents.values,
45
+ query,
46
+ top_n: topN,
47
+ rank_fields: rerankingOptions?.rankFields,
48
+ return_documents: false
49
+ },
50
+ failedResponseHandler: createJsonErrorResponseHandler({
51
+ errorSchema: togetheraiErrorSchema$1,
52
+ errorToMessage: (data) => data.error.message
53
+ }),
54
+ successfulResponseHandler: createJsonResponseHandler(togetheraiRerankingResponseSchema),
55
+ abortSignal,
56
+ fetch: this.config.fetch
57
+ });
58
+ return {
59
+ ranking: response.results.map((result) => ({
60
+ index: result.index,
61
+ relevanceScore: result.relevance_score
62
+ })),
63
+ response: {
64
+ id: response.id ?? void 0,
65
+ modelId: response.model ?? void 0,
66
+ headers: responseHeaders,
67
+ body: rawValue
68
+ }
69
+ };
70
+ }
131
71
  };
132
-
133
- // src/togetherai-image-model.ts
134
- import {
135
- combineHeaders as combineHeaders2,
136
- convertImageModelFileToDataUri,
137
- createJsonResponseHandler as createJsonResponseHandler2,
138
- createJsonErrorResponseHandler as createJsonErrorResponseHandler2,
139
- parseProviderOptions as parseProviderOptions2,
140
- postJsonToApi as postJsonToApi2,
141
- serializeModelOptions,
142
- WORKFLOW_SERIALIZE,
143
- WORKFLOW_DESERIALIZE
144
- } from "@ai-sdk/provider-utils";
145
-
146
- // src/togetherai-image-model-options.ts
147
- import {
148
- lazySchema as lazySchema3,
149
- zodSchema as zodSchema3
150
- } from "@ai-sdk/provider-utils";
151
- import { z as z3 } from "zod/v4";
152
- var togetheraiImageModelOptionsSchema = lazySchema3(
153
- () => zodSchema3(
154
- z3.looseObject({
155
- /**
156
- * Number of generation steps. Higher values can improve quality.
157
- */
158
- steps: z3.number().nullish(),
159
- /**
160
- * Guidance scale for image generation.
161
- */
162
- guidance: z3.number().nullish(),
163
- /**
164
- * Negative prompt to guide what to avoid.
165
- */
166
- negative_prompt: z3.string().nullish(),
167
- /**
168
- * Disable the safety checker for image generation.
169
- * When true, the API will not reject images flagged as potentially NSFW.
170
- * Not available for Flux Schnell Free and Flux Pro models.
171
- */
172
- disable_safety_checker: z3.boolean().nullish()
173
- })
174
- )
175
- );
176
-
177
- // src/togetherai-image-model.ts
178
- import { z as z4 } from "zod/v4";
179
- var nonDiffusionImageModels = /* @__PURE__ */ new Set(["google/gemini-3-pro-image"]);
180
- var TogetherAIImageModel = class _TogetherAIImageModel {
181
- constructor(modelId, config) {
182
- this.modelId = modelId;
183
- this.config = config;
184
- this.specificationVersion = "v4";
185
- this.maxImagesPerCall = 1;
186
- }
187
- get supportsFileInputs() {
188
- if ([
189
- "black-forest-labs/FLUX.1-kontext-pro",
190
- "black-forest-labs/FLUX.1-kontext-max",
191
- "black-forest-labs/FLUX.1-kontext-dev",
192
- "black-forest-labs/FLUX.1-canny",
193
- "black-forest-labs/FLUX.1-depth",
194
- "black-forest-labs/FLUX.1-redux",
195
- // These FLUX.2 models accept the single image_url sent by doGenerate.
196
- "black-forest-labs/FLUX.2-pro",
197
- "black-forest-labs/FLUX.2-flex"
198
- ].includes(this.modelId)) {
199
- return true;
200
- }
201
- return [
202
- "stabilityai/stable-diffusion-xl-base-1.0",
203
- "black-forest-labs/FLUX.1-dev",
204
- "black-forest-labs/FLUX.1-dev-lora",
205
- "black-forest-labs/FLUX.1-schnell",
206
- "black-forest-labs/FLUX.1.1-pro",
207
- "black-forest-labs/FLUX.1-pro",
208
- "black-forest-labs/FLUX.1-schnell-Free",
209
- // These models require reference_images, which doGenerate does not send.
210
- "black-forest-labs/FLUX.2-dev",
211
- "google/gemini-3-pro-image"
212
- ].includes(this.modelId) ? false : void 0;
213
- }
214
- get supportsMaskInputs() {
215
- return this.supportsFileInputs == null ? void 0 : false;
216
- }
217
- get provider() {
218
- return this.config.provider;
219
- }
220
- static [WORKFLOW_SERIALIZE](model) {
221
- return serializeModelOptions({
222
- modelId: model.modelId,
223
- config: model.config
224
- });
225
- }
226
- static [WORKFLOW_DESERIALIZE](options) {
227
- return new _TogetherAIImageModel(options.modelId, options.config);
228
- }
229
- async doGenerate({
230
- prompt,
231
- n,
232
- size,
233
- seed,
234
- providerOptions,
235
- headers,
236
- abortSignal,
237
- files,
238
- mask
239
- }) {
240
- const warnings = [];
241
- if (mask != null) {
242
- throw new Error(
243
- "Together AI does not support mask-based image editing. Use FLUX Kontext models (e.g., black-forest-labs/FLUX.1-kontext-pro) with a reference image and descriptive prompt instead."
244
- );
245
- }
246
- if (size != null) {
247
- warnings.push({
248
- type: "unsupported",
249
- feature: "aspectRatio",
250
- details: "This model does not support the `aspectRatio` option. Use `size` instead."
251
- });
252
- }
253
- const currentDate = this.config._internal?.currentDate?.() ?? /* @__PURE__ */ new Date();
254
- const togetheraiOptions = await parseProviderOptions2({
255
- provider: "togetherai",
256
- providerOptions,
257
- schema: togetheraiImageModelOptionsSchema
258
- });
259
- const isNonDiffusionModel = nonDiffusionImageModels.has(this.modelId);
260
- const modelOptions = { ...togetheraiOptions };
261
- if (isNonDiffusionModel) {
262
- delete modelOptions.steps;
263
- delete modelOptions.guidance;
264
- delete modelOptions.negative_prompt;
265
- delete modelOptions.disable_safety_checker;
266
- if (seed != null) {
267
- warnings.push({
268
- type: "unsupported",
269
- feature: "seed",
270
- details: `The ${this.modelId} model does not support the \`seed\` option.`
271
- });
272
- }
273
- }
274
- let imageUrl;
275
- if (files != null && files.length > 0) {
276
- imageUrl = convertImageModelFileToDataUri(files[0]);
277
- if (files.length > 1) {
278
- warnings.push({
279
- type: "other",
280
- message: "Together AI only supports a single input image. Additional images are ignored."
281
- });
282
- }
283
- }
284
- const splitSize = size?.split("x");
285
- const { value: response, responseHeaders } = await postJsonToApi2({
286
- url: `${this.config.baseURL}/images/generations`,
287
- headers: combineHeaders2(this.config.headers?.(), headers),
288
- body: {
289
- model: this.modelId,
290
- prompt,
291
- ...seed != null && !isNonDiffusionModel ? { seed } : {},
292
- ...n > 1 ? { n } : {},
293
- ...splitSize && {
294
- width: parseInt(splitSize[0]),
295
- height: parseInt(splitSize[1])
296
- },
297
- ...imageUrl != null ? { image_url: imageUrl } : {},
298
- response_format: "base64",
299
- ...modelOptions
300
- },
301
- failedResponseHandler: createJsonErrorResponseHandler2({
302
- errorSchema: togetheraiErrorSchema2,
303
- errorToMessage: (data) => data.error.message
304
- }),
305
- successfulResponseHandler: createJsonResponseHandler2(
306
- togetheraiImageResponseSchema
307
- ),
308
- abortSignal,
309
- fetch: this.config.fetch
310
- });
311
- return {
312
- images: response.data.map((item) => item.b64_json),
313
- warnings,
314
- response: {
315
- timestamp: currentDate,
316
- modelId: this.modelId,
317
- headers: responseHeaders
318
- }
319
- };
320
- }
72
+ //#endregion
73
+ //#region src/togetherai-image-model-options.ts
74
+ /**
75
+ * Provider options schema for Together AI image generation.
76
+ */
77
+ const togetheraiImageModelOptionsSchema = lazySchema(() => zodSchema(z.looseObject({
78
+ /**
79
+ * Number of generation steps. Higher values can improve quality.
80
+ */
81
+ steps: z.number().nullish(),
82
+ /**
83
+ * Guidance scale for image generation.
84
+ */
85
+ guidance: z.number().nullish(),
86
+ /**
87
+ * Negative prompt to guide what to avoid.
88
+ */
89
+ negative_prompt: z.string().nullish(),
90
+ /**
91
+ * Disable the safety checker for image generation.
92
+ * When true, the API will not reject images flagged as potentially NSFW.
93
+ * Not available for Flux Schnell Free and Flux Pro models.
94
+ */
95
+ disable_safety_checker: z.boolean().nullish()
96
+ })));
97
+ //#endregion
98
+ //#region src/togetherai-image-model.ts
99
+ const nonDiffusionImageModels = /* @__PURE__ */ new Set(["google/gemini-3-pro-image"]);
100
+ var TogetherAIImageModel = class TogetherAIImageModel {
101
+ get supportsFileInputs() {
102
+ if ([
103
+ "black-forest-labs/FLUX.1-kontext-pro",
104
+ "black-forest-labs/FLUX.1-kontext-max",
105
+ "black-forest-labs/FLUX.1-kontext-dev",
106
+ "black-forest-labs/FLUX.1-canny",
107
+ "black-forest-labs/FLUX.1-depth",
108
+ "black-forest-labs/FLUX.1-redux",
109
+ "black-forest-labs/FLUX.2-pro",
110
+ "black-forest-labs/FLUX.2-flex"
111
+ ].includes(this.modelId)) return true;
112
+ return [
113
+ "stabilityai/stable-diffusion-xl-base-1.0",
114
+ "black-forest-labs/FLUX.1-dev",
115
+ "black-forest-labs/FLUX.1-dev-lora",
116
+ "black-forest-labs/FLUX.1-schnell",
117
+ "black-forest-labs/FLUX.1.1-pro",
118
+ "black-forest-labs/FLUX.1-pro",
119
+ "black-forest-labs/FLUX.1-schnell-Free",
120
+ "black-forest-labs/FLUX.2-dev",
121
+ "google/gemini-3-pro-image"
122
+ ].includes(this.modelId) ? false : void 0;
123
+ }
124
+ get supportsMaskInputs() {
125
+ return this.supportsFileInputs == null ? void 0 : false;
126
+ }
127
+ get provider() {
128
+ return this.config.provider;
129
+ }
130
+ static [WORKFLOW_SERIALIZE](model) {
131
+ return serializeModelOptions({
132
+ modelId: model.modelId,
133
+ config: model.config
134
+ });
135
+ }
136
+ static [WORKFLOW_DESERIALIZE](options) {
137
+ return new TogetherAIImageModel(options.modelId, options.config);
138
+ }
139
+ constructor(modelId, config) {
140
+ this.modelId = modelId;
141
+ this.config = config;
142
+ this.specificationVersion = "v4";
143
+ this.maxImagesPerCall = 1;
144
+ }
145
+ async doGenerate({ prompt, n, size, seed, providerOptions, headers, abortSignal, files, mask }) {
146
+ const warnings = [];
147
+ if (mask != null) throw new Error("Together AI does not support mask-based image editing. Use FLUX Kontext models (e.g., black-forest-labs/FLUX.1-kontext-pro) with a reference image and descriptive prompt instead.");
148
+ if (size != null) warnings.push({
149
+ type: "unsupported",
150
+ feature: "aspectRatio",
151
+ details: "This model does not support the `aspectRatio` option. Use `size` instead."
152
+ });
153
+ const currentDate = this.config._internal?.currentDate?.() ?? /* @__PURE__ */ new Date();
154
+ const togetheraiOptions = await parseProviderOptions({
155
+ provider: "togetherai",
156
+ providerOptions,
157
+ schema: togetheraiImageModelOptionsSchema
158
+ });
159
+ const isNonDiffusionModel = nonDiffusionImageModels.has(this.modelId);
160
+ const modelOptions = { ...togetheraiOptions };
161
+ if (isNonDiffusionModel) {
162
+ delete modelOptions.steps;
163
+ delete modelOptions.guidance;
164
+ delete modelOptions.negative_prompt;
165
+ delete modelOptions.disable_safety_checker;
166
+ if (seed != null) warnings.push({
167
+ type: "unsupported",
168
+ feature: "seed",
169
+ details: `The ${this.modelId} model does not support the \`seed\` option.`
170
+ });
171
+ }
172
+ let imageUrl;
173
+ if (files != null && files.length > 0) {
174
+ imageUrl = convertImageModelFileToDataUri(files[0]);
175
+ if (files.length > 1) warnings.push({
176
+ type: "other",
177
+ message: "Together AI only supports a single input image. Additional images are ignored."
178
+ });
179
+ }
180
+ const splitSize = size?.split("x");
181
+ const { value: response, responseHeaders } = await postJsonToApi({
182
+ url: `${this.config.baseURL}/images/generations`,
183
+ headers: combineHeaders(this.config.headers?.(), headers),
184
+ body: {
185
+ model: this.modelId,
186
+ prompt,
187
+ ...seed != null && !isNonDiffusionModel ? { seed } : {},
188
+ ...n > 1 ? { n } : {},
189
+ ...splitSize && {
190
+ width: parseInt(splitSize[0]),
191
+ height: parseInt(splitSize[1])
192
+ },
193
+ ...imageUrl != null ? { image_url: imageUrl } : {},
194
+ response_format: "base64",
195
+ ...modelOptions
196
+ },
197
+ failedResponseHandler: createJsonErrorResponseHandler({
198
+ errorSchema: togetheraiErrorSchema,
199
+ errorToMessage: (data) => data.error.message
200
+ }),
201
+ successfulResponseHandler: createJsonResponseHandler(togetheraiImageResponseSchema),
202
+ abortSignal,
203
+ fetch: this.config.fetch
204
+ });
205
+ return {
206
+ images: response.data.map((item) => item.b64_json),
207
+ warnings,
208
+ response: {
209
+ timestamp: currentDate,
210
+ modelId: this.modelId,
211
+ headers: responseHeaders
212
+ }
213
+ };
214
+ }
321
215
  };
322
- var togetheraiImageResponseSchema = z4.object({
323
- data: z4.array(
324
- z4.object({
325
- b64_json: z4.string()
326
- })
327
- )
328
- });
329
- var togetheraiErrorSchema2 = z4.object({
330
- error: z4.object({
331
- message: z4.string()
332
- })
333
- });
334
-
335
- // src/version.ts
336
- var VERSION = true ? "3.0.59" : "0.0.0-test";
337
-
338
- // src/togetherai-provider.ts
216
+ const togetheraiImageResponseSchema = z.object({ data: z.array(z.object({ b64_json: z.string() })) });
217
+ const togetheraiErrorSchema = z.object({ error: z.object({ message: z.string() }) });
218
+ //#endregion
219
+ //#region src/version.ts
220
+ const VERSION = "3.0.61";
221
+ //#endregion
222
+ //#region src/togetherai-provider.ts
339
223
  function loadDeprecatedApiKey() {
340
- if (typeof process === "undefined") {
341
- return void 0;
342
- }
343
- if (typeof process.env.TOGETHER_API_KEY === "string") {
344
- return void 0;
345
- }
346
- const key = process.env.TOGETHER_AI_API_KEY;
347
- if (typeof key === "string") {
348
- console.warn(
349
- "TOGETHER_AI_API_KEY is deprecated and will be removed in a future release. Please use TOGETHER_API_KEY instead."
350
- );
351
- }
352
- return key;
224
+ if (typeof process === "undefined") return;
225
+ if (typeof process.env.TOGETHER_API_KEY === "string") return;
226
+ const key = process.env.TOGETHER_AI_API_KEY;
227
+ if (typeof key === "string") console.warn("TOGETHER_AI_API_KEY is deprecated and will be removed in a future release. Please use TOGETHER_API_KEY instead.");
228
+ return key;
353
229
  }
354
230
  function getModelStructuredOutputSupport(modelId) {
355
- return modelId === "deepseek-ai/DeepSeek-V4-Flash-0731";
231
+ return modelId === "deepseek-ai/DeepSeek-V4-Flash-0731";
356
232
  }
357
233
  function createTogetherAI(options = {}) {
358
- const baseURL = withoutTrailingSlash(
359
- options.baseURL ?? "https://api.together.xyz/v1/"
360
- );
361
- const getHeaders = () => withUserAgentSuffix(
362
- {
363
- Authorization: `Bearer ${loadApiKey({
364
- apiKey: options.apiKey ?? loadDeprecatedApiKey(),
365
- environmentVariableName: "TOGETHER_API_KEY",
366
- description: "TogetherAI"
367
- })}`,
368
- ...options.headers
369
- },
370
- `ai-sdk/togetherai/${VERSION}`
371
- );
372
- const getCommonModelConfig = (modelType) => ({
373
- provider: `togetherai.${modelType}`,
374
- url: ({ path }) => `${baseURL}${path}`,
375
- headers: getHeaders,
376
- fetch: options.fetch
377
- });
378
- const createChatModel = (modelId) => {
379
- return new OpenAICompatibleChatLanguageModel(modelId, {
380
- ...getCommonModelConfig("chat"),
381
- includeUsage: true,
382
- supportsStructuredOutputs: getModelStructuredOutputSupport(modelId)
383
- });
384
- };
385
- const createCompletionModel = (modelId) => new OpenAICompatibleCompletionLanguageModel(modelId, {
386
- ...getCommonModelConfig("completion"),
387
- includeUsage: true
388
- });
389
- const createEmbeddingModel = (modelId) => new OpenAICompatibleEmbeddingModel(
390
- modelId,
391
- getCommonModelConfig("embedding")
392
- );
393
- const createImageModel = (modelId) => new TogetherAIImageModel(modelId, {
394
- ...getCommonModelConfig("image"),
395
- baseURL: baseURL ?? "https://api.together.xyz/v1/"
396
- });
397
- const createRerankingModel = (modelId) => new TogetherAIRerankingModel(modelId, {
398
- ...getCommonModelConfig("reranking"),
399
- baseURL: baseURL ?? "https://api.together.xyz/v1/"
400
- });
401
- const provider = (modelId) => createChatModel(modelId);
402
- provider.specificationVersion = "v4";
403
- provider.completionModel = createCompletionModel;
404
- provider.languageModel = createChatModel;
405
- provider.chatModel = createChatModel;
406
- provider.embeddingModel = createEmbeddingModel;
407
- provider.textEmbeddingModel = createEmbeddingModel;
408
- provider.image = createImageModel;
409
- provider.imageModel = createImageModel;
410
- provider.reranking = createRerankingModel;
411
- provider.rerankingModel = createRerankingModel;
412
- return provider;
234
+ const baseURL = withoutTrailingSlash(options.baseURL ?? "https://api.together.xyz/v1/");
235
+ const getHeaders = () => withUserAgentSuffix({
236
+ Authorization: `Bearer ${loadApiKey({
237
+ apiKey: options.apiKey ?? loadDeprecatedApiKey(),
238
+ environmentVariableName: "TOGETHER_API_KEY",
239
+ description: "TogetherAI"
240
+ })}`,
241
+ ...options.headers
242
+ }, `ai-sdk-togetherai/${VERSION}`);
243
+ const getCommonModelConfig = (modelType) => ({
244
+ provider: `togetherai.${modelType}`,
245
+ url: ({ path }) => `${baseURL}${path}`,
246
+ headers: getHeaders,
247
+ fetch: options.fetch
248
+ });
249
+ const createChatModel = (modelId) => {
250
+ return new OpenAICompatibleChatLanguageModel(modelId, {
251
+ ...getCommonModelConfig("chat"),
252
+ includeUsage: true,
253
+ supportsStructuredOutputs: getModelStructuredOutputSupport(modelId)
254
+ });
255
+ };
256
+ const createCompletionModel = (modelId) => new OpenAICompatibleCompletionLanguageModel(modelId, {
257
+ ...getCommonModelConfig("completion"),
258
+ includeUsage: true
259
+ });
260
+ const createEmbeddingModel = (modelId) => new OpenAICompatibleEmbeddingModel(modelId, getCommonModelConfig("embedding"));
261
+ const createImageModel = (modelId) => new TogetherAIImageModel(modelId, {
262
+ ...getCommonModelConfig("image"),
263
+ baseURL: baseURL ?? "https://api.together.xyz/v1/"
264
+ });
265
+ const createRerankingModel = (modelId) => new TogetherAIRerankingModel(modelId, {
266
+ ...getCommonModelConfig("reranking"),
267
+ baseURL: baseURL ?? "https://api.together.xyz/v1/"
268
+ });
269
+ const provider = (modelId) => createChatModel(modelId);
270
+ provider.specificationVersion = "v4";
271
+ provider.completionModel = createCompletionModel;
272
+ provider.languageModel = createChatModel;
273
+ provider.chatModel = createChatModel;
274
+ provider.embeddingModel = createEmbeddingModel;
275
+ provider.textEmbeddingModel = createEmbeddingModel;
276
+ provider.image = createImageModel;
277
+ provider.imageModel = createImageModel;
278
+ provider.reranking = createRerankingModel;
279
+ provider.rerankingModel = createRerankingModel;
280
+ return provider;
413
281
  }
414
- var togetherai = createTogetherAI();
415
- export {
416
- VERSION,
417
- createTogetherAI,
418
- togetherai
419
- };
282
+ const togetherai = createTogetherAI();
283
+ //#endregion
284
+ export { VERSION, createTogetherAI, togetherai };
285
+
420
286
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/togetherai-provider.ts","../src/reranking/togetherai-reranking-model.ts","../src/reranking/togetherai-reranking-api.ts","../src/reranking/togetherai-reranking-model-options.ts","../src/togetherai-image-model.ts","../src/togetherai-image-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport type {\n EmbeddingModelV4,\n ImageModelV4,\n LanguageModelV4,\n ProviderV4,\n RerankingModelV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIRerankingModel } from './reranking/togetherai-reranking-model';\nimport type { TogetherAIRerankingModelId } from './reranking/togetherai-reranking-model-options';\nimport type { TogetherAIChatModelId } from './togetherai-chat-options';\nimport type { TogetherAICompletionModelId } from './togetherai-completion-options';\nimport type { TogetherAIEmbeddingModelId } from './togetherai-embedding-options';\nimport { TogetherAIImageModel } from './togetherai-image-model';\nimport type { TogetherAIImageModelId } from './togetherai-image-settings';\nimport { VERSION } from './version';\n\nexport interface TogetherAIProviderSettings {\n /**\n * TogetherAI API key.\n */\n apiKey?: string;\n /**\n * Base URL for the API calls.\n */\n baseURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface TogetherAIProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: TogetherAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: TogetherAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n languageModel(modelId: TogetherAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a completion model for text generation.\n */\n completionModel(modelId: TogetherAICompletionModelId): LanguageModelV4;\n\n /**\n * Creates a text embedding model for text generation.\n */\n embeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: TogetherAIImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: TogetherAIImageModelId): ImageModelV4;\n\n /**\n * Creates a model for reranking.\n */\n reranking(modelId: TogetherAIRerankingModelId): RerankingModelV4;\n\n /**\n * Creates a model for reranking.\n */\n rerankingModel(modelId: TogetherAIRerankingModelId): RerankingModelV4;\n}\n\nfunction loadDeprecatedApiKey(): string | undefined {\n if (typeof process === 'undefined') {\n return undefined;\n }\n // If the new env var is set, let loadApiKey handle it\n if (typeof process.env.TOGETHER_API_KEY === 'string') {\n return undefined;\n }\n const key = process.env.TOGETHER_AI_API_KEY;\n if (typeof key === 'string') {\n console.warn(\n 'TOGETHER_AI_API_KEY is deprecated and will be removed in a future release. Please use TOGETHER_API_KEY instead.',\n );\n }\n return key;\n}\n\nexport function getModelStructuredOutputSupport(\n modelId: TogetherAIChatModelId,\n): boolean {\n return modelId === 'deepseek-ai/DeepSeek-V4-Flash-0731';\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 withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey ?? loadDeprecatedApiKey(),\n environmentVariableName: 'TOGETHER_API_KEY',\n description: 'TogetherAI',\n })}`,\n ...options.headers,\n },\n `ai-sdk/togetherai/${VERSION}`,\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 includeUsage: true,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const createCompletionModel = (modelId: TogetherAICompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(modelId, {\n ...getCommonModelConfig('completion'),\n includeUsage: true,\n });\n\n const createEmbeddingModel = (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 createRerankingModel = (modelId: TogetherAIRerankingModelId) =>\n new TogetherAIRerankingModel(modelId, {\n ...getCommonModelConfig('reranking'),\n baseURL: baseURL ?? 'https://api.together.xyz/v1/',\n });\n\n const provider = (modelId: TogetherAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n\n return provider;\n}\n\nexport const togetherai = createTogetherAI();\n","import type { RerankingModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport {\n togetheraiErrorSchema,\n togetheraiRerankingResponseSchema,\n type TogetherAIRerankingInput,\n} from './togetherai-reranking-api';\nimport {\n togetheraiRerankingModelOptionsSchema,\n type TogetherAIRerankingModelId,\n} from './togetherai-reranking-model-options';\ntype TogetherAIRerankingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class TogetherAIRerankingModel implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\n readonly modelId: TogetherAIRerankingModelId;\n\n private readonly config: TogetherAIRerankingConfig;\n\n constructor(\n modelId: TogetherAIRerankingModelId,\n config: TogetherAIRerankingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n // see https://docs.together.ai/reference/rerank-1\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV4['doRerank']>[0]): Promise<\n Awaited<ReturnType<RerankingModelV4['doRerank']>>\n > {\n const rerankingOptions = await parseProviderOptions({\n provider: 'togetherai',\n providerOptions,\n schema: togetheraiRerankingModelOptionsSchema,\n });\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n documents: documents.values,\n query,\n top_n: topN,\n rank_fields: rerankingOptions?.rankFields,\n return_documents: false, // reduce response size\n } satisfies TogetherAIRerankingInput,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: data => data.error.message,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiRerankingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n ranking: response.results.map(result => ({\n index: result.index,\n relevanceScore: result.relevance_score,\n })),\n response: {\n id: response.id ?? undefined,\n modelId: response.model ?? undefined,\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n","import type { JSONObject } from '@ai-sdk/provider';\nimport { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.together.ai/reference/rerank-1\nexport type TogetherAIRerankingInput = {\n model: string;\n query: string;\n documents: JSONObject[] | string[];\n top_n: number | undefined;\n return_documents: boolean | undefined;\n rank_fields: string[] | undefined;\n};\n\nexport const togetheraiErrorSchema = lazySchema(() =>\n zodSchema(\n z.object({\n error: z.object({\n message: z.string(),\n }),\n }),\n ),\n);\n\nexport const togetheraiRerankingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n model: z.string().nullish(),\n results: z.array(\n z.object({\n index: z.number(),\n relevance_score: z.number(),\n }),\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n }),\n }),\n ),\n);\n","import {\n lazySchema,\n zodSchema,\n type FlexibleSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// see https://docs.together.ai/docs/serverless-models#rerank-models\nexport type TogetherAIRerankingModelId =\n | 'Salesforce/Llama-Rank-v1'\n | 'mixedbread-ai/Mxbai-Rerank-Large-V2'\n | (string & {});\n\nexport type TogetherAIRerankingModelOptions = {\n /**\n * List of keys in the JSON Object document to rank by.\n * Defaults to use all supplied keys for ranking.\n *\n * @example [\"title\", \"text\"]\n */\n rankFields?: string[];\n};\n\nexport const togetheraiRerankingModelOptionsSchema: FlexibleSchema<TogetherAIRerankingModelOptions> =\n lazySchema(() =>\n zodSchema(\n z.object({\n rankFields: z.array(z.string()).optional(),\n }),\n ),\n );\n","import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { togetheraiImageModelOptionsSchema } from './togetherai-image-model-options';\nimport type { 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\nconst nonDiffusionImageModels = new Set<string>(['google/gemini-3-pro-image']);\n\nexport class TogetherAIImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 1;\n\n get supportsFileInputs(): boolean | undefined {\n if (\n [\n 'black-forest-labs/FLUX.1-kontext-pro',\n 'black-forest-labs/FLUX.1-kontext-max',\n 'black-forest-labs/FLUX.1-kontext-dev',\n 'black-forest-labs/FLUX.1-canny',\n 'black-forest-labs/FLUX.1-depth',\n 'black-forest-labs/FLUX.1-redux',\n // These FLUX.2 models accept the single image_url sent by doGenerate.\n 'black-forest-labs/FLUX.2-pro',\n 'black-forest-labs/FLUX.2-flex',\n ].includes(this.modelId)\n ) {\n return true;\n }\n\n return [\n 'stabilityai/stable-diffusion-xl-base-1.0',\n 'black-forest-labs/FLUX.1-dev',\n 'black-forest-labs/FLUX.1-dev-lora',\n 'black-forest-labs/FLUX.1-schnell',\n 'black-forest-labs/FLUX.1.1-pro',\n 'black-forest-labs/FLUX.1-pro',\n 'black-forest-labs/FLUX.1-schnell-Free',\n // These models require reference_images, which doGenerate does not send.\n 'black-forest-labs/FLUX.2-dev',\n 'google/gemini-3-pro-image',\n ].includes(this.modelId)\n ? false\n : undefined;\n }\n\n get supportsMaskInputs(): boolean | undefined {\n return this.supportsFileInputs == null ? undefined : false;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: TogetherAIImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: TogetherAIImageModelId;\n config: TogetherAIImageModelConfig;\n }) {\n return new TogetherAIImageModel(options.modelId, options.config);\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 files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n if (mask != null) {\n throw new Error(\n 'Together AI does not support mask-based image editing. ' +\n 'Use FLUX Kontext models (e.g., black-forest-labs/FLUX.1-kontext-pro) ' +\n 'with a reference image and descriptive prompt instead.',\n );\n }\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: '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\n const togetheraiOptions = await parseProviderOptions({\n provider: 'togetherai',\n providerOptions,\n schema: togetheraiImageModelOptionsSchema,\n });\n\n const isNonDiffusionModel = nonDiffusionImageModels.has(this.modelId);\n\n const modelOptions = { ...togetheraiOptions };\n if (isNonDiffusionModel) {\n delete modelOptions.steps;\n delete modelOptions.guidance;\n delete modelOptions.negative_prompt;\n delete modelOptions.disable_safety_checker;\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n details: `The ${this.modelId} model does not support the \\`seed\\` option.`,\n });\n }\n }\n\n // Handle image input from files\n let imageUrl: string | undefined;\n if (files != null && files.length > 0) {\n imageUrl = convertImageModelFileToDataUri(files[0]);\n\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'Together AI only supports a single input image. Additional images are ignored.',\n });\n }\n }\n\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 != null && !isNonDiffusionModel ? { seed } : {}),\n ...(n > 1 ? { n } : {}),\n ...(splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1]),\n }),\n ...(imageUrl != null ? { image_url: imageUrl } : {}),\n response_format: 'base64',\n ...modelOptions,\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","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Provider options schema for Together AI image generation.\n */\nexport const togetheraiImageModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.looseObject({\n /**\n * Number of generation steps. Higher values can improve quality.\n */\n steps: z.number().nullish(),\n\n /**\n * Guidance scale for image generation.\n */\n guidance: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Disable the safety checker for image generation.\n * When true, the API will not reject images flagged as potentially NSFW.\n * Not available for Flux Schnell Free and Flux Pro models.\n */\n disable_safety_checker: z.boolean().nullish(),\n }),\n ),\n);\n\nexport type TogetherAIImageModelOptions = InferSchema<\n typeof togetheraiImageModelOptionsSchema\n>;\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["lazySchema","zodSchema","z","combineHeaders","createJsonResponseHandler","createJsonErrorResponseHandler","parseProviderOptions","postJsonToApi","lazySchema","zodSchema","z","z","parseProviderOptions","postJsonToApi","combineHeaders","createJsonErrorResponseHandler","togetheraiErrorSchema","createJsonResponseHandler"]}
1
+ {"version":3,"file":"index.js","names":["togetheraiErrorSchema","togetheraiErrorSchema"],"sources":["../src/reranking/togetherai-reranking-api.ts","../src/reranking/togetherai-reranking-model-options.ts","../src/reranking/togetherai-reranking-model.ts","../src/togetherai-image-model-options.ts","../src/togetherai-image-model.ts","../src/version.ts","../src/togetherai-provider.ts"],"sourcesContent":["import type { JSONObject } from '@ai-sdk/provider';\nimport { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://docs.together.ai/reference/rerank-1\nexport type TogetherAIRerankingInput = {\n model: string;\n query: string;\n documents: JSONObject[] | string[];\n top_n: number | undefined;\n return_documents: boolean | undefined;\n rank_fields: string[] | undefined;\n};\n\nexport const togetheraiErrorSchema = lazySchema(() =>\n zodSchema(\n z.object({\n error: z.object({\n message: z.string(),\n }),\n }),\n ),\n);\n\nexport const togetheraiRerankingResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n model: z.string().nullish(),\n results: z.array(\n z.object({\n index: z.number(),\n relevance_score: z.number(),\n }),\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n }),\n }),\n ),\n);\n","import {\n lazySchema,\n zodSchema,\n type FlexibleSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// see https://docs.together.ai/docs/serverless-models#rerank-models\nexport type TogetherAIRerankingModelId =\n | 'Salesforce/Llama-Rank-v1'\n | 'mixedbread-ai/Mxbai-Rerank-Large-V2'\n | (string & {});\n\nexport type TogetherAIRerankingModelOptions = {\n /**\n * List of keys in the JSON Object document to rank by.\n * Defaults to use all supplied keys for ranking.\n *\n * @example [\"title\", \"text\"]\n */\n rankFields?: string[];\n};\n\nexport const togetheraiRerankingModelOptionsSchema: FlexibleSchema<TogetherAIRerankingModelOptions> =\n lazySchema(() =>\n zodSchema(\n z.object({\n rankFields: z.array(z.string()).optional(),\n }),\n ),\n );\n","import type { RerankingModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport {\n togetheraiErrorSchema,\n togetheraiRerankingResponseSchema,\n type TogetherAIRerankingInput,\n} from './togetherai-reranking-api';\nimport {\n togetheraiRerankingModelOptionsSchema,\n type TogetherAIRerankingModelId,\n} from './togetherai-reranking-model-options';\ntype TogetherAIRerankingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class TogetherAIRerankingModel implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\n readonly modelId: TogetherAIRerankingModelId;\n\n private readonly config: TogetherAIRerankingConfig;\n\n constructor(\n modelId: TogetherAIRerankingModelId,\n config: TogetherAIRerankingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n // see https://docs.together.ai/reference/rerank-1\n async doRerank({\n documents,\n headers,\n query,\n topN,\n abortSignal,\n providerOptions,\n }: Parameters<RerankingModelV4['doRerank']>[0]): Promise<\n Awaited<ReturnType<RerankingModelV4['doRerank']>>\n > {\n const rerankingOptions = await parseProviderOptions({\n provider: 'togetherai',\n providerOptions,\n schema: togetheraiRerankingModelOptionsSchema,\n });\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/rerank`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n documents: documents.values,\n query,\n top_n: topN,\n rank_fields: rerankingOptions?.rankFields,\n return_documents: false, // reduce response size\n } satisfies TogetherAIRerankingInput,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: data => data.error.message,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiRerankingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n ranking: response.results.map(result => ({\n index: result.index,\n relevanceScore: result.relevance_score,\n })),\n response: {\n id: response.id ?? undefined,\n modelId: response.model ?? undefined,\n headers: responseHeaders,\n body: rawValue,\n },\n };\n }\n}\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Provider options schema for Together AI image generation.\n */\nexport const togetheraiImageModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.looseObject({\n /**\n * Number of generation steps. Higher values can improve quality.\n */\n steps: z.number().nullish(),\n\n /**\n * Guidance scale for image generation.\n */\n guidance: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Disable the safety checker for image generation.\n * When true, the API will not reject images flagged as potentially NSFW.\n * Not available for Flux Schnell Free and Flux Pro models.\n */\n disable_safety_checker: z.boolean().nullish(),\n }),\n ),\n);\n\nexport type TogetherAIImageModelOptions = InferSchema<\n typeof togetheraiImageModelOptionsSchema\n>;\n","import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { togetheraiImageModelOptionsSchema } from './togetherai-image-model-options';\nimport type { 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\nconst nonDiffusionImageModels = new Set<string>(['google/gemini-3-pro-image']);\n\nexport class TogetherAIImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 1;\n\n get supportsFileInputs(): boolean | undefined {\n if (\n [\n 'black-forest-labs/FLUX.1-kontext-pro',\n 'black-forest-labs/FLUX.1-kontext-max',\n 'black-forest-labs/FLUX.1-kontext-dev',\n 'black-forest-labs/FLUX.1-canny',\n 'black-forest-labs/FLUX.1-depth',\n 'black-forest-labs/FLUX.1-redux',\n // These FLUX.2 models accept the single image_url sent by doGenerate.\n 'black-forest-labs/FLUX.2-pro',\n 'black-forest-labs/FLUX.2-flex',\n ].includes(this.modelId)\n ) {\n return true;\n }\n\n return [\n 'stabilityai/stable-diffusion-xl-base-1.0',\n 'black-forest-labs/FLUX.1-dev',\n 'black-forest-labs/FLUX.1-dev-lora',\n 'black-forest-labs/FLUX.1-schnell',\n 'black-forest-labs/FLUX.1.1-pro',\n 'black-forest-labs/FLUX.1-pro',\n 'black-forest-labs/FLUX.1-schnell-Free',\n // These models require reference_images, which doGenerate does not send.\n 'black-forest-labs/FLUX.2-dev',\n 'google/gemini-3-pro-image',\n ].includes(this.modelId)\n ? false\n : undefined;\n }\n\n get supportsMaskInputs(): boolean | undefined {\n return this.supportsFileInputs == null ? undefined : false;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: TogetherAIImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: TogetherAIImageModelId;\n config: TogetherAIImageModelConfig;\n }) {\n return new TogetherAIImageModel(options.modelId, options.config);\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 files,\n mask,\n }: Parameters<ImageModelV4['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV4['doGenerate']>>\n > {\n const warnings: Array<SharedV4Warning> = [];\n\n if (mask != null) {\n throw new Error(\n 'Together AI does not support mask-based image editing. ' +\n 'Use FLUX Kontext models (e.g., black-forest-labs/FLUX.1-kontext-pro) ' +\n 'with a reference image and descriptive prompt instead.',\n );\n }\n\n if (size != null) {\n warnings.push({\n type: 'unsupported',\n feature: '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\n const togetheraiOptions = await parseProviderOptions({\n provider: 'togetherai',\n providerOptions,\n schema: togetheraiImageModelOptionsSchema,\n });\n\n const isNonDiffusionModel = nonDiffusionImageModels.has(this.modelId);\n\n const modelOptions = { ...togetheraiOptions };\n if (isNonDiffusionModel) {\n delete modelOptions.steps;\n delete modelOptions.guidance;\n delete modelOptions.negative_prompt;\n delete modelOptions.disable_safety_checker;\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'seed',\n details: `The ${this.modelId} model does not support the \\`seed\\` option.`,\n });\n }\n }\n\n // Handle image input from files\n let imageUrl: string | undefined;\n if (files != null && files.length > 0) {\n imageUrl = convertImageModelFileToDataUri(files[0]);\n\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'Together AI only supports a single input image. Additional images are ignored.',\n });\n }\n }\n\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 != null && !isNonDiffusionModel ? { seed } : {}),\n ...(n > 1 ? { n } : {}),\n ...(splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1]),\n }),\n ...(imageUrl != null ? { image_url: imageUrl } : {}),\n response_format: 'base64',\n ...modelOptions,\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","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport type {\n EmbeddingModelV4,\n ImageModelV4,\n LanguageModelV4,\n ProviderV4,\n RerankingModelV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIRerankingModel } from './reranking/togetherai-reranking-model';\nimport type { TogetherAIRerankingModelId } from './reranking/togetherai-reranking-model-options';\nimport type { TogetherAIChatModelId } from './togetherai-chat-options';\nimport type { TogetherAICompletionModelId } from './togetherai-completion-options';\nimport type { TogetherAIEmbeddingModelId } from './togetherai-embedding-options';\nimport { TogetherAIImageModel } from './togetherai-image-model';\nimport type { TogetherAIImageModelId } from './togetherai-image-settings';\nimport { VERSION } from './version';\n\nexport interface TogetherAIProviderSettings {\n /**\n * TogetherAI API key.\n */\n apiKey?: string;\n /**\n * Base URL for the API calls.\n */\n baseURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface TogetherAIProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: TogetherAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: TogetherAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n languageModel(modelId: TogetherAIChatModelId): LanguageModelV4;\n\n /**\n * Creates a completion model for text generation.\n */\n completionModel(modelId: TogetherAICompletionModelId): LanguageModelV4;\n\n /**\n * Creates a text embedding model for text generation.\n */\n embeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: TogetherAIEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: TogetherAIImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: TogetherAIImageModelId): ImageModelV4;\n\n /**\n * Creates a model for reranking.\n */\n reranking(modelId: TogetherAIRerankingModelId): RerankingModelV4;\n\n /**\n * Creates a model for reranking.\n */\n rerankingModel(modelId: TogetherAIRerankingModelId): RerankingModelV4;\n}\n\nfunction loadDeprecatedApiKey(): string | undefined {\n if (typeof process === 'undefined') {\n return undefined;\n }\n // If the new env var is set, let loadApiKey handle it\n if (typeof process.env.TOGETHER_API_KEY === 'string') {\n return undefined;\n }\n const key = process.env.TOGETHER_AI_API_KEY;\n if (typeof key === 'string') {\n console.warn(\n 'TOGETHER_AI_API_KEY is deprecated and will be removed in a future release. Please use TOGETHER_API_KEY instead.',\n );\n }\n return key;\n}\n\nexport function getModelStructuredOutputSupport(\n modelId: TogetherAIChatModelId,\n): boolean {\n return modelId === 'deepseek-ai/DeepSeek-V4-Flash-0731';\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 withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey ?? loadDeprecatedApiKey(),\n environmentVariableName: 'TOGETHER_API_KEY',\n description: 'TogetherAI',\n })}`,\n ...options.headers,\n },\n `ai-sdk-togetherai/${VERSION}`,\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 includeUsage: true,\n supportsStructuredOutputs: getModelStructuredOutputSupport(modelId),\n });\n };\n\n const createCompletionModel = (modelId: TogetherAICompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(modelId, {\n ...getCommonModelConfig('completion'),\n includeUsage: true,\n });\n\n const createEmbeddingModel = (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 createRerankingModel = (modelId: TogetherAIRerankingModelId) =>\n new TogetherAIRerankingModel(modelId, {\n ...getCommonModelConfig('reranking'),\n baseURL: baseURL ?? 'https://api.together.xyz/v1/',\n });\n\n const provider = (modelId: TogetherAIChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.reranking = createRerankingModel;\n provider.rerankingModel = createRerankingModel;\n\n return provider;\n}\n\nexport const togetherai = createTogetherAI();\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/togetherai",
3
- "version": "3.0.59",
3
+ "version": "3.0.61",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
@@ -29,15 +29,15 @@
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
- "@ai-sdk/openai-compatible": "3.0.58",
33
- "@ai-sdk/provider": "4.0.19",
34
- "@ai-sdk/provider-utils": "5.0.50"
32
+ "@ai-sdk/openai-compatible": "3.0.60",
33
+ "@ai-sdk/provider": "4.0.20",
34
+ "@ai-sdk/provider-utils": "5.0.52"
35
35
  },
36
36
  "devDependencies": {
37
- "@ai-sdk/test-server": "2.0.2",
37
+ "@ai-sdk/test-server": "2.0.3",
38
38
  "@types/node": "22.19.19",
39
39
  "@vercel/ai-tsconfig": "0.0.0",
40
- "tsup": "^8.5.1",
40
+ "tsdown": "^0.23.0",
41
41
  "typescript": "5.8.3",
42
42
  "zod": "3.25.76"
43
43
  },
@@ -64,9 +64,9 @@
64
64
  "ai"
65
65
  ],
66
66
  "scripts": {
67
- "build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
68
- "build:watch": "pnpm clean && tsup --watch",
69
- "clean": "del-cli dist docs *.tsbuildinfo",
67
+ "build": "pnpm clean && tsdown",
68
+ "build:watch": "pnpm clean && tsdown --watch",
69
+ "clean": "del-cli docs *.tsbuildinfo",
70
70
  "type-check": "tsc --build",
71
71
  "test": "pnpm test:node && pnpm test:edge",
72
72
  "test:update": "pnpm test:node -u",
@@ -136,7 +136,7 @@ export function createTogetherAI(
136
136
  })}`,
137
137
  ...options.headers,
138
138
  },
139
- `ai-sdk/togetherai/${VERSION}`,
139
+ `ai-sdk-togetherai/${VERSION}`,
140
140
  );
141
141
 
142
142
  interface CommonModelConfig {