Node-Packages / replicate.yaml
mypiper's picture
Update replicate.yaml
849f164 verified
_id: replicate
author: Anton Breslavskii | https://github.com/breslavsky
description: Provides features to use AI models from Replicate AI
readme: ""
title: Replicate AI
url: https://huggingface.co/PiperMy/Node-Packages/resolve/main/replicate.yaml
version: 5
nodes:
generate_on_flux_replicate:
_id: generate_on_flux_replicate
arrange:
x: 300
y: 120
category:
id: generate_images
title: en=Generate images;ru=Генерация изображений
costs: |-
const COST_PER_IMAGE = 0.01;
(() => {
const { imagesCount } = inputs;
return imagesCount * COST_PER_IMAGE;
})()
environment:
REPLICATE_TOKEN:
title: Replicate token
description: Go to [Replicate](https://replicate.com/account/api-tokens) to take a keys
type: string
scope: global
inputs:
prompt:
order: 1
title: en=Prompt;ru=Подсказка
type: string
required: true
multiline: true
default: walking cat at the moon
imagesCount:
order: 2
title: en=Images count;ru=Кол-во
type: integer
required: true
min: 1
max: 4
step: 1
default: 1
aspectRatio:
order: 3
title: en=Aspect ratio;ru=Размер
type: string
default: 1:1
enum:
- 1:1
- 21:9
- 16:9
- 3:2
- 2:3
- 4:5
- 5:4
- 3:4
- 4:3
- 9:21
- 9:16
outputs:
images:
title: Images
type: image[]
image1:
title: Image 1
type: image
image2:
title: Image 2
type: image
image3:
title: Image 3
type: image
image4:
title: Image 4
type: image
package: replicate
script: |
export async function run({ inputs, state }) {
const { RepeatNode, NextNode } = DEFINITIONS;
const REPLICATE_TOKEN = env?.variables?.get('REPLICATE_TOKEN');
if (!REPLICATE_TOKEN) {
error.fatal('Please, set your API token for Replicate AI');
}
const { prompt, imagesCount, aspectRatio } = inputs;
if (!state) {
const { data: { id: task } } = await httpClient({
method: 'post',
url: 'https://api.replicate.com/v1/models/black-forest-labs/flux-schnell/predictions',
data: {
input: {
prompt,
num_outputs: imagesCount,
aspect_ratio: aspectRatio
}
},
headers: {
'Authorization': `Bearer ${REPLICATE_TOKEN}`,
'Content-Type': 'application/json',
'Prefer': 'wait',
}
});
return RepeatNode.from({ state: { task }, delay: 2000 });
} else {
const { task } = state;
const { data } = await httpClient({
method: 'get',
url: `https://api.replicate.com/v1/predictions/${task}`,
headers: {
'Authorization': `Bearer ${REPLICATE_TOKEN}`,
'Content-Type': 'application/json'
}
});
const { status, error } = data;
switch (status) {
case 'processing':
return repeat({ state: { task }, delay: 3000 });
case 'failed':
error.fatal(error);
case 'succeeded':
const { output: images } = data;
const [image1, image2, image3, image4] = images;
return NextNode.from({ outputs: { images, image1, image2, image3, image4 } });
}
}
}
source: catalog
title: en=Generate on Flux;ru=Генерация Flux
version: 5