Skip to content

Enable FileObject and blocking mode by default

Compare
Choose a tag to compare
@zeke zeke released this 09 Oct 22:15
· 6 commits to main since this release

Warning

Breaking changes

This 1.0.0 latest release of replicate contains breaking changes. The replicate.run() method will now return FileObjects rather than URL strings by default for models that output files.

The FileObject implements a ReadableStream to make it easier to work with files and ensures that Replicate can deliver file data to the client in the most efficient manner possible. This means that implementations that make an additional fetch() call to retrieve the output file are no longer needed.

For example:

const [output] = await replicate.run("black-forest-labs/flux-schnell", { 
  input: { prompt: "astronaut riding a rocket like a horse" }
});

// To access the file URL:
console.log(output.url()); //=> "http://example.com"

// To write the file to disk:
fs.writeFile("my-image.png", output);

// To stream the file back to a browser:
return new Response(output);

// To read the file in chunks:
for await (const chunk of output) {
  console.log(chunk); // UInt8Array
}

Note

By default the new run API utilizes the new sync mode of
the prediction.create API. This means that it will hold the connection open to the server until the prediction has
completed or the request exceeds a timeout, at which point it will fallback to polling.

A further optimization in this mode is that the server may opt-in to returning data-uris inlined into the prediction payload
rather than remote URLs. In this instance output.url() will contain a data-uri.

If a URL is required we recommend passing the wait: { mode: "poll" } argument to replicate.run().

In case of breakage, in most instances, updating existing applications to call output.url() should fix issues.

To revert to previous behaviour you can opt out of FileOutput by passing useFileOutput: false to the Replicate constructor.

const replicate = new Replicate({ useFileOutput: false });

Docs

  • document wait option for *.prediction.create() methods (#319) abe1029

v0.34.1...v1.0.0