@ai-sdk/fireworks 3.0.6 → 3.0.8
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 +18 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.js +60 -5
- package/dist/index.js.map +1 -1
- package/docs/26-fireworks.mdx +86 -51
- package/package.json +4 -4
- package/src/fireworks-image-model-options.ts +61 -0
- package/src/fireworks-image-model.ts +9 -1
- package/src/index.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @ai-sdk/fireworks
|
|
2
2
|
|
|
3
|
+
## 3.0.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f7bca8c: feat(fireworks): add `providerOptions` schema and type for Fireworks image model requests
|
|
8
|
+
- Updated dependencies [0f93c57]
|
|
9
|
+
- @ai-sdk/provider@4.0.3
|
|
10
|
+
- @ai-sdk/openai-compatible@3.0.7
|
|
11
|
+
- @ai-sdk/provider-utils@5.0.7
|
|
12
|
+
|
|
13
|
+
## 3.0.7
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [ac306ed]
|
|
18
|
+
- @ai-sdk/provider-utils@5.0.6
|
|
19
|
+
- @ai-sdk/openai-compatible@3.0.6
|
|
20
|
+
|
|
3
21
|
## 3.0.6
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
2
|
import * as _ai_sdk_provider from '@ai-sdk/provider';
|
|
3
3
|
import { ImageModelV4, ProviderV4, LanguageModelV4, EmbeddingModelV4 } from '@ai-sdk/provider';
|
|
4
|
-
import
|
|
4
|
+
import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
|
|
5
|
+
import { WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE, FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
|
|
5
6
|
|
|
6
7
|
type FireworksChatModelId = 'accounts/fireworks/models/deepseek-v3' | 'accounts/fireworks/models/llama-v3p3-70b-instruct' | 'accounts/fireworks/models/llama-v3p2-3b-instruct' | 'accounts/fireworks/models/llama-v3p1-405b-instruct' | 'accounts/fireworks/models/llama-v3p1-8b-instruct' | 'accounts/fireworks/models/mixtral-8x7b-instruct' | 'accounts/fireworks/models/mixtral-8x22b-instruct' | 'accounts/fireworks/models/mixtral-8x7b-instruct-hf' | 'accounts/fireworks/models/qwen2p5-coder-32b-instruct' | 'accounts/fireworks/models/qwen2p5-72b-instruct' | 'accounts/fireworks/models/qwen-qwq-32b-preview' | 'accounts/fireworks/models/qwen2-vl-72b-instruct' | 'accounts/fireworks/models/llama-v3p2-11b-vision-instruct' | 'accounts/fireworks/models/qwq-32b' | 'accounts/fireworks/models/yi-large' | 'accounts/fireworks/models/kimi-k2-instruct' | 'accounts/fireworks/models/kimi-k2-thinking' | 'accounts/fireworks/models/kimi-k2p6' | 'accounts/fireworks/models/minimax-m2' | (string & {});
|
|
7
8
|
declare const fireworksLanguageModelOptions: z.ZodObject<{
|
|
@@ -76,6 +77,20 @@ declare class FireworksImageModel implements ImageModelV4 {
|
|
|
76
77
|
private pollForImageUrl;
|
|
77
78
|
}
|
|
78
79
|
|
|
80
|
+
declare const fireworksImageModelOptionsSchema: _ai_sdk_provider_utils.LazySchema<{
|
|
81
|
+
[x: string]: unknown;
|
|
82
|
+
guidance_scale?: number | undefined;
|
|
83
|
+
num_inference_steps?: number | undefined;
|
|
84
|
+
output_format?: "jpeg" | "png" | undefined;
|
|
85
|
+
webhook_url?: string | undefined;
|
|
86
|
+
webhook_secret?: string | undefined;
|
|
87
|
+
prompt_upsampling?: boolean | undefined;
|
|
88
|
+
safety_tolerance?: number | undefined;
|
|
89
|
+
cfg_scale?: number | undefined;
|
|
90
|
+
steps?: number | undefined;
|
|
91
|
+
}>;
|
|
92
|
+
type FireworksImageModelOptions = InferSchema<typeof fireworksImageModelOptionsSchema>;
|
|
93
|
+
|
|
79
94
|
type FireworksCompletionModelId = 'accounts/fireworks/models/llama-v3-8b-instruct' | 'accounts/fireworks/models/llama-v2-34b-code' | (string & {});
|
|
80
95
|
|
|
81
96
|
type FireworksErrorData = z.infer<typeof fireworksErrorSchema>;
|
|
@@ -141,4 +156,4 @@ declare const fireworks: FireworksProvider;
|
|
|
141
156
|
|
|
142
157
|
declare const VERSION: string;
|
|
143
158
|
|
|
144
|
-
export { type FireworksEmbeddingModelId, type FireworksEmbeddingModelOptions, type FireworksEmbeddingModelOptions as FireworksEmbeddingProviderOptions, type FireworksErrorData, FireworksImageModel, type FireworksImageModelId, type FireworksLanguageModelOptions, type FireworksProvider, type FireworksLanguageModelOptions as FireworksProviderOptions, type FireworksProviderSettings, VERSION, createFireworks, fireworks };
|
|
159
|
+
export { type FireworksEmbeddingModelId, type FireworksEmbeddingModelOptions, type FireworksEmbeddingModelOptions as FireworksEmbeddingProviderOptions, type FireworksErrorData, FireworksImageModel, type FireworksImageModelId, type FireworksImageModelOptions, type FireworksLanguageModelOptions, type FireworksProvider, type FireworksLanguageModelOptions as FireworksProviderOptions, type FireworksProviderSettings, VERSION, createFireworks, fireworks };
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
delay,
|
|
9
9
|
getFromApi,
|
|
10
10
|
isSameOrigin,
|
|
11
|
+
parseProviderOptions,
|
|
11
12
|
postJsonToApi,
|
|
12
13
|
serializeModelOptions,
|
|
13
14
|
WORKFLOW_SERIALIZE,
|
|
@@ -36,6 +37,55 @@ var asyncPollResponseSchema = lazySchema(
|
|
|
36
37
|
)
|
|
37
38
|
);
|
|
38
39
|
|
|
40
|
+
// src/fireworks-image-model-options.ts
|
|
41
|
+
import {
|
|
42
|
+
lazySchema as lazySchema2,
|
|
43
|
+
zodSchema as zodSchema2
|
|
44
|
+
} from "@ai-sdk/provider-utils";
|
|
45
|
+
import { z as z2 } from "zod/v4";
|
|
46
|
+
var fireworksImageModelOptionsSchema = lazySchema2(
|
|
47
|
+
() => zodSchema2(
|
|
48
|
+
z2.looseObject({
|
|
49
|
+
/**
|
|
50
|
+
* Classifier-free guidance scale for the image diffusion process.
|
|
51
|
+
*/
|
|
52
|
+
guidance_scale: z2.number().optional(),
|
|
53
|
+
/**
|
|
54
|
+
* Number of denoising steps for the image generation process.
|
|
55
|
+
*/
|
|
56
|
+
num_inference_steps: z2.number().int().optional(),
|
|
57
|
+
/**
|
|
58
|
+
* Desired output image format.
|
|
59
|
+
*/
|
|
60
|
+
output_format: z2.enum(["jpeg", "png"]).optional(),
|
|
61
|
+
/**
|
|
62
|
+
* URL to receive webhook notifications for async Kontext requests.
|
|
63
|
+
*/
|
|
64
|
+
webhook_url: z2.string().optional(),
|
|
65
|
+
/**
|
|
66
|
+
* Secret for webhook signature verification.
|
|
67
|
+
*/
|
|
68
|
+
webhook_secret: z2.string().optional(),
|
|
69
|
+
/**
|
|
70
|
+
* Whether Fireworks should automatically modify the prompt for more creative generation.
|
|
71
|
+
*/
|
|
72
|
+
prompt_upsampling: z2.boolean().optional(),
|
|
73
|
+
/**
|
|
74
|
+
* Moderation tolerance level for inputs and outputs.
|
|
75
|
+
*/
|
|
76
|
+
safety_tolerance: z2.number().int().min(0).max(6).optional(),
|
|
77
|
+
/**
|
|
78
|
+
* Guidance scale for legacy image_generation models.
|
|
79
|
+
*/
|
|
80
|
+
cfg_scale: z2.number().optional(),
|
|
81
|
+
/**
|
|
82
|
+
* Number of generation steps for legacy image_generation models.
|
|
83
|
+
*/
|
|
84
|
+
steps: z2.number().int().optional()
|
|
85
|
+
})
|
|
86
|
+
)
|
|
87
|
+
);
|
|
88
|
+
|
|
39
89
|
// src/fireworks-image-model.ts
|
|
40
90
|
var DEFAULT_POLL_INTERVAL_MILLIS = 500;
|
|
41
91
|
var DEFAULT_POLL_TIMEOUT_MILLIS = 12e4;
|
|
@@ -159,6 +209,11 @@ var FireworksImageModel = class _FireworksImageModel {
|
|
|
159
209
|
const splitSize = size == null ? void 0 : size.split("x");
|
|
160
210
|
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
161
211
|
const combinedHeaders = combineHeaders((_e = (_d = this.config).headers) == null ? void 0 : _e.call(_d), headers);
|
|
212
|
+
const fireworksOptions = (_f = await parseProviderOptions({
|
|
213
|
+
provider: "fireworks",
|
|
214
|
+
providerOptions,
|
|
215
|
+
schema: fireworksImageModelOptionsSchema
|
|
216
|
+
})) != null ? _f : {};
|
|
162
217
|
const body = {
|
|
163
218
|
prompt,
|
|
164
219
|
aspect_ratio: aspectRatio,
|
|
@@ -166,7 +221,7 @@ var FireworksImageModel = class _FireworksImageModel {
|
|
|
166
221
|
samples: n,
|
|
167
222
|
...inputImage && { input_image: inputImage },
|
|
168
223
|
...splitSize && { width: splitSize[0], height: splitSize[1] },
|
|
169
|
-
...
|
|
224
|
+
...fireworksOptions
|
|
170
225
|
};
|
|
171
226
|
if ((backendConfig == null ? void 0 : backendConfig.urlFormat) === "workflows_async") {
|
|
172
227
|
return this.doGenerateAsync({
|
|
@@ -303,14 +358,14 @@ import {
|
|
|
303
358
|
withoutTrailingSlash,
|
|
304
359
|
withUserAgentSuffix
|
|
305
360
|
} from "@ai-sdk/provider-utils";
|
|
306
|
-
import { z as
|
|
361
|
+
import { z as z3 } from "zod/v4";
|
|
307
362
|
|
|
308
363
|
// src/version.ts
|
|
309
|
-
var VERSION = true ? "3.0.
|
|
364
|
+
var VERSION = true ? "3.0.8" : "0.0.0-test";
|
|
310
365
|
|
|
311
366
|
// src/fireworks-provider.ts
|
|
312
|
-
var fireworksErrorSchema =
|
|
313
|
-
error:
|
|
367
|
+
var fireworksErrorSchema = z3.object({
|
|
368
|
+
error: z3.string()
|
|
314
369
|
});
|
|
315
370
|
var fireworksErrorStructure = {
|
|
316
371
|
errorSchema: fireworksErrorSchema,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fireworks-image-model.ts","../src/fireworks-image-api.ts","../src/fireworks-provider.ts","../src/version.ts"],"sourcesContent":["import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n delay,\n getFromApi,\n isSameOrigin,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport {\n asyncPollResponseSchema,\n asyncSubmitResponseSchema,\n} from './fireworks-image-api';\nimport type { FireworksImageModelId } from './fireworks-image-options';\n\nconst DEFAULT_POLL_INTERVAL_MILLIS = 500;\nconst DEFAULT_POLL_TIMEOUT_MILLIS = 120000; // 2 minutes for image generation\n\ninterface FireworksImageModelBackendConfig {\n urlFormat: 'workflows' | 'workflows_async' | 'image_generation';\n supportsSize?: boolean;\n supportsEditing?: boolean;\n}\n\nconst modelToBackendConfig: Partial<\n Record<FireworksImageModelId, FireworksImageModelBackendConfig>\n> = {\n 'accounts/fireworks/models/flux-1-dev-fp8': {\n urlFormat: 'workflows',\n },\n 'accounts/fireworks/models/flux-1-schnell-fp8': {\n urlFormat: 'workflows',\n },\n 'accounts/fireworks/models/flux-kontext-pro': {\n urlFormat: 'workflows_async',\n supportsEditing: true,\n },\n 'accounts/fireworks/models/flux-kontext-max': {\n urlFormat: 'workflows_async',\n supportsEditing: true,\n },\n 'accounts/fireworks/models/playground-v2-5-1024px-aesthetic': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n 'accounts/fireworks/models/japanese-stable-diffusion-xl': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n 'accounts/fireworks/models/playground-v2-1024px-aesthetic': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n 'accounts/fireworks/models/stable-diffusion-xl-1024-v1-0': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n 'accounts/fireworks/models/SSD-1B': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n};\n\nfunction getUrlForModel(\n baseUrl: string,\n modelId: FireworksImageModelId,\n): string {\n const config = modelToBackendConfig[modelId];\n\n switch (config?.urlFormat) {\n case 'image_generation':\n return `${baseUrl}/image_generation/${modelId}`;\n case 'workflows_async':\n return `${baseUrl}/workflows/${modelId}`;\n case 'workflows':\n default:\n return `${baseUrl}/workflows/${modelId}/text_to_image`;\n }\n}\n\nfunction getPollUrlForModel(\n baseUrl: string,\n modelId: FireworksImageModelId,\n): string {\n return `${baseUrl}/workflows/${modelId}/get_result`;\n}\n\ninterface FireworksImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: () => Record<string, string>;\n fetch?: FetchFunction;\n /**\n * Poll interval in milliseconds between status checks for async models.\n * Defaults to 500ms.\n */\n pollIntervalMillis?: number;\n /**\n * Overall timeout in milliseconds for polling before giving up.\n * Defaults to 120000ms (2 minutes).\n */\n pollTimeoutMillis?: number;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class FireworksImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: FireworksImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: FireworksImageModelId;\n config: FireworksImageModelConfig;\n }) {\n return new FireworksImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: FireworksImageModelId,\n private config: FireworksImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\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 const backendConfig = modelToBackendConfig[this.modelId];\n if (!backendConfig?.supportsSize && size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n // Use supportsSize as a proxy for whether the model does not support\n // aspectRatio. This invariant holds for the current set of models.\n if (backendConfig?.supportsSize && aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'This model does not support the `aspectRatio` option.',\n });\n }\n\n // Handle files for image editing\n const hasInputImage = files != null && files.length > 0;\n let inputImage: string | undefined;\n\n if (hasInputImage) {\n inputImage = convertImageModelFileToDataUri(files[0]);\n\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'Fireworks only supports a single input image. Additional images are ignored.',\n });\n }\n }\n\n // Warn about mask - Fireworks Kontext models don't support explicit masks\n if (mask != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'mask',\n details:\n 'Fireworks Kontext models do not support explicit masks. Use the prompt to describe the areas to edit.',\n });\n }\n\n const splitSize = size?.split('x');\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const combinedHeaders = combineHeaders(this.config.headers?.(), headers);\n\n const body = {\n prompt,\n aspect_ratio: aspectRatio,\n seed,\n samples: n,\n ...(inputImage && { input_image: inputImage }),\n ...(splitSize && { width: splitSize[0], height: splitSize[1] }),\n ...(providerOptions.fireworks ?? {}),\n };\n\n // Handle async models that require polling (e.g., flux-kontext-*)\n if (backendConfig?.urlFormat === 'workflows_async') {\n return this.doGenerateAsync({\n body,\n headers: combinedHeaders,\n abortSignal,\n warnings,\n currentDate,\n });\n }\n\n // Handle sync models that return binary directly\n const { value: response, responseHeaders } = await postJsonToApi({\n url: getUrlForModel(this.config.baseURL, this.modelId),\n headers: combinedHeaders,\n body,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: [response],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n /**\n * Handles async image generation for models like flux-kontext-* that return\n * a request_id and require polling for results.\n */\n private async doGenerateAsync({\n body,\n headers,\n abortSignal,\n warnings,\n currentDate,\n }: {\n body: Record<string, unknown>;\n headers: Record<string, string | undefined>;\n abortSignal: AbortSignal | undefined;\n warnings: Array<SharedV4Warning>;\n currentDate: Date;\n }): Promise<Awaited<ReturnType<ImageModelV4['doGenerate']>>> {\n // Submit the generation request\n const { value: submitResponse } = await postJsonToApi({\n url: getUrlForModel(this.config.baseURL, this.modelId),\n headers,\n body,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createJsonResponseHandler(\n asyncSubmitResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const requestId = submitResponse.request_id;\n\n // Poll for the result\n const imageUrl = await this.pollForImageUrl({\n requestId,\n headers,\n abortSignal,\n });\n\n // Download the image from the URL. The URL comes from the provider\n // response and typically points at a CDN, so only send credentials when it\n // stays on the provider's own origin (never leak the API key to a CDN or an\n // attacker-named host).\n const { value: imageBytes, responseHeaders } = await getFromApi({\n url: imageUrl,\n headers: isSameOrigin(imageUrl, this.config.baseURL)\n ? headers\n : undefined,\n abortSignal,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.config.fetch,\n });\n\n return {\n images: [imageBytes],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n /**\n * Polls the get_result endpoint until the image is ready.\n */\n private async pollForImageUrl({\n requestId,\n headers,\n abortSignal,\n }: {\n requestId: string;\n headers: Record<string, string | undefined>;\n abortSignal: AbortSignal | undefined;\n }): Promise<string> {\n const pollIntervalMillis =\n this.config.pollIntervalMillis ?? DEFAULT_POLL_INTERVAL_MILLIS;\n const pollTimeoutMillis =\n this.config.pollTimeoutMillis ?? DEFAULT_POLL_TIMEOUT_MILLIS;\n const maxPollAttempts = Math.ceil(\n pollTimeoutMillis / Math.max(1, pollIntervalMillis),\n );\n\n const pollUrl = getPollUrlForModel(this.config.baseURL, this.modelId);\n\n for (let i = 0; i < maxPollAttempts; i++) {\n const { value: pollResponse } = await postJsonToApi({\n url: pollUrl,\n headers,\n body: { id: requestId },\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createJsonResponseHandler(\n asyncPollResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const status = pollResponse.status;\n\n if (status === 'Ready') {\n const imageUrl = pollResponse.result?.sample;\n if (typeof imageUrl === 'string') {\n return imageUrl;\n }\n throw new Error(\n 'Fireworks poll response is Ready but missing result.sample',\n );\n }\n\n if (status === 'Error' || status === 'Failed') {\n throw new Error(\n `Fireworks image generation failed with status: ${status}`,\n );\n }\n\n // Wait before next poll attempt\n await delay(pollIntervalMillis);\n }\n\n throw new Error(\n `Fireworks image generation timed out after ${pollTimeoutMillis}ms`,\n );\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Schema for async submit response\nexport const asyncSubmitResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n request_id: z.string(),\n }),\n ),\n);\n\n// Schema for async poll response\nexport const asyncPollResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string(),\n status: z.string(),\n result: z\n .object({\n sample: z.string().optional(),\n })\n .nullable(),\n }),\n ),\n);\n","import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n type ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport type {\n EmbeddingModelV4,\n ImageModelV4,\n LanguageModelV4,\n ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { FireworksChatModelId } from './fireworks-chat-options';\nimport type { FireworksCompletionModelId } from './fireworks-completion-options';\nimport type { FireworksEmbeddingModelId } from './fireworks-embedding-options';\nimport { FireworksImageModel } from './fireworks-image-model';\nimport type { FireworksImageModelId } from './fireworks-image-options';\nimport { VERSION } from './version';\n\nexport type FireworksErrorData = z.infer<typeof fireworksErrorSchema>;\n\nconst fireworksErrorSchema = z.object({\n error: z.string(),\n});\n\nconst fireworksErrorStructure: ProviderErrorStructure<FireworksErrorData> = {\n errorSchema: fireworksErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface FireworksProviderSettings {\n /**\n * Fireworks API key. Default value is taken from the `FIREWORKS_API_KEY`\n * environment variable.\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 FireworksProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: FireworksChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: FireworksChatModelId): LanguageModelV4;\n\n /**\n * Creates a completion model for text generation.\n */\n completionModel(modelId: FireworksCompletionModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n languageModel(modelId: FireworksChatModelId): LanguageModelV4;\n\n /**\n * Creates a text embedding model for text generation.\n */\n embeddingModel(modelId: FireworksEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: FireworksEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: FireworksImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: FireworksImageModelId): ImageModelV4;\n}\n\nconst defaultBaseURL = 'https://api.fireworks.ai/inference/v1';\n\nexport function createFireworks(\n options: FireworksProviderSettings = {},\n): FireworksProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'FIREWORKS_API_KEY',\n description: 'Fireworks API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/fireworks/${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: `fireworks.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: FireworksChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n ...getCommonModelConfig('chat'),\n includeUsage: true,\n errorStructure: fireworksErrorStructure,\n transformRequestBody: args => {\n const thinking = args.thinking as\n | { type?: string; budgetTokens?: number }\n | undefined;\n const reasoningHistory = args.reasoningHistory as string | undefined;\n const promptCacheKey = args.promptCacheKey as string | undefined;\n const serviceTier = args.serviceTier as string | undefined;\n\n const {\n thinking: _,\n reasoningHistory: __,\n promptCacheKey: ___,\n serviceTier: ____,\n reasoning_effort,\n ...rest\n } = args;\n\n return {\n ...rest,\n ...(reasoning_effort != null && {\n // Workaround since OpenAI spec allows for 5 reasoning levels, but Fireworks only supports 3 of them.\n reasoning_effort:\n reasoning_effort === 'minimal'\n ? 'low'\n : reasoning_effort === 'xhigh'\n ? 'high'\n : reasoning_effort,\n }),\n ...(promptCacheKey !== undefined && {\n prompt_cache_key: promptCacheKey,\n }),\n ...(serviceTier !== undefined && {\n service_tier: serviceTier,\n }),\n ...(thinking && {\n thinking: {\n type: thinking.type,\n ...(thinking.budgetTokens !== undefined && {\n budget_tokens: thinking.budgetTokens,\n }),\n },\n }),\n ...(reasoningHistory && {\n reasoning_history: reasoningHistory,\n }),\n };\n },\n });\n };\n\n const createCompletionModel = (modelId: FireworksCompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(modelId, {\n ...getCommonModelConfig('completion'),\n includeUsage: true,\n errorStructure: fireworksErrorStructure,\n });\n\n const createEmbeddingModel = (modelId: FireworksEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(modelId, {\n ...getCommonModelConfig('embedding'),\n errorStructure: fireworksErrorStructure,\n });\n\n const createImageModel = (modelId: FireworksImageModelId) =>\n new FireworksImageModel(modelId, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL ?? defaultBaseURL,\n });\n\n const provider = (modelId: FireworksChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.completionModel = createCompletionModel;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n return provider;\n}\n\nexport const fireworks = createFireworks();\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":["z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/fireworks-image-model.ts","../src/fireworks-image-api.ts","../src/fireworks-image-model-options.ts","../src/fireworks-provider.ts","../src/version.ts"],"sourcesContent":["import type { ImageModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n createStatusCodeErrorResponseHandler,\n delay,\n getFromApi,\n isSameOrigin,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport {\n asyncPollResponseSchema,\n asyncSubmitResponseSchema,\n} from './fireworks-image-api';\nimport { fireworksImageModelOptionsSchema } from './fireworks-image-model-options';\nimport type { FireworksImageModelId } from './fireworks-image-options';\n\nconst DEFAULT_POLL_INTERVAL_MILLIS = 500;\nconst DEFAULT_POLL_TIMEOUT_MILLIS = 120000; // 2 minutes for image generation\n\ninterface FireworksImageModelBackendConfig {\n urlFormat: 'workflows' | 'workflows_async' | 'image_generation';\n supportsSize?: boolean;\n supportsEditing?: boolean;\n}\n\nconst modelToBackendConfig: Partial<\n Record<FireworksImageModelId, FireworksImageModelBackendConfig>\n> = {\n 'accounts/fireworks/models/flux-1-dev-fp8': {\n urlFormat: 'workflows',\n },\n 'accounts/fireworks/models/flux-1-schnell-fp8': {\n urlFormat: 'workflows',\n },\n 'accounts/fireworks/models/flux-kontext-pro': {\n urlFormat: 'workflows_async',\n supportsEditing: true,\n },\n 'accounts/fireworks/models/flux-kontext-max': {\n urlFormat: 'workflows_async',\n supportsEditing: true,\n },\n 'accounts/fireworks/models/playground-v2-5-1024px-aesthetic': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n 'accounts/fireworks/models/japanese-stable-diffusion-xl': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n 'accounts/fireworks/models/playground-v2-1024px-aesthetic': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n 'accounts/fireworks/models/stable-diffusion-xl-1024-v1-0': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n 'accounts/fireworks/models/SSD-1B': {\n urlFormat: 'image_generation',\n supportsSize: true,\n },\n};\n\nfunction getUrlForModel(\n baseUrl: string,\n modelId: FireworksImageModelId,\n): string {\n const config = modelToBackendConfig[modelId];\n\n switch (config?.urlFormat) {\n case 'image_generation':\n return `${baseUrl}/image_generation/${modelId}`;\n case 'workflows_async':\n return `${baseUrl}/workflows/${modelId}`;\n case 'workflows':\n default:\n return `${baseUrl}/workflows/${modelId}/text_to_image`;\n }\n}\n\nfunction getPollUrlForModel(\n baseUrl: string,\n modelId: FireworksImageModelId,\n): string {\n return `${baseUrl}/workflows/${modelId}/get_result`;\n}\n\ninterface FireworksImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: () => Record<string, string>;\n fetch?: FetchFunction;\n /**\n * Poll interval in milliseconds between status checks for async models.\n * Defaults to 500ms.\n */\n pollIntervalMillis?: number;\n /**\n * Overall timeout in milliseconds for polling before giving up.\n * Defaults to 120000ms (2 minutes).\n */\n pollTimeoutMillis?: number;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class FireworksImageModel implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: FireworksImageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: FireworksImageModelId;\n config: FireworksImageModelConfig;\n }) {\n return new FireworksImageModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: FireworksImageModelId,\n private config: FireworksImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\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 const backendConfig = modelToBackendConfig[this.modelId];\n if (!backendConfig?.supportsSize && size != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n // Use supportsSize as a proxy for whether the model does not support\n // aspectRatio. This invariant holds for the current set of models.\n if (backendConfig?.supportsSize && aspectRatio != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'aspectRatio',\n details: 'This model does not support the `aspectRatio` option.',\n });\n }\n\n // Handle files for image editing\n const hasInputImage = files != null && files.length > 0;\n let inputImage: string | undefined;\n\n if (hasInputImage) {\n inputImage = convertImageModelFileToDataUri(files[0]);\n\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'Fireworks only supports a single input image. Additional images are ignored.',\n });\n }\n }\n\n // Warn about mask - Fireworks Kontext models don't support explicit masks\n if (mask != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'mask',\n details:\n 'Fireworks Kontext models do not support explicit masks. Use the prompt to describe the areas to edit.',\n });\n }\n\n const splitSize = size?.split('x');\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const combinedHeaders = combineHeaders(this.config.headers?.(), headers);\n const fireworksOptions =\n (await parseProviderOptions({\n provider: 'fireworks',\n providerOptions,\n schema: fireworksImageModelOptionsSchema,\n })) ?? {};\n\n const body = {\n prompt,\n aspect_ratio: aspectRatio,\n seed,\n samples: n,\n ...(inputImage && { input_image: inputImage }),\n ...(splitSize && { width: splitSize[0], height: splitSize[1] }),\n ...fireworksOptions,\n };\n\n // Handle async models that require polling (e.g., flux-kontext-*)\n if (backendConfig?.urlFormat === 'workflows_async') {\n return this.doGenerateAsync({\n body,\n headers: combinedHeaders,\n abortSignal,\n warnings,\n currentDate,\n });\n }\n\n // Handle sync models that return binary directly\n const { value: response, responseHeaders } = await postJsonToApi({\n url: getUrlForModel(this.config.baseURL, this.modelId),\n headers: combinedHeaders,\n body,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: [response],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n /**\n * Handles async image generation for models like flux-kontext-* that return\n * a request_id and require polling for results.\n */\n private async doGenerateAsync({\n body,\n headers,\n abortSignal,\n warnings,\n currentDate,\n }: {\n body: Record<string, unknown>;\n headers: Record<string, string | undefined>;\n abortSignal: AbortSignal | undefined;\n warnings: Array<SharedV4Warning>;\n currentDate: Date;\n }): Promise<Awaited<ReturnType<ImageModelV4['doGenerate']>>> {\n // Submit the generation request\n const { value: submitResponse } = await postJsonToApi({\n url: getUrlForModel(this.config.baseURL, this.modelId),\n headers,\n body,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createJsonResponseHandler(\n asyncSubmitResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const requestId = submitResponse.request_id;\n\n // Poll for the result\n const imageUrl = await this.pollForImageUrl({\n requestId,\n headers,\n abortSignal,\n });\n\n // Download the image from the URL. The URL comes from the provider\n // response and typically points at a CDN, so only send credentials when it\n // stays on the provider's own origin (never leak the API key to a CDN or an\n // attacker-named host).\n const { value: imageBytes, responseHeaders } = await getFromApi({\n url: imageUrl,\n headers: isSameOrigin(imageUrl, this.config.baseURL)\n ? headers\n : undefined,\n abortSignal,\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createBinaryResponseHandler(),\n fetch: this.config.fetch,\n });\n\n return {\n images: [imageBytes],\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n\n /**\n * Polls the get_result endpoint until the image is ready.\n */\n private async pollForImageUrl({\n requestId,\n headers,\n abortSignal,\n }: {\n requestId: string;\n headers: Record<string, string | undefined>;\n abortSignal: AbortSignal | undefined;\n }): Promise<string> {\n const pollIntervalMillis =\n this.config.pollIntervalMillis ?? DEFAULT_POLL_INTERVAL_MILLIS;\n const pollTimeoutMillis =\n this.config.pollTimeoutMillis ?? DEFAULT_POLL_TIMEOUT_MILLIS;\n const maxPollAttempts = Math.ceil(\n pollTimeoutMillis / Math.max(1, pollIntervalMillis),\n );\n\n const pollUrl = getPollUrlForModel(this.config.baseURL, this.modelId);\n\n for (let i = 0; i < maxPollAttempts; i++) {\n const { value: pollResponse } = await postJsonToApi({\n url: pollUrl,\n headers,\n body: { id: requestId },\n failedResponseHandler: createStatusCodeErrorResponseHandler(),\n successfulResponseHandler: createJsonResponseHandler(\n asyncPollResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n const status = pollResponse.status;\n\n if (status === 'Ready') {\n const imageUrl = pollResponse.result?.sample;\n if (typeof imageUrl === 'string') {\n return imageUrl;\n }\n throw new Error(\n 'Fireworks poll response is Ready but missing result.sample',\n );\n }\n\n if (status === 'Error' || status === 'Failed') {\n throw new Error(\n `Fireworks image generation failed with status: ${status}`,\n );\n }\n\n // Wait before next poll attempt\n await delay(pollIntervalMillis);\n }\n\n throw new Error(\n `Fireworks image generation timed out after ${pollTimeoutMillis}ms`,\n );\n }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Schema for async submit response\nexport const asyncSubmitResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n request_id: z.string(),\n }),\n ),\n);\n\n// Schema for async poll response\nexport const asyncPollResponseSchema = lazySchema(() =>\n zodSchema(\n z.object({\n id: z.string(),\n status: z.string(),\n result: z\n .object({\n sample: z.string().optional(),\n })\n .nullable(),\n }),\n ),\n);\n","import {\n lazySchema,\n zodSchema,\n type InferSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const fireworksImageModelOptionsSchema = lazySchema(() =>\n zodSchema(\n z.looseObject({\n /**\n * Classifier-free guidance scale for the image diffusion process.\n */\n guidance_scale: z.number().optional(),\n\n /**\n * Number of denoising steps for the image generation process.\n */\n num_inference_steps: z.number().int().optional(),\n\n /**\n * Desired output image format.\n */\n output_format: z.enum(['jpeg', 'png']).optional(),\n\n /**\n * URL to receive webhook notifications for async Kontext requests.\n */\n webhook_url: z.string().optional(),\n\n /**\n * Secret for webhook signature verification.\n */\n webhook_secret: z.string().optional(),\n\n /**\n * Whether Fireworks should automatically modify the prompt for more creative generation.\n */\n prompt_upsampling: z.boolean().optional(),\n\n /**\n * Moderation tolerance level for inputs and outputs.\n */\n safety_tolerance: z.number().int().min(0).max(6).optional(),\n\n /**\n * Guidance scale for legacy image_generation models.\n */\n cfg_scale: z.number().optional(),\n\n /**\n * Number of generation steps for legacy image_generation models.\n */\n steps: z.number().int().optional(),\n }),\n ),\n);\n\nexport type FireworksImageModelOptions = InferSchema<\n typeof fireworksImageModelOptionsSchema\n>;\n","import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n type ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport type {\n EmbeddingModelV4,\n ImageModelV4,\n LanguageModelV4,\n ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { FireworksChatModelId } from './fireworks-chat-options';\nimport type { FireworksCompletionModelId } from './fireworks-completion-options';\nimport type { FireworksEmbeddingModelId } from './fireworks-embedding-options';\nimport { FireworksImageModel } from './fireworks-image-model';\nimport type { FireworksImageModelId } from './fireworks-image-options';\nimport { VERSION } from './version';\n\nexport type FireworksErrorData = z.infer<typeof fireworksErrorSchema>;\n\nconst fireworksErrorSchema = z.object({\n error: z.string(),\n});\n\nconst fireworksErrorStructure: ProviderErrorStructure<FireworksErrorData> = {\n errorSchema: fireworksErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface FireworksProviderSettings {\n /**\n * Fireworks API key. Default value is taken from the `FIREWORKS_API_KEY`\n * environment variable.\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 FireworksProvider extends ProviderV4 {\n /**\n * Creates a model for text generation.\n */\n (modelId: FireworksChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId: FireworksChatModelId): LanguageModelV4;\n\n /**\n * Creates a completion model for text generation.\n */\n completionModel(modelId: FireworksCompletionModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n languageModel(modelId: FireworksChatModelId): LanguageModelV4;\n\n /**\n * Creates a text embedding model for text generation.\n */\n embeddingModel(modelId: FireworksEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: FireworksEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * Creates a model for image generation.\n */\n image(modelId: FireworksImageModelId): ImageModelV4;\n\n /**\n * Creates a model for image generation.\n */\n imageModel(modelId: FireworksImageModelId): ImageModelV4;\n}\n\nconst defaultBaseURL = 'https://api.fireworks.ai/inference/v1';\n\nexport function createFireworks(\n options: FireworksProviderSettings = {},\n): FireworksProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'FIREWORKS_API_KEY',\n description: 'Fireworks API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/fireworks/${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: `fireworks.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: FireworksChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n ...getCommonModelConfig('chat'),\n includeUsage: true,\n errorStructure: fireworksErrorStructure,\n transformRequestBody: args => {\n const thinking = args.thinking as\n | { type?: string; budgetTokens?: number }\n | undefined;\n const reasoningHistory = args.reasoningHistory as string | undefined;\n const promptCacheKey = args.promptCacheKey as string | undefined;\n const serviceTier = args.serviceTier as string | undefined;\n\n const {\n thinking: _,\n reasoningHistory: __,\n promptCacheKey: ___,\n serviceTier: ____,\n reasoning_effort,\n ...rest\n } = args;\n\n return {\n ...rest,\n ...(reasoning_effort != null && {\n // Workaround since OpenAI spec allows for 5 reasoning levels, but Fireworks only supports 3 of them.\n reasoning_effort:\n reasoning_effort === 'minimal'\n ? 'low'\n : reasoning_effort === 'xhigh'\n ? 'high'\n : reasoning_effort,\n }),\n ...(promptCacheKey !== undefined && {\n prompt_cache_key: promptCacheKey,\n }),\n ...(serviceTier !== undefined && {\n service_tier: serviceTier,\n }),\n ...(thinking && {\n thinking: {\n type: thinking.type,\n ...(thinking.budgetTokens !== undefined && {\n budget_tokens: thinking.budgetTokens,\n }),\n },\n }),\n ...(reasoningHistory && {\n reasoning_history: reasoningHistory,\n }),\n };\n },\n });\n };\n\n const createCompletionModel = (modelId: FireworksCompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(modelId, {\n ...getCommonModelConfig('completion'),\n includeUsage: true,\n errorStructure: fireworksErrorStructure,\n });\n\n const createEmbeddingModel = (modelId: FireworksEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(modelId, {\n ...getCommonModelConfig('embedding'),\n errorStructure: fireworksErrorStructure,\n });\n\n const createImageModel = (modelId: FireworksImageModelId) =>\n new FireworksImageModel(modelId, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL ?? defaultBaseURL,\n });\n\n const provider = (modelId: FireworksChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.completionModel = createCompletionModel;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n return provider;\n}\n\nexport const fireworks = createFireworks();\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","z","z"]}
|
package/docs/26-fireworks.mdx
CHANGED
|
@@ -11,21 +11,7 @@ description: Learn how to use Fireworks models with the AI SDK.
|
|
|
11
11
|
|
|
12
12
|
The Fireworks provider is available via the `@ai-sdk/fireworks` module. You can install it with
|
|
13
13
|
|
|
14
|
-
<
|
|
15
|
-
<Tab>
|
|
16
|
-
<Snippet text="pnpm add @ai-sdk/fireworks" dark />
|
|
17
|
-
</Tab>
|
|
18
|
-
<Tab>
|
|
19
|
-
<Snippet text="npm install @ai-sdk/fireworks" dark />
|
|
20
|
-
</Tab>
|
|
21
|
-
<Tab>
|
|
22
|
-
<Snippet text="yarn add @ai-sdk/fireworks" dark />
|
|
23
|
-
</Tab>
|
|
24
|
-
|
|
25
|
-
<Tab>
|
|
26
|
-
<Snippet text="bun add @ai-sdk/fireworks" dark />
|
|
27
|
-
</Tab>
|
|
28
|
-
</Tabs>
|
|
14
|
+
<InstallPackages packages="@ai-sdk/fireworks" />
|
|
29
15
|
|
|
30
16
|
## Provider Instance
|
|
31
17
|
|
|
@@ -285,29 +271,29 @@ const model = fireworks.completionModel(
|
|
|
285
271
|
|
|
286
272
|
### Model Capabilities
|
|
287
273
|
|
|
288
|
-
| Model | Image Input
|
|
289
|
-
| ---------------------------------------------------------- |
|
|
290
|
-
| `accounts/fireworks/models/firefunction-v1` | <Cross
|
|
291
|
-
| `accounts/fireworks/models/deepseek-r1` | <Cross
|
|
292
|
-
| `accounts/fireworks/models/deepseek-v3` | <Cross
|
|
293
|
-
| `accounts/fireworks/models/llama-v3p1-405b-instruct` | <Cross
|
|
294
|
-
| `accounts/fireworks/models/llama-v3p1-8b-instruct` | <Cross
|
|
295
|
-
| `accounts/fireworks/models/llama-v3p2-3b-instruct` | <Cross
|
|
296
|
-
| `accounts/fireworks/models/llama-v3p3-70b-instruct` | <Cross
|
|
297
|
-
| `accounts/fireworks/models/mixtral-8x7b-instruct` | <Cross
|
|
298
|
-
| `accounts/fireworks/models/mixtral-8x7b-instruct-hf` | <Cross
|
|
299
|
-
| `accounts/fireworks/models/mixtral-8x22b-instruct` | <Cross
|
|
300
|
-
| `accounts/fireworks/models/qwen2p5-coder-32b-instruct` | <Cross
|
|
301
|
-
| `accounts/fireworks/models/qwen2p5-72b-instruct` | <Cross
|
|
302
|
-
| `accounts/fireworks/models/qwen-qwq-32b-preview` | <Cross
|
|
303
|
-
| `accounts/fireworks/models/qwen2-vl-72b-instruct` | <Check
|
|
304
|
-
| `accounts/fireworks/models/llama-v3p2-11b-vision-instruct` | <Check
|
|
305
|
-
| `accounts/fireworks/models/qwq-32b` | <Cross
|
|
306
|
-
| `accounts/fireworks/models/yi-large` | <Cross
|
|
307
|
-
| `accounts/fireworks/models/kimi-k2-instruct` | <Cross
|
|
308
|
-
| `accounts/fireworks/models/kimi-k2-thinking` | <Cross
|
|
309
|
-
| `accounts/fireworks/models/kimi-k2p6` | <Check
|
|
310
|
-
| `accounts/fireworks/models/minimax-m2` | <Cross
|
|
274
|
+
| Model | Image Input | Object Generation | Tool Usage | Tool Streaming |
|
|
275
|
+
| ---------------------------------------------------------- | ----------- | ----------------- | ---------- | -------------- |
|
|
276
|
+
| `accounts/fireworks/models/firefunction-v1` | <Cross /> | <Check /> | <Check /> | <Check /> |
|
|
277
|
+
| `accounts/fireworks/models/deepseek-r1` | <Cross /> | <Check /> | <Cross /> | <Cross /> |
|
|
278
|
+
| `accounts/fireworks/models/deepseek-v3` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
279
|
+
| `accounts/fireworks/models/llama-v3p1-405b-instruct` | <Cross /> | <Check /> | <Check /> | <Check /> |
|
|
280
|
+
| `accounts/fireworks/models/llama-v3p1-8b-instruct` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
281
|
+
| `accounts/fireworks/models/llama-v3p2-3b-instruct` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
282
|
+
| `accounts/fireworks/models/llama-v3p3-70b-instruct` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
283
|
+
| `accounts/fireworks/models/mixtral-8x7b-instruct` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
284
|
+
| `accounts/fireworks/models/mixtral-8x7b-instruct-hf` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
285
|
+
| `accounts/fireworks/models/mixtral-8x22b-instruct` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
286
|
+
| `accounts/fireworks/models/qwen2p5-coder-32b-instruct` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
287
|
+
| `accounts/fireworks/models/qwen2p5-72b-instruct` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
288
|
+
| `accounts/fireworks/models/qwen-qwq-32b-preview` | <Cross /> | <Check /> | <Cross /> | <Cross /> |
|
|
289
|
+
| `accounts/fireworks/models/qwen2-vl-72b-instruct` | <Check /> | <Check /> | <Cross /> | <Cross /> |
|
|
290
|
+
| `accounts/fireworks/models/llama-v3p2-11b-vision-instruct` | <Check /> | <Check /> | <Check /> | <Cross /> |
|
|
291
|
+
| `accounts/fireworks/models/qwq-32b` | <Cross /> | <Check /> | <Cross /> | <Cross /> |
|
|
292
|
+
| `accounts/fireworks/models/yi-large` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
293
|
+
| `accounts/fireworks/models/kimi-k2-instruct` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
294
|
+
| `accounts/fireworks/models/kimi-k2-thinking` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
295
|
+
| `accounts/fireworks/models/kimi-k2p6` | <Check /> | <Check /> | <Check /> | <Cross /> |
|
|
296
|
+
| `accounts/fireworks/models/minimax-m2` | <Cross /> | <Check /> | <Check /> | <Cross /> |
|
|
311
297
|
|
|
312
298
|
<Note>
|
|
313
299
|
The table above lists popular models. Please see the [Fireworks models
|
|
@@ -351,13 +337,19 @@ You can create Fireworks image models using the `.image()` factory method.
|
|
|
351
337
|
For more on image generation with the AI SDK see [generateImage()](/docs/reference/ai-sdk-core/generate-image).
|
|
352
338
|
|
|
353
339
|
```ts
|
|
354
|
-
import { fireworks } from '@ai-sdk/fireworks';
|
|
340
|
+
import { fireworks, type FireworksImageModelOptions } from '@ai-sdk/fireworks';
|
|
355
341
|
import { generateImage } from 'ai';
|
|
356
342
|
|
|
357
343
|
const { image } = await generateImage({
|
|
358
344
|
model: fireworks.image('accounts/fireworks/models/flux-1-dev-fp8'),
|
|
359
345
|
prompt: 'A futuristic cityscape at sunset',
|
|
360
346
|
aspectRatio: '16:9',
|
|
347
|
+
providerOptions: {
|
|
348
|
+
fireworks: {
|
|
349
|
+
guidance_scale: 4.5,
|
|
350
|
+
num_inference_steps: 8,
|
|
351
|
+
} satisfies FireworksImageModelOptions,
|
|
352
|
+
},
|
|
361
353
|
});
|
|
362
354
|
```
|
|
363
355
|
|
|
@@ -368,6 +360,48 @@ const { image } = await generateImage({
|
|
|
368
360
|
page](https://fireworks.ai/models) for more details.
|
|
369
361
|
</Note>
|
|
370
362
|
|
|
363
|
+
### Provider Options
|
|
364
|
+
|
|
365
|
+
Fireworks image models support flexible provider options through the `providerOptions.fireworks` object. Use the `FireworksImageModelOptions` type to validate known Fireworks image options while still allowing model-specific options to pass through.
|
|
366
|
+
|
|
367
|
+
The following typed provider options are available:
|
|
368
|
+
|
|
369
|
+
- **guidance_scale** _number_
|
|
370
|
+
|
|
371
|
+
Classifier-free guidance scale for the image diffusion process.
|
|
372
|
+
|
|
373
|
+
- **num_inference_steps** _number_
|
|
374
|
+
|
|
375
|
+
Number of denoising steps for FLUX workflow image generation.
|
|
376
|
+
|
|
377
|
+
- **output_format** _'jpeg' | 'png'_
|
|
378
|
+
|
|
379
|
+
Desired output format for FLUX Kontext image generation and editing.
|
|
380
|
+
|
|
381
|
+
- **prompt_upsampling** _boolean_
|
|
382
|
+
|
|
383
|
+
Whether Fireworks should automatically modify the prompt for more creative generation.
|
|
384
|
+
|
|
385
|
+
- **safety_tolerance** _number_
|
|
386
|
+
|
|
387
|
+
Moderation tolerance level for inputs and outputs, from `0` to `6`. Fireworks limits image-to-image requests to `2`.
|
|
388
|
+
|
|
389
|
+
- **webhook_url** _string_
|
|
390
|
+
|
|
391
|
+
URL to receive webhook notifications for async Kontext requests.
|
|
392
|
+
|
|
393
|
+
- **webhook_secret** _string_
|
|
394
|
+
|
|
395
|
+
Secret for webhook signature verification.
|
|
396
|
+
|
|
397
|
+
- **cfg_scale** _number_
|
|
398
|
+
|
|
399
|
+
Guidance scale for legacy `image_generation` models.
|
|
400
|
+
|
|
401
|
+
- **steps** _number_
|
|
402
|
+
|
|
403
|
+
Number of generation steps for legacy `image_generation` models.
|
|
404
|
+
|
|
371
405
|
### Image Editing
|
|
372
406
|
|
|
373
407
|
Fireworks supports image editing through FLUX Kontext models (`flux-kontext-pro` and `flux-kontext-max`). Pass input images via `prompt.images` to transform or edit existing images.
|
|
@@ -393,7 +427,8 @@ const { images } = await generateImage({
|
|
|
393
427
|
providerOptions: {
|
|
394
428
|
fireworks: {
|
|
395
429
|
output_format: 'jpeg',
|
|
396
|
-
|
|
430
|
+
safety_tolerance: 2,
|
|
431
|
+
} satisfies FireworksImageModelOptions,
|
|
397
432
|
},
|
|
398
433
|
});
|
|
399
434
|
```
|
|
@@ -431,17 +466,17 @@ For all models supporting size, the following sizes are supported:
|
|
|
431
466
|
|
|
432
467
|
`640 x 1536, 768 x 1344, 832 x 1216, 896 x 1152, 1024x1024 (default), 1152 x 896, 1216 x 832, 1344 x 768, 1536 x 640`
|
|
433
468
|
|
|
434
|
-
| Model | Dimensions Specification | Image Editing
|
|
435
|
-
| ------------------------------------------------------------ | ------------------------ |
|
|
436
|
-
| `accounts/fireworks/models/flux-kontext-pro` | Aspect Ratio | <Check
|
|
437
|
-
| `accounts/fireworks/models/flux-kontext-max` | Aspect Ratio | <Check
|
|
438
|
-
| `accounts/fireworks/models/flux-1-dev-fp8` | Aspect Ratio | <Cross
|
|
439
|
-
| `accounts/fireworks/models/flux-1-schnell-fp8` | Aspect Ratio | <Cross
|
|
440
|
-
| `accounts/fireworks/models/playground-v2-5-1024px-aesthetic` | Size | <Cross
|
|
441
|
-
| `accounts/fireworks/models/japanese-stable-diffusion-xl` | Size | <Cross
|
|
442
|
-
| `accounts/fireworks/models/playground-v2-1024px-aesthetic` | Size | <Cross
|
|
443
|
-
| `accounts/fireworks/models/SSD-1B` | Size | <Cross
|
|
444
|
-
| `accounts/fireworks/models/stable-diffusion-xl-1024-v1-0` | Size | <Cross
|
|
469
|
+
| Model | Dimensions Specification | Image Editing |
|
|
470
|
+
| ------------------------------------------------------------ | ------------------------ | ------------- |
|
|
471
|
+
| `accounts/fireworks/models/flux-kontext-pro` | Aspect Ratio | <Check /> |
|
|
472
|
+
| `accounts/fireworks/models/flux-kontext-max` | Aspect Ratio | <Check /> |
|
|
473
|
+
| `accounts/fireworks/models/flux-1-dev-fp8` | Aspect Ratio | <Cross /> |
|
|
474
|
+
| `accounts/fireworks/models/flux-1-schnell-fp8` | Aspect Ratio | <Cross /> |
|
|
475
|
+
| `accounts/fireworks/models/playground-v2-5-1024px-aesthetic` | Size | <Cross /> |
|
|
476
|
+
| `accounts/fireworks/models/japanese-stable-diffusion-xl` | Size | <Cross /> |
|
|
477
|
+
| `accounts/fireworks/models/playground-v2-1024px-aesthetic` | Size | <Cross /> |
|
|
478
|
+
| `accounts/fireworks/models/SSD-1B` | Size | <Cross /> |
|
|
479
|
+
| `accounts/fireworks/models/stable-diffusion-xl-1024-v1-0` | Size | <Cross /> |
|
|
445
480
|
|
|
446
481
|
For more details, see the [Fireworks models page](https://fireworks.ai/models).
|
|
447
482
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/fireworks",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@ai-sdk/openai-compatible": "3.0.
|
|
33
|
-
"@ai-sdk/provider": "4.0.
|
|
34
|
-
"@ai-sdk/provider-utils": "5.0.
|
|
32
|
+
"@ai-sdk/openai-compatible": "3.0.7",
|
|
33
|
+
"@ai-sdk/provider": "4.0.3",
|
|
34
|
+
"@ai-sdk/provider-utils": "5.0.7"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/node": "22.19.19",
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import {
|
|
2
|
+
lazySchema,
|
|
3
|
+
zodSchema,
|
|
4
|
+
type InferSchema,
|
|
5
|
+
} from '@ai-sdk/provider-utils';
|
|
6
|
+
import { z } from 'zod/v4';
|
|
7
|
+
|
|
8
|
+
export const fireworksImageModelOptionsSchema = lazySchema(() =>
|
|
9
|
+
zodSchema(
|
|
10
|
+
z.looseObject({
|
|
11
|
+
/**
|
|
12
|
+
* Classifier-free guidance scale for the image diffusion process.
|
|
13
|
+
*/
|
|
14
|
+
guidance_scale: z.number().optional(),
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Number of denoising steps for the image generation process.
|
|
18
|
+
*/
|
|
19
|
+
num_inference_steps: z.number().int().optional(),
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Desired output image format.
|
|
23
|
+
*/
|
|
24
|
+
output_format: z.enum(['jpeg', 'png']).optional(),
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* URL to receive webhook notifications for async Kontext requests.
|
|
28
|
+
*/
|
|
29
|
+
webhook_url: z.string().optional(),
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Secret for webhook signature verification.
|
|
33
|
+
*/
|
|
34
|
+
webhook_secret: z.string().optional(),
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Whether Fireworks should automatically modify the prompt for more creative generation.
|
|
38
|
+
*/
|
|
39
|
+
prompt_upsampling: z.boolean().optional(),
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Moderation tolerance level for inputs and outputs.
|
|
43
|
+
*/
|
|
44
|
+
safety_tolerance: z.number().int().min(0).max(6).optional(),
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Guidance scale for legacy image_generation models.
|
|
48
|
+
*/
|
|
49
|
+
cfg_scale: z.number().optional(),
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Number of generation steps for legacy image_generation models.
|
|
53
|
+
*/
|
|
54
|
+
steps: z.number().int().optional(),
|
|
55
|
+
}),
|
|
56
|
+
),
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
export type FireworksImageModelOptions = InferSchema<
|
|
60
|
+
typeof fireworksImageModelOptionsSchema
|
|
61
|
+
>;
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
delay,
|
|
9
9
|
getFromApi,
|
|
10
10
|
isSameOrigin,
|
|
11
|
+
parseProviderOptions,
|
|
11
12
|
postJsonToApi,
|
|
12
13
|
serializeModelOptions,
|
|
13
14
|
WORKFLOW_SERIALIZE,
|
|
@@ -18,6 +19,7 @@ import {
|
|
|
18
19
|
asyncPollResponseSchema,
|
|
19
20
|
asyncSubmitResponseSchema,
|
|
20
21
|
} from './fireworks-image-api';
|
|
22
|
+
import { fireworksImageModelOptionsSchema } from './fireworks-image-model-options';
|
|
21
23
|
import type { FireworksImageModelId } from './fireworks-image-options';
|
|
22
24
|
|
|
23
25
|
const DEFAULT_POLL_INTERVAL_MILLIS = 500;
|
|
@@ -204,6 +206,12 @@ export class FireworksImageModel implements ImageModelV4 {
|
|
|
204
206
|
const splitSize = size?.split('x');
|
|
205
207
|
const currentDate = this.config._internal?.currentDate?.() ?? new Date();
|
|
206
208
|
const combinedHeaders = combineHeaders(this.config.headers?.(), headers);
|
|
209
|
+
const fireworksOptions =
|
|
210
|
+
(await parseProviderOptions({
|
|
211
|
+
provider: 'fireworks',
|
|
212
|
+
providerOptions,
|
|
213
|
+
schema: fireworksImageModelOptionsSchema,
|
|
214
|
+
})) ?? {};
|
|
207
215
|
|
|
208
216
|
const body = {
|
|
209
217
|
prompt,
|
|
@@ -212,7 +220,7 @@ export class FireworksImageModel implements ImageModelV4 {
|
|
|
212
220
|
samples: n,
|
|
213
221
|
...(inputImage && { input_image: inputImage }),
|
|
214
222
|
...(splitSize && { width: splitSize[0], height: splitSize[1] }),
|
|
215
|
-
...
|
|
223
|
+
...fireworksOptions,
|
|
216
224
|
};
|
|
217
225
|
|
|
218
226
|
// Handle async models that require polling (e.g., flux-kontext-*)
|
package/src/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ export type {
|
|
|
10
10
|
FireworksEmbeddingModelOptions as FireworksEmbeddingProviderOptions,
|
|
11
11
|
} from './fireworks-embedding-options';
|
|
12
12
|
export { FireworksImageModel } from './fireworks-image-model';
|
|
13
|
+
export type { FireworksImageModelOptions } from './fireworks-image-model-options';
|
|
13
14
|
export type { FireworksImageModelId } from './fireworks-image-options';
|
|
14
15
|
export { fireworks, createFireworks } from './fireworks-provider';
|
|
15
16
|
export type {
|