@ai-sdk/replicate 2.0.0-beta.53 → 2.0.0-beta.55
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 +22 -0
- package/README.md +1 -1
- package/dist/index.d.mts +25 -5
- package/dist/index.d.ts +25 -5
- package/dist/index.js +102 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +107 -9
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @ai-sdk/replicate
|
|
2
2
|
|
|
3
|
+
## 2.0.0-beta.55
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 9061dc0: feat: image editing
|
|
8
|
+
- Updated dependencies [9061dc0]
|
|
9
|
+
- @ai-sdk/provider-utils@4.0.0-beta.54
|
|
10
|
+
- @ai-sdk/provider@3.0.0-beta.28
|
|
11
|
+
|
|
12
|
+
## 2.0.0-beta.54
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- d0920f9: feat(replicate): add configurable maxWaitTimeInSeconds option for image generation
|
|
17
|
+
|
|
18
|
+
Added `maxWaitTimeInSeconds` provider option to control sync wait duration for Replicate image predictions:
|
|
19
|
+
|
|
20
|
+
- When not specified: Uses default 60-second sync wait (`prefer: wait`)
|
|
21
|
+
- When set to a positive number: Uses that duration (`prefer: wait=N`)
|
|
22
|
+
|
|
23
|
+
This allows longer predictions to complete by extending the sync timeout beyond the default 60 seconds.
|
|
24
|
+
|
|
3
25
|
## 2.0.0-beta.53
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ npm i @ai-sdk/replicate
|
|
|
14
14
|
|
|
15
15
|
```ts
|
|
16
16
|
import { replicate } from '@ai-sdk/replicate';
|
|
17
|
-
import {
|
|
17
|
+
import { generateImage } from 'ai';
|
|
18
18
|
|
|
19
19
|
const { image } = await generateImage({
|
|
20
20
|
model: replicate.image('black-forest-labs/flux-schnell'),
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ImageModelV3, ProviderV3 } from '@ai-sdk/provider';
|
|
2
|
-
import
|
|
2
|
+
import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
|
|
3
|
+
import { Resolvable, FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
|
|
3
4
|
|
|
4
|
-
type ReplicateImageModelId = 'black-forest-labs/flux-1.1-pro' | 'black-forest-labs/flux-1.1-pro-ultra' | 'black-forest-labs/flux-dev' | 'black-forest-labs/flux-pro' | 'black-forest-labs/flux-schnell' | 'bytedance/sdxl-lightning-4step' | 'fofr/aura-flow' | 'fofr/latent-consistency-model' | 'fofr/realvisxl-v3-multi-controlnet-lora' | 'fofr/sdxl-emoji' | 'fofr/sdxl-multi-controlnet-lora' | 'ideogram-ai/ideogram-v2' | 'ideogram-ai/ideogram-v2-turbo' | 'lucataco/dreamshaper-xl-turbo' | 'lucataco/open-dalle-v1.1' | 'lucataco/realvisxl-v2.0' | 'lucataco/realvisxl2-lcm' | 'luma/photon' | 'luma/photon-flash' | 'nvidia/sana' | 'playgroundai/playground-v2.5-1024px-aesthetic' | 'recraft-ai/recraft-v3' | 'recraft-ai/recraft-v3-svg' | 'stability-ai/stable-diffusion-3.5-large' | 'stability-ai/stable-diffusion-3.5-large-turbo' | 'stability-ai/stable-diffusion-3.5-medium' | 'tstramer/material-diffusion' | (string & {});
|
|
5
|
+
type ReplicateImageModelId = 'black-forest-labs/flux-1.1-pro' | 'black-forest-labs/flux-1.1-pro-ultra' | 'black-forest-labs/flux-dev' | 'black-forest-labs/flux-pro' | 'black-forest-labs/flux-schnell' | 'bytedance/sdxl-lightning-4step' | 'fofr/aura-flow' | 'fofr/latent-consistency-model' | 'fofr/realvisxl-v3-multi-controlnet-lora' | 'fofr/sdxl-emoji' | 'fofr/sdxl-multi-controlnet-lora' | 'ideogram-ai/ideogram-v2' | 'ideogram-ai/ideogram-v2-turbo' | 'lucataco/dreamshaper-xl-turbo' | 'lucataco/open-dalle-v1.1' | 'lucataco/realvisxl-v2.0' | 'lucataco/realvisxl2-lcm' | 'luma/photon' | 'luma/photon-flash' | 'nvidia/sana' | 'playgroundai/playground-v2.5-1024px-aesthetic' | 'recraft-ai/recraft-v3' | 'recraft-ai/recraft-v3-svg' | 'stability-ai/stable-diffusion-3.5-large' | 'stability-ai/stable-diffusion-3.5-large-turbo' | 'stability-ai/stable-diffusion-3.5-medium' | 'tstramer/material-diffusion' | 'black-forest-labs/flux-fill-pro' | 'black-forest-labs/flux-fill-dev' | 'black-forest-labs/flux-2-pro' | 'black-forest-labs/flux-2-dev' | (string & {});
|
|
5
6
|
|
|
6
7
|
interface ReplicateImageModelConfig {
|
|
7
8
|
provider: string;
|
|
@@ -16,11 +17,30 @@ declare class ReplicateImageModel implements ImageModelV3 {
|
|
|
16
17
|
readonly modelId: ReplicateImageModelId;
|
|
17
18
|
private readonly config;
|
|
18
19
|
readonly specificationVersion = "v3";
|
|
19
|
-
|
|
20
|
+
get maxImagesPerCall(): number;
|
|
20
21
|
get provider(): string;
|
|
22
|
+
private get isFlux2Model();
|
|
21
23
|
constructor(modelId: ReplicateImageModelId, config: ReplicateImageModelConfig);
|
|
22
|
-
doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>>;
|
|
24
|
+
doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, files, mask, }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>>;
|
|
23
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Provider options schema for Replicate image generation.
|
|
28
|
+
*
|
|
29
|
+
* Note: Different Replicate models support different parameters.
|
|
30
|
+
* This schema includes common parameters, but you can pass any
|
|
31
|
+
* model-specific parameters through the passthrough.
|
|
32
|
+
*/
|
|
33
|
+
declare const replicateImageProviderOptionsSchema: _ai_sdk_provider_utils.LazySchema<{
|
|
34
|
+
[x: string]: unknown;
|
|
35
|
+
maxWaitTimeInSeconds?: number | null | undefined;
|
|
36
|
+
guidance_scale?: number | null | undefined;
|
|
37
|
+
num_inference_steps?: number | null | undefined;
|
|
38
|
+
negative_prompt?: string | null | undefined;
|
|
39
|
+
output_format?: "png" | "jpg" | "webp" | null | undefined;
|
|
40
|
+
output_quality?: number | null | undefined;
|
|
41
|
+
strength?: number | null | undefined;
|
|
42
|
+
}>;
|
|
43
|
+
type ReplicateImageProviderOptions = InferSchema<typeof replicateImageProviderOptionsSchema>;
|
|
24
44
|
|
|
25
45
|
interface ReplicateProviderSettings {
|
|
26
46
|
/**
|
|
@@ -68,4 +88,4 @@ declare const replicate: ReplicateProvider;
|
|
|
68
88
|
|
|
69
89
|
declare const VERSION: string;
|
|
70
90
|
|
|
71
|
-
export { type ReplicateProvider, type ReplicateProviderSettings, VERSION, createReplicate, replicate };
|
|
91
|
+
export { type ReplicateImageProviderOptions, type ReplicateProvider, type ReplicateProviderSettings, VERSION, createReplicate, replicate };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ImageModelV3, ProviderV3 } from '@ai-sdk/provider';
|
|
2
|
-
import
|
|
2
|
+
import * as _ai_sdk_provider_utils from '@ai-sdk/provider-utils';
|
|
3
|
+
import { Resolvable, FetchFunction, InferSchema } from '@ai-sdk/provider-utils';
|
|
3
4
|
|
|
4
|
-
type ReplicateImageModelId = 'black-forest-labs/flux-1.1-pro' | 'black-forest-labs/flux-1.1-pro-ultra' | 'black-forest-labs/flux-dev' | 'black-forest-labs/flux-pro' | 'black-forest-labs/flux-schnell' | 'bytedance/sdxl-lightning-4step' | 'fofr/aura-flow' | 'fofr/latent-consistency-model' | 'fofr/realvisxl-v3-multi-controlnet-lora' | 'fofr/sdxl-emoji' | 'fofr/sdxl-multi-controlnet-lora' | 'ideogram-ai/ideogram-v2' | 'ideogram-ai/ideogram-v2-turbo' | 'lucataco/dreamshaper-xl-turbo' | 'lucataco/open-dalle-v1.1' | 'lucataco/realvisxl-v2.0' | 'lucataco/realvisxl2-lcm' | 'luma/photon' | 'luma/photon-flash' | 'nvidia/sana' | 'playgroundai/playground-v2.5-1024px-aesthetic' | 'recraft-ai/recraft-v3' | 'recraft-ai/recraft-v3-svg' | 'stability-ai/stable-diffusion-3.5-large' | 'stability-ai/stable-diffusion-3.5-large-turbo' | 'stability-ai/stable-diffusion-3.5-medium' | 'tstramer/material-diffusion' | (string & {});
|
|
5
|
+
type ReplicateImageModelId = 'black-forest-labs/flux-1.1-pro' | 'black-forest-labs/flux-1.1-pro-ultra' | 'black-forest-labs/flux-dev' | 'black-forest-labs/flux-pro' | 'black-forest-labs/flux-schnell' | 'bytedance/sdxl-lightning-4step' | 'fofr/aura-flow' | 'fofr/latent-consistency-model' | 'fofr/realvisxl-v3-multi-controlnet-lora' | 'fofr/sdxl-emoji' | 'fofr/sdxl-multi-controlnet-lora' | 'ideogram-ai/ideogram-v2' | 'ideogram-ai/ideogram-v2-turbo' | 'lucataco/dreamshaper-xl-turbo' | 'lucataco/open-dalle-v1.1' | 'lucataco/realvisxl-v2.0' | 'lucataco/realvisxl2-lcm' | 'luma/photon' | 'luma/photon-flash' | 'nvidia/sana' | 'playgroundai/playground-v2.5-1024px-aesthetic' | 'recraft-ai/recraft-v3' | 'recraft-ai/recraft-v3-svg' | 'stability-ai/stable-diffusion-3.5-large' | 'stability-ai/stable-diffusion-3.5-large-turbo' | 'stability-ai/stable-diffusion-3.5-medium' | 'tstramer/material-diffusion' | 'black-forest-labs/flux-fill-pro' | 'black-forest-labs/flux-fill-dev' | 'black-forest-labs/flux-2-pro' | 'black-forest-labs/flux-2-dev' | (string & {});
|
|
5
6
|
|
|
6
7
|
interface ReplicateImageModelConfig {
|
|
7
8
|
provider: string;
|
|
@@ -16,11 +17,30 @@ declare class ReplicateImageModel implements ImageModelV3 {
|
|
|
16
17
|
readonly modelId: ReplicateImageModelId;
|
|
17
18
|
private readonly config;
|
|
18
19
|
readonly specificationVersion = "v3";
|
|
19
|
-
|
|
20
|
+
get maxImagesPerCall(): number;
|
|
20
21
|
get provider(): string;
|
|
22
|
+
private get isFlux2Model();
|
|
21
23
|
constructor(modelId: ReplicateImageModelId, config: ReplicateImageModelConfig);
|
|
22
|
-
doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>>;
|
|
24
|
+
doGenerate({ prompt, n, aspectRatio, size, seed, providerOptions, headers, abortSignal, files, mask, }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>>;
|
|
23
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Provider options schema for Replicate image generation.
|
|
28
|
+
*
|
|
29
|
+
* Note: Different Replicate models support different parameters.
|
|
30
|
+
* This schema includes common parameters, but you can pass any
|
|
31
|
+
* model-specific parameters through the passthrough.
|
|
32
|
+
*/
|
|
33
|
+
declare const replicateImageProviderOptionsSchema: _ai_sdk_provider_utils.LazySchema<{
|
|
34
|
+
[x: string]: unknown;
|
|
35
|
+
maxWaitTimeInSeconds?: number | null | undefined;
|
|
36
|
+
guidance_scale?: number | null | undefined;
|
|
37
|
+
num_inference_steps?: number | null | undefined;
|
|
38
|
+
negative_prompt?: string | null | undefined;
|
|
39
|
+
output_format?: "png" | "jpg" | "webp" | null | undefined;
|
|
40
|
+
output_quality?: number | null | undefined;
|
|
41
|
+
strength?: number | null | undefined;
|
|
42
|
+
}>;
|
|
43
|
+
type ReplicateImageProviderOptions = InferSchema<typeof replicateImageProviderOptionsSchema>;
|
|
24
44
|
|
|
25
45
|
interface ReplicateProviderSettings {
|
|
26
46
|
/**
|
|
@@ -68,4 +88,4 @@ declare const replicate: ReplicateProvider;
|
|
|
68
88
|
|
|
69
89
|
declare const VERSION: string;
|
|
70
90
|
|
|
71
|
-
export { type ReplicateProvider, type ReplicateProviderSettings, VERSION, createReplicate, replicate };
|
|
91
|
+
export { type ReplicateImageProviderOptions, type ReplicateProvider, type ReplicateProviderSettings, VERSION, createReplicate, replicate };
|
package/dist/index.js
CHANGED
|
@@ -50,16 +50,23 @@ var replicateFailedResponseHandler = (0, import_provider_utils.createJsonErrorRe
|
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
// src/replicate-image-model.ts
|
|
53
|
+
var FLUX_2_MODEL_PATTERN = /^black-forest-labs\/flux-2-/;
|
|
54
|
+
var MAX_FLUX_2_INPUT_IMAGES = 8;
|
|
53
55
|
var ReplicateImageModel = class {
|
|
54
56
|
constructor(modelId, config) {
|
|
55
57
|
this.modelId = modelId;
|
|
56
58
|
this.config = config;
|
|
57
59
|
this.specificationVersion = "v3";
|
|
58
|
-
|
|
60
|
+
}
|
|
61
|
+
get maxImagesPerCall() {
|
|
62
|
+
return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;
|
|
59
63
|
}
|
|
60
64
|
get provider() {
|
|
61
65
|
return this.config.provider;
|
|
62
66
|
}
|
|
67
|
+
get isFlux2Model() {
|
|
68
|
+
return FLUX_2_MODEL_PATTERN.test(this.modelId);
|
|
69
|
+
}
|
|
63
70
|
async doGenerate({
|
|
64
71
|
prompt,
|
|
65
72
|
n,
|
|
@@ -68,12 +75,55 @@ var ReplicateImageModel = class {
|
|
|
68
75
|
seed,
|
|
69
76
|
providerOptions,
|
|
70
77
|
headers,
|
|
71
|
-
abortSignal
|
|
78
|
+
abortSignal,
|
|
79
|
+
files,
|
|
80
|
+
mask
|
|
72
81
|
}) {
|
|
73
|
-
var _a, _b, _c
|
|
82
|
+
var _a, _b, _c;
|
|
74
83
|
const warnings = [];
|
|
75
84
|
const [modelId, version] = this.modelId.split(":");
|
|
76
85
|
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
86
|
+
const replicateOptions = await (0, import_provider_utils2.parseProviderOptions)({
|
|
87
|
+
provider: "replicate",
|
|
88
|
+
providerOptions,
|
|
89
|
+
schema: replicateImageProviderOptionsSchema
|
|
90
|
+
});
|
|
91
|
+
let imageInputs = {};
|
|
92
|
+
if (files != null && files.length > 0) {
|
|
93
|
+
if (this.isFlux2Model) {
|
|
94
|
+
for (let i = 0; i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES); i++) {
|
|
95
|
+
const key = i === 0 ? "input_image" : `input_image_${i + 1}`;
|
|
96
|
+
imageInputs[key] = (0, import_provider_utils2.convertImageModelFileToDataUri)(files[i]);
|
|
97
|
+
}
|
|
98
|
+
if (files.length > MAX_FLUX_2_INPUT_IMAGES) {
|
|
99
|
+
warnings.push({
|
|
100
|
+
type: "other",
|
|
101
|
+
message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
imageInputs = { image: (0, import_provider_utils2.convertImageModelFileToDataUri)(files[0]) };
|
|
106
|
+
if (files.length > 1) {
|
|
107
|
+
warnings.push({
|
|
108
|
+
type: "other",
|
|
109
|
+
message: "This Replicate model only supports a single input image. Additional images are ignored."
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
let maskInput;
|
|
115
|
+
if (mask != null) {
|
|
116
|
+
if (this.isFlux2Model) {
|
|
117
|
+
warnings.push({
|
|
118
|
+
type: "other",
|
|
119
|
+
message: "Flux-2 models do not support mask input. The mask will be ignored."
|
|
120
|
+
});
|
|
121
|
+
} else {
|
|
122
|
+
maskInput = (0, import_provider_utils2.convertImageModelFileToDataUri)(mask);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions != null ? replicateOptions : {};
|
|
126
|
+
const preferHeader = maxWaitTimeInSeconds != null ? { prefer: `wait=${maxWaitTimeInSeconds}` } : { prefer: "wait" };
|
|
77
127
|
const {
|
|
78
128
|
value: { output },
|
|
79
129
|
responseHeaders
|
|
@@ -82,9 +132,11 @@ var ReplicateImageModel = class {
|
|
|
82
132
|
// different endpoints for versioned vs unversioned models:
|
|
83
133
|
version != null ? `${this.config.baseURL}/predictions` : `${this.config.baseURL}/models/${modelId}/predictions`
|
|
84
134
|
),
|
|
85
|
-
headers: (0, import_provider_utils2.combineHeaders)(
|
|
86
|
-
|
|
87
|
-
|
|
135
|
+
headers: (0, import_provider_utils2.combineHeaders)(
|
|
136
|
+
await (0, import_provider_utils2.resolve)(this.config.headers),
|
|
137
|
+
headers,
|
|
138
|
+
preferHeader
|
|
139
|
+
),
|
|
88
140
|
body: {
|
|
89
141
|
input: {
|
|
90
142
|
prompt,
|
|
@@ -92,7 +144,9 @@ var ReplicateImageModel = class {
|
|
|
92
144
|
size,
|
|
93
145
|
seed,
|
|
94
146
|
num_outputs: n,
|
|
95
|
-
...
|
|
147
|
+
...imageInputs,
|
|
148
|
+
...maskInput != null ? { mask: maskInput } : {},
|
|
149
|
+
...inputOptions
|
|
96
150
|
},
|
|
97
151
|
// for versioned models, include the version in the body:
|
|
98
152
|
...version != null ? { version } : {}
|
|
@@ -131,9 +185,49 @@ var ReplicateImageModel = class {
|
|
|
131
185
|
var replicateImageResponseSchema = import_v42.z.object({
|
|
132
186
|
output: import_v42.z.union([import_v42.z.array(import_v42.z.string()), import_v42.z.string()])
|
|
133
187
|
});
|
|
188
|
+
var replicateImageProviderOptionsSchema = (0, import_provider_utils2.lazySchema)(
|
|
189
|
+
() => (0, import_provider_utils2.zodSchema)(
|
|
190
|
+
import_v42.z.object({
|
|
191
|
+
/**
|
|
192
|
+
* Maximum time in seconds to wait for the prediction to complete in sync mode.
|
|
193
|
+
* By default, Replicate uses sync mode with a 60-second timeout.
|
|
194
|
+
*
|
|
195
|
+
* - When not specified: Uses default 60-second sync wait (`prefer: wait`)
|
|
196
|
+
* - When set to a positive number: Uses that duration (`prefer: wait=N`)
|
|
197
|
+
*/
|
|
198
|
+
maxWaitTimeInSeconds: import_v42.z.number().positive().nullish(),
|
|
199
|
+
/**
|
|
200
|
+
* Guidance scale for classifier-free guidance.
|
|
201
|
+
* Higher values make the output more closely match the prompt.
|
|
202
|
+
*/
|
|
203
|
+
guidance_scale: import_v42.z.number().nullish(),
|
|
204
|
+
/**
|
|
205
|
+
* Number of denoising steps. More steps = higher quality but slower.
|
|
206
|
+
*/
|
|
207
|
+
num_inference_steps: import_v42.z.number().nullish(),
|
|
208
|
+
/**
|
|
209
|
+
* Negative prompt to guide what to avoid in the generation.
|
|
210
|
+
*/
|
|
211
|
+
negative_prompt: import_v42.z.string().nullish(),
|
|
212
|
+
/**
|
|
213
|
+
* Output image format.
|
|
214
|
+
*/
|
|
215
|
+
output_format: import_v42.z.enum(["png", "jpg", "webp"]).nullish(),
|
|
216
|
+
/**
|
|
217
|
+
* Output image quality (1-100). Only applies to jpg and webp.
|
|
218
|
+
*/
|
|
219
|
+
output_quality: import_v42.z.number().min(1).max(100).nullish(),
|
|
220
|
+
/**
|
|
221
|
+
* Strength of the transformation for img2img (0-1).
|
|
222
|
+
* Lower values keep more of the original image.
|
|
223
|
+
*/
|
|
224
|
+
strength: import_v42.z.number().min(0).max(1).nullish()
|
|
225
|
+
}).passthrough()
|
|
226
|
+
)
|
|
227
|
+
);
|
|
134
228
|
|
|
135
229
|
// src/version.ts
|
|
136
|
-
var VERSION = true ? "2.0.0-beta.
|
|
230
|
+
var VERSION = true ? "2.0.0-beta.55" : "0.0.0-test";
|
|
137
231
|
|
|
138
232
|
// src/replicate-provider.ts
|
|
139
233
|
function createReplicate(options = {}) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/version.ts"],"sourcesContent":["export { createReplicate, replicate } from './replicate-provider';\nexport type {\n ReplicateProvider,\n ReplicateProviderSettings,\n} from './replicate-provider';\nexport { VERSION } from './version';\n","import { NoSuchModelError, ProviderV3 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV3 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n ),\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v3' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n FetchFunction,\n combineHeaders,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ReplicateImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(await resolve(this.config.headers), headers, {\n prefer: 'wait',\n }),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...(providerOptions.replicate ?? {}),\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\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":["import_provider_utils","import_provider_utils","import_v4"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/version.ts"],"sourcesContent":["export { createReplicate, replicate } from './replicate-provider';\nexport type {\n ReplicateProvider,\n ReplicateProviderSettings,\n} from './replicate-provider';\nexport type { ReplicateImageProviderOptions } from './replicate-image-model';\nexport { VERSION } from './version';\n","import { NoSuchModelError, ProviderV3 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV3 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n ),\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v3' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Flux-2 models support up to 8 input images with input_image, input_image_2, etc.\nconst FLUX_2_MODEL_PATTERN = /^black-forest-labs\\/flux-2-/;\nconst MAX_FLUX_2_INPUT_IMAGES = 8;\n\nexport class ReplicateImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n\n get maxImagesPerCall(): number {\n // Flux-2 models support up to 8 input images\n return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get isFlux2Model(): boolean {\n return FLUX_2_MODEL_PATTERN.test(this.modelId);\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n // Parse provider options\n const replicateOptions = await parseProviderOptions({\n provider: 'replicate',\n providerOptions,\n schema: replicateImageProviderOptionsSchema,\n });\n\n // Handle image input from files\n let imageInputs: Record<string, string> = {};\n if (files != null && files.length > 0) {\n if (this.isFlux2Model) {\n // Flux-2 models use input_image, input_image_2, input_image_3, etc.\n for (\n let i = 0;\n i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES);\n i++\n ) {\n const key = i === 0 ? 'input_image' : `input_image_${i + 1}`;\n imageInputs[key] = convertImageModelFileToDataUri(files[i]);\n }\n if (files.length > MAX_FLUX_2_INPUT_IMAGES) {\n warnings.push({\n type: 'other',\n message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`,\n });\n }\n } else {\n // Other models use single 'image' parameter\n imageInputs = { image: convertImageModelFileToDataUri(files[0]) };\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'This Replicate model only supports a single input image. Additional images are ignored.',\n });\n }\n }\n }\n\n // Handle mask input (not supported by Flux-2 models)\n let maskInput: string | undefined;\n if (mask != null) {\n if (this.isFlux2Model) {\n warnings.push({\n type: 'other',\n message:\n 'Flux-2 models do not support mask input. The mask will be ignored.',\n });\n } else {\n maskInput = convertImageModelFileToDataUri(mask);\n }\n }\n\n // Extract maxWaitTimeInSeconds from provider options and prepare the rest for the request body\n const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions ?? {};\n\n // Build the prefer header based on maxWaitTimeInSeconds:\n // - undefined/null: use default sync wait (prefer: wait)\n // - positive number: use custom wait duration (prefer: wait=N)\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(\n await resolve(this.config.headers),\n headers,\n preferHeader,\n ),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...imageInputs,\n ...(maskInput != null ? { mask: maskInput } : {}),\n ...inputOptions,\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n\n/**\n * Provider options schema for Replicate image generation.\n *\n * Note: Different Replicate models support different parameters.\n * This schema includes common parameters, but you can pass any\n * model-specific parameters through the passthrough.\n */\nexport const replicateImageProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n /**\n * Maximum time in seconds to wait for the prediction to complete in sync mode.\n * By default, Replicate uses sync mode with a 60-second timeout.\n *\n * - When not specified: Uses default 60-second sync wait (`prefer: wait`)\n * - When set to a positive number: Uses that duration (`prefer: wait=N`)\n */\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n\n /**\n * Guidance scale for classifier-free guidance.\n * Higher values make the output more closely match the prompt.\n */\n guidance_scale: z.number().nullish(),\n\n /**\n * Number of denoising steps. More steps = higher quality but slower.\n */\n num_inference_steps: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid in the generation.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Output image format.\n */\n output_format: z.enum(['png', 'jpg', 'webp']).nullish(),\n\n /**\n * Output image quality (1-100). Only applies to jpg and webp.\n */\n output_quality: z.number().min(1).max(100).nullish(),\n\n /**\n * Strength of the transformation for img2img (0-1).\n * Lower values keep more of the original image.\n */\n strength: z.number().min(0).max(1).nullish(),\n })\n .passthrough(),\n ),\n);\n\nexport type ReplicateImageProviderOptions = InferSchema<\n typeof replicateImageProviderOptionsSchema\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\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":["import_provider_utils","import_provider_utils","import_v4"]}
|
package/dist/index.mjs
CHANGED
|
@@ -5,11 +5,15 @@ import { loadApiKey, withUserAgentSuffix } from "@ai-sdk/provider-utils";
|
|
|
5
5
|
// src/replicate-image-model.ts
|
|
6
6
|
import {
|
|
7
7
|
combineHeaders,
|
|
8
|
+
convertImageModelFileToDataUri,
|
|
8
9
|
createBinaryResponseHandler,
|
|
9
10
|
createJsonResponseHandler,
|
|
10
11
|
getFromApi,
|
|
12
|
+
lazySchema,
|
|
13
|
+
parseProviderOptions,
|
|
11
14
|
postJsonToApi,
|
|
12
|
-
resolve
|
|
15
|
+
resolve,
|
|
16
|
+
zodSchema
|
|
13
17
|
} from "@ai-sdk/provider-utils";
|
|
14
18
|
import { z as z2 } from "zod/v4";
|
|
15
19
|
|
|
@@ -29,16 +33,23 @@ var replicateFailedResponseHandler = createJsonErrorResponseHandler({
|
|
|
29
33
|
});
|
|
30
34
|
|
|
31
35
|
// src/replicate-image-model.ts
|
|
36
|
+
var FLUX_2_MODEL_PATTERN = /^black-forest-labs\/flux-2-/;
|
|
37
|
+
var MAX_FLUX_2_INPUT_IMAGES = 8;
|
|
32
38
|
var ReplicateImageModel = class {
|
|
33
39
|
constructor(modelId, config) {
|
|
34
40
|
this.modelId = modelId;
|
|
35
41
|
this.config = config;
|
|
36
42
|
this.specificationVersion = "v3";
|
|
37
|
-
|
|
43
|
+
}
|
|
44
|
+
get maxImagesPerCall() {
|
|
45
|
+
return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;
|
|
38
46
|
}
|
|
39
47
|
get provider() {
|
|
40
48
|
return this.config.provider;
|
|
41
49
|
}
|
|
50
|
+
get isFlux2Model() {
|
|
51
|
+
return FLUX_2_MODEL_PATTERN.test(this.modelId);
|
|
52
|
+
}
|
|
42
53
|
async doGenerate({
|
|
43
54
|
prompt,
|
|
44
55
|
n,
|
|
@@ -47,12 +58,55 @@ var ReplicateImageModel = class {
|
|
|
47
58
|
seed,
|
|
48
59
|
providerOptions,
|
|
49
60
|
headers,
|
|
50
|
-
abortSignal
|
|
61
|
+
abortSignal,
|
|
62
|
+
files,
|
|
63
|
+
mask
|
|
51
64
|
}) {
|
|
52
|
-
var _a, _b, _c
|
|
65
|
+
var _a, _b, _c;
|
|
53
66
|
const warnings = [];
|
|
54
67
|
const [modelId, version] = this.modelId.split(":");
|
|
55
68
|
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
69
|
+
const replicateOptions = await parseProviderOptions({
|
|
70
|
+
provider: "replicate",
|
|
71
|
+
providerOptions,
|
|
72
|
+
schema: replicateImageProviderOptionsSchema
|
|
73
|
+
});
|
|
74
|
+
let imageInputs = {};
|
|
75
|
+
if (files != null && files.length > 0) {
|
|
76
|
+
if (this.isFlux2Model) {
|
|
77
|
+
for (let i = 0; i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES); i++) {
|
|
78
|
+
const key = i === 0 ? "input_image" : `input_image_${i + 1}`;
|
|
79
|
+
imageInputs[key] = convertImageModelFileToDataUri(files[i]);
|
|
80
|
+
}
|
|
81
|
+
if (files.length > MAX_FLUX_2_INPUT_IMAGES) {
|
|
82
|
+
warnings.push({
|
|
83
|
+
type: "other",
|
|
84
|
+
message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
imageInputs = { image: convertImageModelFileToDataUri(files[0]) };
|
|
89
|
+
if (files.length > 1) {
|
|
90
|
+
warnings.push({
|
|
91
|
+
type: "other",
|
|
92
|
+
message: "This Replicate model only supports a single input image. Additional images are ignored."
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
let maskInput;
|
|
98
|
+
if (mask != null) {
|
|
99
|
+
if (this.isFlux2Model) {
|
|
100
|
+
warnings.push({
|
|
101
|
+
type: "other",
|
|
102
|
+
message: "Flux-2 models do not support mask input. The mask will be ignored."
|
|
103
|
+
});
|
|
104
|
+
} else {
|
|
105
|
+
maskInput = convertImageModelFileToDataUri(mask);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions != null ? replicateOptions : {};
|
|
109
|
+
const preferHeader = maxWaitTimeInSeconds != null ? { prefer: `wait=${maxWaitTimeInSeconds}` } : { prefer: "wait" };
|
|
56
110
|
const {
|
|
57
111
|
value: { output },
|
|
58
112
|
responseHeaders
|
|
@@ -61,9 +115,11 @@ var ReplicateImageModel = class {
|
|
|
61
115
|
// different endpoints for versioned vs unversioned models:
|
|
62
116
|
version != null ? `${this.config.baseURL}/predictions` : `${this.config.baseURL}/models/${modelId}/predictions`
|
|
63
117
|
),
|
|
64
|
-
headers: combineHeaders(
|
|
65
|
-
|
|
66
|
-
|
|
118
|
+
headers: combineHeaders(
|
|
119
|
+
await resolve(this.config.headers),
|
|
120
|
+
headers,
|
|
121
|
+
preferHeader
|
|
122
|
+
),
|
|
67
123
|
body: {
|
|
68
124
|
input: {
|
|
69
125
|
prompt,
|
|
@@ -71,7 +127,9 @@ var ReplicateImageModel = class {
|
|
|
71
127
|
size,
|
|
72
128
|
seed,
|
|
73
129
|
num_outputs: n,
|
|
74
|
-
...
|
|
130
|
+
...imageInputs,
|
|
131
|
+
...maskInput != null ? { mask: maskInput } : {},
|
|
132
|
+
...inputOptions
|
|
75
133
|
},
|
|
76
134
|
// for versioned models, include the version in the body:
|
|
77
135
|
...version != null ? { version } : {}
|
|
@@ -110,9 +168,49 @@ var ReplicateImageModel = class {
|
|
|
110
168
|
var replicateImageResponseSchema = z2.object({
|
|
111
169
|
output: z2.union([z2.array(z2.string()), z2.string()])
|
|
112
170
|
});
|
|
171
|
+
var replicateImageProviderOptionsSchema = lazySchema(
|
|
172
|
+
() => zodSchema(
|
|
173
|
+
z2.object({
|
|
174
|
+
/**
|
|
175
|
+
* Maximum time in seconds to wait for the prediction to complete in sync mode.
|
|
176
|
+
* By default, Replicate uses sync mode with a 60-second timeout.
|
|
177
|
+
*
|
|
178
|
+
* - When not specified: Uses default 60-second sync wait (`prefer: wait`)
|
|
179
|
+
* - When set to a positive number: Uses that duration (`prefer: wait=N`)
|
|
180
|
+
*/
|
|
181
|
+
maxWaitTimeInSeconds: z2.number().positive().nullish(),
|
|
182
|
+
/**
|
|
183
|
+
* Guidance scale for classifier-free guidance.
|
|
184
|
+
* Higher values make the output more closely match the prompt.
|
|
185
|
+
*/
|
|
186
|
+
guidance_scale: z2.number().nullish(),
|
|
187
|
+
/**
|
|
188
|
+
* Number of denoising steps. More steps = higher quality but slower.
|
|
189
|
+
*/
|
|
190
|
+
num_inference_steps: z2.number().nullish(),
|
|
191
|
+
/**
|
|
192
|
+
* Negative prompt to guide what to avoid in the generation.
|
|
193
|
+
*/
|
|
194
|
+
negative_prompt: z2.string().nullish(),
|
|
195
|
+
/**
|
|
196
|
+
* Output image format.
|
|
197
|
+
*/
|
|
198
|
+
output_format: z2.enum(["png", "jpg", "webp"]).nullish(),
|
|
199
|
+
/**
|
|
200
|
+
* Output image quality (1-100). Only applies to jpg and webp.
|
|
201
|
+
*/
|
|
202
|
+
output_quality: z2.number().min(1).max(100).nullish(),
|
|
203
|
+
/**
|
|
204
|
+
* Strength of the transformation for img2img (0-1).
|
|
205
|
+
* Lower values keep more of the original image.
|
|
206
|
+
*/
|
|
207
|
+
strength: z2.number().min(0).max(1).nullish()
|
|
208
|
+
}).passthrough()
|
|
209
|
+
)
|
|
210
|
+
);
|
|
113
211
|
|
|
114
212
|
// src/version.ts
|
|
115
|
-
var VERSION = true ? "2.0.0-beta.
|
|
213
|
+
var VERSION = true ? "2.0.0-beta.55" : "0.0.0-test";
|
|
116
214
|
|
|
117
215
|
// src/replicate-provider.ts
|
|
118
216
|
function createReplicate(options = {}) {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/version.ts"],"sourcesContent":["import { NoSuchModelError, ProviderV3 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV3 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n ),\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v3' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n FetchFunction,\n combineHeaders,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n getFromApi,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class ReplicateImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(await resolve(this.config.headers), headers, {\n prefer: 'wait',\n }),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...(providerOptions.replicate ?? {}),\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\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":";AAAA,SAAS,wBAAoC;AAE7C,SAAS,YAAY,2BAA2B;;;ACAhD;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,KAAAA,UAAS;;;ACXlB,SAAS,sCAAsC;AAC/C,SAAS,SAAS;AAElB,IAAM,uBAAuB,EAAE,OAAO;AAAA,EACpC,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,OAAO,EAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AAEM,IAAM,iCAAiC,+BAA+B;AAAA,EAC3E,aAAa;AAAA,EACb,gBAAgB,WAAM;AAVxB;AAWI,6BAAM,WAAN,YAAgB,MAAM,UAAtB,YAA+B;AAAA;AACnC,CAAC;;;ADaM,IAAM,sBAAN,MAAkD;AAAA,EAQvD,YACW,SACQ,QACjB;AAFS;AACQ;AATnB,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAAA,EASzB;AAAA,EAPH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAEE;AAjDJ;AAkDI,UAAM,WAAmC,CAAC;AAE1C,UAAM,CAAC,SAAS,OAAO,IAAI,KAAK,QAAQ,MAAM,GAAG;AAEjD,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AAEvE,UAAM;AAAA,MACJ,OAAO,EAAE,OAAO;AAAA,MAChB;AAAA,IACF,IAAI,MAAM,cAAc;AAAA,MACtB;AAAA;AAAA,QAEE,WAAW,OACP,GAAG,KAAK,OAAO,OAAO,iBACtB,GAAG,KAAK,OAAO,OAAO,WAAW,OAAO;AAAA;AAAA,MAE9C,SAAS,eAAe,MAAM,QAAQ,KAAK,OAAO,OAAO,GAAG,SAAS;AAAA,QACnE,QAAQ;AAAA,MACV,CAAC;AAAA,MAED,MAAM;AAAA,QACJ,OAAO;AAAA,UACL;AAAA,UACA,cAAc;AAAA,UACd;AAAA,UACA;AAAA,UACA,aAAa;AAAA,UACb,IAAI,qBAAgB,cAAhB,YAA6B,CAAC;AAAA,QACpC;AAAA;AAAA,QAEA,GAAI,WAAW,OAAO,EAAE,QAAQ,IAAI,CAAC;AAAA,MACvC;AAAA,MAEA,2BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,uBAAuB;AAAA,MACvB;AAAA,MACA,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAGD,UAAM,cAAc,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM;AAC5D,UAAM,SAAS,MAAM,QAAQ;AAAA,MAC3B,YAAY,IAAI,OAAM,QAAO;AAC3B,cAAM,EAAE,OAAO,MAAM,IAAI,MAAM,WAAW;AAAA,UACxC;AAAA,UACA,2BAA2B,4BAA4B;AAAA,UACvD,uBAAuB;AAAA,UACvB;AAAA,UACA,OAAO,KAAK,OAAO;AAAA,QACrB,CAAC;AACD,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,+BAA+BC,GAAE,OAAO;AAAA,EAC5C,QAAQA,GAAE,MAAM,CAACA,GAAE,MAAMA,GAAE,OAAO,CAAC,GAAGA,GAAE,OAAO,CAAC,CAAC;AACnD,CAAC;;;AEtHM,IAAM,UACX,OACI,kBACA;;;AH+CC,SAAS,gBACd,UAAqC,CAAC,GACnB;AACnB,QAAM,mBAAmB,CAAC,YAAgC;AAvD5D;AAwDI,eAAI,oBAAoB,SAAS;AAAA,MAC/B,UAAU;AAAA,MACV,UAAS,aAAQ,YAAR,YAAmB;AAAA,MAC5B,SAAS;AAAA,QACP;AAAA,UACE,eAAe,UAAU,WAAW;AAAA,YAClC,QAAQ,QAAQ;AAAA,YAChB,yBAAyB;AAAA,YACzB,aAAa;AAAA,UACf,CAAC,CAAC;AAAA,UACF,GAAG,QAAQ;AAAA,QACb;AAAA,QACA,oBAAoB,OAAO;AAAA,MAC7B;AAAA,MACA,OAAO,QAAQ;AAAA,IACjB,CAAC;AAAA;AAEH,QAAM,iBAAiB,CAAC,YAAoB;AAC1C,UAAM,IAAI,iBAAiB;AAAA,MACzB;AAAA,MACA,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,sBAAsB;AAAA,IACtB,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,eAAe,CAAC,YAAoB;AAClC,YAAM,IAAI,iBAAiB;AAAA,QACzB;AAAA,QACA,WAAW;AAAA,MACb,CAAC;AAAA,IACH;AAAA,IACA;AAAA,IACA,oBAAoB;AAAA,EACtB;AACF;AAKO,IAAM,YAAY,gBAAgB;","names":["z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/replicate-provider.ts","../src/replicate-image-model.ts","../src/replicate-error.ts","../src/version.ts"],"sourcesContent":["import { NoSuchModelError, ProviderV3 } from '@ai-sdk/provider';\nimport type { FetchFunction } from '@ai-sdk/provider-utils';\nimport { loadApiKey, withUserAgentSuffix } from '@ai-sdk/provider-utils';\nimport { ReplicateImageModel } from './replicate-image-model';\nimport { ReplicateImageModelId } from './replicate-image-settings';\nimport { VERSION } from './version';\n\nexport interface ReplicateProviderSettings {\n /**\nAPI token that is being send using the `Authorization` header.\nIt defaults to the `REPLICATE_API_TOKEN` environment variable.\n */\n apiToken?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.replicate.com/v1`.\n */\n baseURL?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ReplicateProvider extends ProviderV3 {\n /**\n * Creates a Replicate image generation model.\n */\n image(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * Creates a Replicate image generation model.\n */\n imageModel(modelId: ReplicateImageModelId): ReplicateImageModel;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\n/**\n * Create a Replicate provider instance.\n */\nexport function createReplicate(\n options: ReplicateProviderSettings = {},\n): ReplicateProvider {\n const createImageModel = (modelId: ReplicateImageModelId) =>\n new ReplicateImageModel(modelId, {\n provider: 'replicate',\n baseURL: options.baseURL ?? 'https://api.replicate.com/v1',\n headers: withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiToken,\n environmentVariableName: 'REPLICATE_API_TOKEN',\n description: 'Replicate',\n })}`,\n ...options.headers,\n },\n `ai-sdk/replicate/${VERSION}`,\n ),\n fetch: options.fetch,\n });\n\n const embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n };\n\n return {\n specificationVersion: 'v3' as const,\n image: createImageModel,\n imageModel: createImageModel,\n languageModel: (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n });\n },\n embeddingModel,\n textEmbeddingModel: embeddingModel,\n };\n}\n\n/**\n * Default Replicate provider instance.\n */\nexport const replicate = createReplicate();\n","import type { ImageModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport type { Resolvable } from '@ai-sdk/provider-utils';\nimport {\n combineHeaders,\n convertImageModelFileToDataUri,\n createBinaryResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n getFromApi,\n InferSchema,\n lazySchema,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { replicateFailedResponseHandler } from './replicate-error';\nimport { ReplicateImageModelId } from './replicate-image-settings';\n\ninterface ReplicateImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Flux-2 models support up to 8 input images with input_image, input_image_2, etc.\nconst FLUX_2_MODEL_PATTERN = /^black-forest-labs\\/flux-2-/;\nconst MAX_FLUX_2_INPUT_IMAGES = 8;\n\nexport class ReplicateImageModel implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n\n get maxImagesPerCall(): number {\n // Flux-2 models support up to 8 input images\n return this.isFlux2Model ? MAX_FLUX_2_INPUT_IMAGES : 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get isFlux2Model(): boolean {\n return FLUX_2_MODEL_PATTERN.test(this.modelId);\n }\n\n constructor(\n readonly modelId: ReplicateImageModelId,\n private readonly config: ReplicateImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n aspectRatio,\n size,\n seed,\n providerOptions,\n headers,\n abortSignal,\n files,\n mask,\n }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV3['doGenerate']>>\n > {\n const warnings: Array<SharedV3Warning> = [];\n\n const [modelId, version] = this.modelId.split(':');\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n // Parse provider options\n const replicateOptions = await parseProviderOptions({\n provider: 'replicate',\n providerOptions,\n schema: replicateImageProviderOptionsSchema,\n });\n\n // Handle image input from files\n let imageInputs: Record<string, string> = {};\n if (files != null && files.length > 0) {\n if (this.isFlux2Model) {\n // Flux-2 models use input_image, input_image_2, input_image_3, etc.\n for (\n let i = 0;\n i < Math.min(files.length, MAX_FLUX_2_INPUT_IMAGES);\n i++\n ) {\n const key = i === 0 ? 'input_image' : `input_image_${i + 1}`;\n imageInputs[key] = convertImageModelFileToDataUri(files[i]);\n }\n if (files.length > MAX_FLUX_2_INPUT_IMAGES) {\n warnings.push({\n type: 'other',\n message: `Flux-2 models support up to ${MAX_FLUX_2_INPUT_IMAGES} input images. Additional images are ignored.`,\n });\n }\n } else {\n // Other models use single 'image' parameter\n imageInputs = { image: convertImageModelFileToDataUri(files[0]) };\n if (files.length > 1) {\n warnings.push({\n type: 'other',\n message:\n 'This Replicate model only supports a single input image. Additional images are ignored.',\n });\n }\n }\n }\n\n // Handle mask input (not supported by Flux-2 models)\n let maskInput: string | undefined;\n if (mask != null) {\n if (this.isFlux2Model) {\n warnings.push({\n type: 'other',\n message:\n 'Flux-2 models do not support mask input. The mask will be ignored.',\n });\n } else {\n maskInput = convertImageModelFileToDataUri(mask);\n }\n }\n\n // Extract maxWaitTimeInSeconds from provider options and prepare the rest for the request body\n const { maxWaitTimeInSeconds, ...inputOptions } = replicateOptions ?? {};\n\n // Build the prefer header based on maxWaitTimeInSeconds:\n // - undefined/null: use default sync wait (prefer: wait)\n // - positive number: use custom wait duration (prefer: wait=N)\n const preferHeader: Record<string, string> =\n maxWaitTimeInSeconds != null\n ? { prefer: `wait=${maxWaitTimeInSeconds}` }\n : { prefer: 'wait' };\n\n const {\n value: { output },\n responseHeaders,\n } = await postJsonToApi({\n url:\n // different endpoints for versioned vs unversioned models:\n version != null\n ? `${this.config.baseURL}/predictions`\n : `${this.config.baseURL}/models/${modelId}/predictions`,\n\n headers: combineHeaders(\n await resolve(this.config.headers),\n headers,\n preferHeader,\n ),\n\n body: {\n input: {\n prompt,\n aspect_ratio: aspectRatio,\n size,\n seed,\n num_outputs: n,\n ...imageInputs,\n ...(maskInput != null ? { mask: maskInput } : {}),\n ...inputOptions,\n },\n // for versioned models, include the version in the body:\n ...(version != null ? { version } : {}),\n },\n\n successfulResponseHandler: createJsonResponseHandler(\n replicateImageResponseSchema,\n ),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n\n // download the images:\n const outputArray = Array.isArray(output) ? output : [output];\n const images = await Promise.all(\n outputArray.map(async url => {\n const { value: image } = await getFromApi({\n url,\n successfulResponseHandler: createBinaryResponseHandler(),\n failedResponseHandler: replicateFailedResponseHandler,\n abortSignal,\n fetch: this.config.fetch,\n });\n return image;\n }),\n );\n\n return {\n images,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nconst replicateImageResponseSchema = z.object({\n output: z.union([z.array(z.string()), z.string()]),\n});\n\n/**\n * Provider options schema for Replicate image generation.\n *\n * Note: Different Replicate models support different parameters.\n * This schema includes common parameters, but you can pass any\n * model-specific parameters through the passthrough.\n */\nexport const replicateImageProviderOptionsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n /**\n * Maximum time in seconds to wait for the prediction to complete in sync mode.\n * By default, Replicate uses sync mode with a 60-second timeout.\n *\n * - When not specified: Uses default 60-second sync wait (`prefer: wait`)\n * - When set to a positive number: Uses that duration (`prefer: wait=N`)\n */\n maxWaitTimeInSeconds: z.number().positive().nullish(),\n\n /**\n * Guidance scale for classifier-free guidance.\n * Higher values make the output more closely match the prompt.\n */\n guidance_scale: z.number().nullish(),\n\n /**\n * Number of denoising steps. More steps = higher quality but slower.\n */\n num_inference_steps: z.number().nullish(),\n\n /**\n * Negative prompt to guide what to avoid in the generation.\n */\n negative_prompt: z.string().nullish(),\n\n /**\n * Output image format.\n */\n output_format: z.enum(['png', 'jpg', 'webp']).nullish(),\n\n /**\n * Output image quality (1-100). Only applies to jpg and webp.\n */\n output_quality: z.number().min(1).max(100).nullish(),\n\n /**\n * Strength of the transformation for img2img (0-1).\n * Lower values keep more of the original image.\n */\n strength: z.number().min(0).max(1).nullish(),\n })\n .passthrough(),\n ),\n);\n\nexport type ReplicateImageProviderOptions = InferSchema<\n typeof replicateImageProviderOptionsSchema\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst replicateErrorSchema = z.object({\n detail: z.string().optional(),\n error: z.string().optional(),\n});\n\nexport const replicateFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: replicateErrorSchema,\n errorToMessage: error =>\n error.detail ?? error.error ?? 'Unknown Replicate error',\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":["z","z"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/replicate",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.55",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@ai-sdk/provider": "3.0.0-beta.
|
|
24
|
-
"@ai-sdk/provider-utils": "4.0.0-beta.
|
|
23
|
+
"@ai-sdk/provider": "3.0.0-beta.28",
|
|
24
|
+
"@ai-sdk/provider-utils": "4.0.0-beta.54"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "20.17.24",
|