UNPKG

@ai-sdk/fireworks

Version:

The **[Fireworks provider](https://ai-sdk.dev/providers/ai-sdk-providers/fireworks)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model and image model support for the [Fireworks](https://fireworks.ai) platform.

245 lines (240 loc) 8.44 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var src_exports = {}; __export(src_exports, { FireworksImageModel: () => FireworksImageModel, VERSION: () => VERSION, createFireworks: () => createFireworks, fireworks: () => fireworks }); module.exports = __toCommonJS(src_exports); // src/fireworks-image-model.ts var import_provider_utils = require("@ai-sdk/provider-utils"); var modelToBackendConfig = { "accounts/fireworks/models/flux-1-dev-fp8": { urlFormat: "workflows" }, "accounts/fireworks/models/flux-1-schnell-fp8": { urlFormat: "workflows" }, "accounts/fireworks/models/flux-kontext-pro": { urlFormat: "workflows_edit", supportsEditing: true }, "accounts/fireworks/models/flux-kontext-max": { urlFormat: "workflows_edit", supportsEditing: true }, "accounts/fireworks/models/playground-v2-5-1024px-aesthetic": { urlFormat: "image_generation", supportsSize: true }, "accounts/fireworks/models/japanese-stable-diffusion-xl": { urlFormat: "image_generation", supportsSize: true }, "accounts/fireworks/models/playground-v2-1024px-aesthetic": { urlFormat: "image_generation", supportsSize: true }, "accounts/fireworks/models/stable-diffusion-xl-1024-v1-0": { urlFormat: "image_generation", supportsSize: true }, "accounts/fireworks/models/SSD-1B": { urlFormat: "image_generation", supportsSize: true } }; function getUrlForModel(baseUrl, modelId, hasInputImage) { const config = modelToBackendConfig[modelId]; switch (config == null ? void 0 : config.urlFormat) { case "image_generation": return `${baseUrl}/image_generation/${modelId}`; case "workflows_edit": return `${baseUrl}/workflows/${modelId}`; case "workflows": default: if (hasInputImage && (config == null ? void 0 : config.supportsEditing)) { return `${baseUrl}/workflows/${modelId}`; } return `${baseUrl}/workflows/${modelId}/text_to_image`; } } var FireworksImageModel = class { constructor(modelId, config) { this.modelId = modelId; this.config = config; this.specificationVersion = "v3"; this.maxImagesPerCall = 1; } get provider() { return this.config.provider; } async doGenerate({ prompt, n, size, aspectRatio, seed, providerOptions, headers, abortSignal, files, mask }) { var _a, _b, _c, _d; const warnings = []; const backendConfig = modelToBackendConfig[this.modelId]; if (!(backendConfig == null ? void 0 : backendConfig.supportsSize) && size != null) { warnings.push({ type: "unsupported", feature: "size", details: "This model does not support the `size` option. Use `aspectRatio` instead." }); } if ((backendConfig == null ? void 0 : backendConfig.supportsSize) && aspectRatio != null) { warnings.push({ type: "unsupported", feature: "aspectRatio", details: "This model does not support the `aspectRatio` option." }); } const hasInputImage = files != null && files.length > 0; let inputImage; if (hasInputImage) { inputImage = (0, import_provider_utils.convertImageModelFileToDataUri)(files[0]); if (files.length > 1) { warnings.push({ type: "other", message: "Fireworks only supports a single input image. Additional images are ignored." }); } } if (mask != null) { warnings.push({ type: "unsupported", feature: "mask", details: "Fireworks Kontext models do not support explicit masks. Use the prompt to describe the areas to edit." }); } const splitSize = size == null ? void 0 : size.split("x"); const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date(); const { value: response, responseHeaders } = await (0, import_provider_utils.postJsonToApi)({ url: getUrlForModel(this.config.baseURL, this.modelId, hasInputImage), headers: (0, import_provider_utils.combineHeaders)(this.config.headers(), headers), body: { prompt, aspect_ratio: aspectRatio, seed, samples: n, ...inputImage && { input_image: inputImage }, ...splitSize && { width: splitSize[0], height: splitSize[1] }, ...(_d = providerOptions.fireworks) != null ? _d : {} }, failedResponseHandler: (0, import_provider_utils.createStatusCodeErrorResponseHandler)(), successfulResponseHandler: (0, import_provider_utils.createBinaryResponseHandler)(), abortSignal, fetch: this.config.fetch }); return { images: [response], warnings, response: { timestamp: currentDate, modelId: this.modelId, headers: responseHeaders } }; } }; // src/fireworks-provider.ts var import_openai_compatible = require("@ai-sdk/openai-compatible"); var import_provider_utils2 = require("@ai-sdk/provider-utils"); var import_v4 = require("zod/v4"); // src/version.ts var VERSION = true ? "2.0.13" : "0.0.0-test"; // src/fireworks-provider.ts var fireworksErrorSchema = import_v4.z.object({ error: import_v4.z.string() }); var fireworksErrorStructure = { errorSchema: fireworksErrorSchema, errorToMessage: (data) => data.error }; var defaultBaseURL = "https://api.fireworks.ai/inference/v1"; function createFireworks(options = {}) { var _a; const baseURL = (0, import_provider_utils2.withoutTrailingSlash)((_a = options.baseURL) != null ? _a : defaultBaseURL); const getHeaders = () => (0, import_provider_utils2.withUserAgentSuffix)( { Authorization: `Bearer ${(0, import_provider_utils2.loadApiKey)({ apiKey: options.apiKey, environmentVariableName: "FIREWORKS_API_KEY", description: "Fireworks API key" })}`, ...options.headers }, `ai-sdk/fireworks/${VERSION}` ); const getCommonModelConfig = (modelType) => ({ provider: `fireworks.${modelType}`, url: ({ path }) => `${baseURL}${path}`, headers: getHeaders, fetch: options.fetch }); const createChatModel = (modelId) => { return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId, { ...getCommonModelConfig("chat"), errorStructure: fireworksErrorStructure }); }; const createCompletionModel = (modelId) => new import_openai_compatible.OpenAICompatibleCompletionLanguageModel(modelId, { ...getCommonModelConfig("completion"), errorStructure: fireworksErrorStructure }); const createEmbeddingModel = (modelId) => new import_openai_compatible.OpenAICompatibleEmbeddingModel(modelId, { ...getCommonModelConfig("embedding"), errorStructure: fireworksErrorStructure }); const createImageModel = (modelId) => new FireworksImageModel(modelId, { ...getCommonModelConfig("image"), baseURL: baseURL != null ? baseURL : defaultBaseURL }); const provider = (modelId) => createChatModel(modelId); provider.specificationVersion = "v3"; provider.completionModel = createCompletionModel; provider.chatModel = createChatModel; provider.languageModel = createChatModel; provider.embeddingModel = createEmbeddingModel; provider.textEmbeddingModel = createEmbeddingModel; provider.image = createImageModel; provider.imageModel = createImageModel; return provider; } var fireworks = createFireworks(); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { FireworksImageModel, VERSION, createFireworks, fireworks }); //# sourceMappingURL=index.js.map