Skip to content

Releases: replicate/replicate-python

1.0.4

25 Nov 12:44
461ec70
Compare
Choose a tag to compare

What's Changed

  • Fix two bugs in the base64 file_encoding_strategy by @aron in #398
    • replicate.run() now correctly converts the file provided into a valid base64 encoded data URL.
    • replicate.async_run() now respects the file_encoding_strategy flag.

Full Changelog: 1.0.3...1.0.4

1.0.3

28 Oct 11:22
1.0.3
a54a786
Compare
Choose a tag to compare

What's Changed

  • Fix a bug where replicate.run would swallow tokens (or files) at the start of a prediction's output. Thanks to @aron in #383

Full Changelog: 1.0.2...1.0.3

1.0.2

16 Oct 14:59
23bd903
Compare
Choose a tag to compare

What's Changed

  • Configure read timeout based on wait parameter by @aron in #373

Full Changelog: 1.0.1...1.0.2

1.0.1

14 Oct 09:27
Compare
Choose a tag to compare

What's Changed

Full Changelog: 1.0.0...1.0.1

1.0.0

14 Oct 09:25
Compare
Choose a tag to compare

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 an iterable object similar to httpx.Response 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.

For example:

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

For most basic cases you'll want to utilize either the url or read() fields depending on whether you want to directly consume the file or pass it on.

To access the file URL:

print(output.url) #=> "https://delivery.replicate.com/..."

To consume the file directly:

with open('output.bin', 'wb') as file:
    file.write(output.read())

Or for very large files they can be streamed:

with open(file_path, 'wb') as file:
    for chunk in output:
        file.write(chunk)

Each of these methods has an equivalent asyncio API.

async with aiofiles.open(filename, 'w') as file:
    await file.write(await output.aread())

async with aiofiles.open(filename, 'w') as file:
    await for chunk in output:
        await file.write(chunk)

For streaming responses from common frameworks, all support taking Iterator types:

Django

@condition(etag_func=None)
def stream_response(request):
    output = replicate.run("black-forest-labs/flux-schnell", input={...}, use_file_output =True)
    return HttpResponse(output, content_type='image/webp')

FastAPI

@app.get("/")
async def main():
    output = replicate.run("black-forest-labs/flux-schnell", input={...}, use_file_output =True)
    return StreamingResponse(output)

Flask

@app.route('/stream')
def streamed_response():
    output = replicate.run("black-forest-labs/flux-schnell", input={...}, use_file_output =True)
    return app.response_class(stream_with_context(output))

In case of breakages, 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 use_file_output=False to the replicate.run() method.

const replicate = replicate.run("acmecorp/acme-model", use_file_output=False);

Full Changelog: 0.34.2...1.0.0

0.34.1

25 Sep 19:37
5458c51
Compare
Choose a tag to compare

What's Changed

  • Consistently return Boolean for delete methods by @mattt in #359

Full Changelog: 0.34.0...0.34.1

0.34.0

25 Sep 18:47
d5f5e27
Compare
Choose a tag to compare

What's Changed

  • Add wait parameter to prediction creation methods by @mattt in #354
  • Add use_file_output to streaming methods by @mattt in #355

Full Changelog: 0.33.0...0.34.0

0.33.0

16 Sep 07:43
cd599f8
Compare
Choose a tag to compare

What's Changed

  • Introduce experimental FileOutput interface for models that output File and Path types by @aron in #348
  • Update CONTRIBUTING.md to document rye usage by @aron in #347
  • Update README, add missing " by @dimitrisr in #336

New Contributors

Full Changelog: 0.32.1...0.33.0

0.32.1

30 Aug 13:15
0043199
Compare
Choose a tag to compare

What's Changed

  • Correctly pass filename to file creation call by @mattt in #343

Full Changelog: 0.32.0...0.32.1

0.32.0

22 Aug 21:01
d4df7f6
Compare
Choose a tag to compare

What's Changed

  • Add support for files API endpoints by @mattt in #226
  • Automatically upload prediction and training input files by @mattt in #339

Full Changelog: 0.31.0...0.32.0