@@ -9,10 +9,13 @@ export type TextToImageArgs = BaseArgs & {
99 inputs : string ;
1010
1111 /**
12- * Same param but for external providers like Together
12+ * Same param but for external providers like Together, Replicate
1313 */
1414 prompt ?: string ;
1515 response_format ?: "base64" ;
16+ input ?: {
17+ prompt : string ;
18+ } ;
1619
1720 parameters ?: {
1821 /**
@@ -38,14 +41,16 @@ export type TextToImageArgs = BaseArgs & {
3841 } ;
3942} ;
4043
44+ export type TextToImageOutput = Blob ;
45+
4146interface Base64ImageGeneration {
42- id : string ;
43- model : string ;
4447 data : Array < {
4548 b64_json : string ;
4649 } > ;
4750}
48- export type TextToImageOutput = Blob ;
51+ interface OutputUrlImageGeneration {
52+ output : string [ ] ;
53+ }
4954
5055/**
5156 * This task reads some text input and outputs an image.
@@ -56,16 +61,26 @@ export async function textToImage(args: TextToImageArgs, options?: Options): Pro
5661 args . prompt = args . inputs ;
5762 args . inputs = "" ;
5863 args . response_format = "base64" ;
64+ } else if ( args . provider === "replicate" ) {
65+ args . input = { prompt : args . inputs } ;
66+ delete ( args as unknown as { inputs : unknown } ) . inputs ;
5967 }
60- const res = await request < TextToImageOutput | Base64ImageGeneration > ( args , {
68+ const res = await request < TextToImageOutput | Base64ImageGeneration | OutputUrlImageGeneration > ( args , {
6169 ...options ,
6270 taskHint : "text-to-image" ,
6371 } ) ;
64- if ( res && typeof res === "object" && Array . isArray ( res . data ) && res . data [ 0 ] . b64_json ) {
65- const base64Data = res . data [ 0 ] . b64_json ;
66- const base64Response = await fetch ( `data:image/jpeg;base64,${ base64Data } ` ) ;
67- const blob = await base64Response . blob ( ) ;
68- return blob ;
72+ if ( res && typeof res === "object" ) {
73+ if ( "data" in res && Array . isArray ( res . data ) && res . data [ 0 ] . b64_json ) {
74+ const base64Data = res . data [ 0 ] . b64_json ;
75+ const base64Response = await fetch ( `data:image/jpeg;base64,${ base64Data } ` ) ;
76+ const blob = await base64Response . blob ( ) ;
77+ return blob ;
78+ }
79+ if ( "output" in res && Array . isArray ( res . output ) ) {
80+ const urlResponse = await fetch ( res . output [ 0 ] ) ;
81+ const blob = await urlResponse . blob ( ) ;
82+ return blob ;
83+ }
6984 }
7085 const isValidOutput = res && res instanceof Blob ;
7186 if ( ! isValidOutput ) {
0 commit comments