@ai-sdk/fireworks
Advanced tools
Comparing version 0.0.8 to 0.0.9
# @ai-sdk/fireworks | ||
## 0.0.9 | ||
### Patch Changes | ||
- 19a2ce7: feat (provider/fireworks): Add image model support. | ||
- 6337688: feat: change image generation errors to warnings | ||
- Updated dependencies [19a2ce7] | ||
- Updated dependencies [19a2ce7] | ||
- Updated dependencies [43b37f7] | ||
- Updated dependencies [6337688] | ||
- @ai-sdk/provider@1.0.4 | ||
- @ai-sdk/provider-utils@2.0.6 | ||
- @ai-sdk/openai-compatible@0.0.14 | ||
## 0.0.8 | ||
@@ -4,0 +18,0 @@ |
@@ -1,2 +0,2 @@ | ||
import { LanguageModelV1, EmbeddingModelV1 } from '@ai-sdk/provider'; | ||
import { LanguageModelV1, EmbeddingModelV1, ImageModelV1 } from '@ai-sdk/provider'; | ||
import { FetchFunction } from '@ai-sdk/provider-utils'; | ||
@@ -18,2 +18,4 @@ import { z } from 'zod'; | ||
type FireworksImageModelId = 'accounts/fireworks/models/flux-1-dev-fp8' | 'accounts/fireworks/models/flux-1-schnell-fp8' | (string & {}); | ||
type FireworksErrorData = z.infer<typeof fireworksErrorSchema>; | ||
@@ -63,2 +65,6 @@ declare const fireworksErrorSchema: z.ZodObject<{ | ||
textEmbeddingModel(modelId: FireworksEmbeddingModelId, settings?: FireworksEmbeddingSettings): EmbeddingModelV1<string>; | ||
/** | ||
Creates a model for image generation. | ||
*/ | ||
image(modelId: FireworksImageModelId): ImageModelV1; | ||
} | ||
@@ -65,0 +71,0 @@ declare function createFireworks(options?: FireworksProviderSettings): FireworksProvider; |
@@ -30,4 +30,107 @@ "use strict"; | ||
var import_openai_compatible = require("@ai-sdk/openai-compatible"); | ||
var import_provider_utils2 = require("@ai-sdk/provider-utils"); | ||
var import_zod = require("zod"); | ||
// src/fireworks-image-model.ts | ||
var import_provider = require("@ai-sdk/provider"); | ||
var import_provider_utils = require("@ai-sdk/provider-utils"); | ||
var import_zod = require("zod"); | ||
var createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => { | ||
const responseHeaders = (0, import_provider_utils.extractResponseHeaders)(response); | ||
if (!response.body) { | ||
throw new import_provider.APICallError({ | ||
message: "Response body is empty", | ||
url, | ||
requestBodyValues, | ||
statusCode: response.status, | ||
responseHeaders, | ||
responseBody: void 0 | ||
}); | ||
} | ||
try { | ||
const buffer = await response.arrayBuffer(); | ||
return { | ||
responseHeaders, | ||
value: buffer | ||
}; | ||
} catch (error) { | ||
throw new import_provider.APICallError({ | ||
message: "Failed to read response as array buffer", | ||
url, | ||
requestBodyValues, | ||
statusCode: response.status, | ||
responseHeaders, | ||
responseBody: void 0, | ||
cause: error | ||
}); | ||
} | ||
}; | ||
var statusCodeErrorResponseHandler = async ({ | ||
response, | ||
url, | ||
requestBodyValues | ||
}) => { | ||
const responseHeaders = (0, import_provider_utils.extractResponseHeaders)(response); | ||
const responseBody = await response.text(); | ||
return { | ||
responseHeaders, | ||
value: new import_provider.APICallError({ | ||
message: response.statusText, | ||
url, | ||
requestBodyValues, | ||
statusCode: response.status, | ||
responseHeaders, | ||
responseBody | ||
}) | ||
}; | ||
}; | ||
var FireworksImageModel = class { | ||
constructor(modelId, config) { | ||
this.modelId = modelId; | ||
this.config = config; | ||
this.specificationVersion = "v1"; | ||
this.maxImagesPerCall = 1; | ||
} | ||
get provider() { | ||
return this.config.provider; | ||
} | ||
async doGenerate({ | ||
prompt, | ||
n, | ||
size, | ||
aspectRatio, | ||
seed, | ||
providerOptions, | ||
headers, | ||
abortSignal | ||
}) { | ||
var _a; | ||
const warnings = []; | ||
if (size != null) { | ||
warnings.push({ | ||
type: "unsupported-setting", | ||
setting: "size", | ||
details: "This model does not support the `size` option. Use `aspectRatio` instead." | ||
}); | ||
} | ||
const url = `${this.config.baseURL}/workflows/${this.modelId}/text_to_image`; | ||
const body = { | ||
prompt, | ||
aspect_ratio: aspectRatio, | ||
seed, | ||
...(_a = providerOptions.fireworks) != null ? _a : {} | ||
}; | ||
const { value: response } = await (0, import_provider_utils.postJsonToApi)({ | ||
url, | ||
headers: (0, import_provider_utils.combineHeaders)(this.config.headers(), headers), | ||
body, | ||
failedResponseHandler: statusCodeErrorResponseHandler, | ||
successfulResponseHandler: createBinaryResponseHandler(), | ||
abortSignal, | ||
fetch: this.config.fetch | ||
}); | ||
return { images: [new Uint8Array(response)], warnings }; | ||
} | ||
}; | ||
// src/fireworks-provider.ts | ||
var fireworksErrorSchema = import_zod.z.object({ | ||
@@ -40,9 +143,8 @@ error: import_zod.z.string() | ||
}; | ||
var defaultBaseURL = "https://api.fireworks.ai/inference/v1"; | ||
function createFireworks(options = {}) { | ||
var _a; | ||
const baseURL = (0, import_provider_utils.withoutTrailingSlash)( | ||
(_a = options.baseURL) != null ? _a : "https://api.fireworks.ai/inference/v1" | ||
); | ||
const baseURL = (0, import_provider_utils2.withoutTrailingSlash)((_a = options.baseURL) != null ? _a : defaultBaseURL); | ||
const getHeaders = () => ({ | ||
Authorization: `Bearer ${(0, import_provider_utils.loadApiKey)({ | ||
Authorization: `Bearer ${(0, import_provider_utils2.loadApiKey)({ | ||
apiKey: options.apiKey, | ||
@@ -58,4 +160,3 @@ environmentVariableName: "FIREWORKS_API_KEY", | ||
headers: getHeaders, | ||
fetch: options.fetch, | ||
errorStructure: fireworksErrorStructure | ||
fetch: options.fetch | ||
}); | ||
@@ -65,15 +166,18 @@ const createChatModel = (modelId, settings = {}) => { | ||
...getCommonModelConfig("chat"), | ||
errorStructure: fireworksErrorStructure, | ||
defaultObjectGenerationMode: "json" | ||
}); | ||
}; | ||
const createCompletionModel = (modelId, settings = {}) => new import_openai_compatible.OpenAICompatibleCompletionLanguageModel( | ||
modelId, | ||
settings, | ||
getCommonModelConfig("completion") | ||
); | ||
const createTextEmbeddingModel = (modelId, settings = {}) => new import_openai_compatible.OpenAICompatibleEmbeddingModel( | ||
modelId, | ||
settings, | ||
getCommonModelConfig("embedding") | ||
); | ||
const createCompletionModel = (modelId, settings = {}) => new import_openai_compatible.OpenAICompatibleCompletionLanguageModel(modelId, settings, { | ||
...getCommonModelConfig("completion"), | ||
errorStructure: fireworksErrorStructure | ||
}); | ||
const createTextEmbeddingModel = (modelId, settings = {}) => new import_openai_compatible.OpenAICompatibleEmbeddingModel(modelId, settings, { | ||
...getCommonModelConfig("embedding"), | ||
errorStructure: fireworksErrorStructure | ||
}); | ||
const createImageModel = (modelId) => new FireworksImageModel(modelId, { | ||
...getCommonModelConfig("image"), | ||
baseURL: baseURL != null ? baseURL : defaultBaseURL | ||
}); | ||
const provider = (modelId, settings) => createChatModel(modelId, settings); | ||
@@ -83,2 +187,3 @@ provider.completionModel = createCompletionModel; | ||
provider.textEmbeddingModel = createTextEmbeddingModel; | ||
provider.image = createImageModel; | ||
return provider; | ||
@@ -85,0 +190,0 @@ } |
{ | ||
"name": "@ai-sdk/fireworks", | ||
"version": "0.0.8", | ||
"version": "0.0.9", | ||
"license": "Apache-2.0", | ||
@@ -22,5 +22,5 @@ "sideEffects": false, | ||
"dependencies": { | ||
"@ai-sdk/openai-compatible": "0.0.13", | ||
"@ai-sdk/provider": "1.0.3", | ||
"@ai-sdk/provider-utils": "2.0.5" | ||
"@ai-sdk/openai-compatible": "0.0.14", | ||
"@ai-sdk/provider": "1.0.4", | ||
"@ai-sdk/provider-utils": "2.0.6" | ||
}, | ||
@@ -27,0 +27,0 @@ "devDependencies": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
45968
429
+ Added@ai-sdk/openai-compatible@0.0.14(transitive)
+ Added@ai-sdk/provider@1.0.4(transitive)
+ Added@ai-sdk/provider-utils@2.0.6(transitive)
- Removed@ai-sdk/openai-compatible@0.0.13(transitive)
- Removed@ai-sdk/provider@1.0.3(transitive)
- Removed@ai-sdk/provider-utils@2.0.5(transitive)
Updated@ai-sdk/provider@1.0.4
Updated@ai-sdk/provider-utils@2.0.6