replicate-rust 0.0.3

An Unofficial Rust Client for Replicate.
Documentation

Documentation Latest Version Tests Rust

An Unofficial Rust client for Replicate. Provides a type-safe interface by deserializing API responses into Rust structs.

Getting Started

Add replicate_rust to Cargo.toml:

[dependencies]
replicate-rust = "0.0.3"

Grab your token from replicate.com/account and set it as an environment variable:

export REPLICATE_API_TOKEN=<your token>

Here's an example using replicate_rust to run a model.

use~ replicate_rust::{Replicate, config::Config};

let config = Config::default();
let replicate = Replicate::new(config);

// Construct the inputs.
let mut inputs = std::collections::HashMap::new();
inputs.insert("prompt", "a  19th century portrait of a wombat gentleman");

let version = String::from("stability-ai/stable-diffusion:27b93a2413e7f36cd83da926f3656280b2931564ff050bf9575f1fdf9bcd7478");

// Run the model.
let result = replicate.run(version, inputs);

// Print the result.
match result {
    Ok(result) => println!("Success : {:?}", result.output),
    Err(e) => println!("Error : {}", e),
}
// Some(Array [String("https://pbxt.replicate.delivery/QLDGe2rXuIQ9ByMViQEXrYCkKfDi9I3YWAzPwWsDZWMXeN7iA/out-0.png")])```

Usage

See the reference docs for detailed API documentation.


Examples

Run a model in the background

You can start a model and run it in the background:

let config = Config::default();
let replicate = Replicate::new(config);

// Construct the inputs.
let mut inputs = std::collections::HashMap::new();
inputs.insert("prompt", "a  19th century portrait of a wombat gentleman");

let version = String::from("stability-ai/stable-diffusion:27b93a2413e7f36cd83da926f3656280b2931564ff050bf9575f1fdf9bcd7478");

// Run the model.
let mut prediction = replicate.predictions.create(version, inputs);

println!("{}", prediction.status)
// 'starting'


prediction.reload()
println!("{}", prediction.status)
// 'processing'

println!("{}", prediction.logs)
// Some("Using seed: 3599
//      0%|          | 0/50 [00:00<?, ?it/s]
//      4%|▍         | 2/50 [00:00<00:04, 10.00it/s]
//      8%|▊         | 4/50 [00:00<00:03, 11.56it/s]
//    ")

prediction.wait()

println!("{}", prediction.status)
// 'succeeded'


match prediction.wait() {
    Ok(result) => println!("Success : {:?}", result.output),
    Err(e) => println!("Error : {}", e),
}
// Success : Some(Array [String("https://pbxt.replicate.delivery/QLDGe2rXuIQ9ByMViQEXrYCkKfDi9I3YWAzPwWsDZWMXeN7iA/out-0.png")])

Cancel a prediction

You can cancel a running prediction:


let config = Config::default();
let replicate = Replicate::new(config);

// Construct the inputs.
let mut inputs = std::collections::HashMap::new();
inputs.insert("prompt", "a  19th century portrait of a wombat gentleman");

let version = String::from("stability-ai/stable-diffusion:27b93a2413e7f36cd83da926f3656280b2931564ff050bf9575f1fdf9bcd7478");

// Run the model.
let mut prediction = replicate.predictions.create(version, inputs);

println!("{}", prediction.status)
// 'starting'

prediction.cancel()

prediction.reload()

println!("{}", prediction.status)
// 'cancelled'

List predictions

You can list all the predictions you've run:

match replicate.predictions.list() {
    Ok(result) => println!("Success : {:?}", result),
    Err(e) => println!("Error : {}", e),
}
// Success : ListPredictions { ... }

Get model Information

match replicate.models.get(String::from("replicate"), String::from("hello-world"))
    {
        Ok(result) => println!("Success : {:?}", result),
        Err(e) => println!("Error : {}", e),
};

// Success : GetModel { ... }

Get Versions List

match replicate
        .models
        .versions
        .list(String::from("replicate"), String::from("hello-world"))
    {
        Ok(result) => println!("Success : {:?}", result),
        Err(e) => println!("Error : {}", e),
};
// Success : ListModelVersions { ... }

Get Model Version Information

match replicate.models.versions.get(
        String::from("kvfrans"),
        String::from("clipdraw"),
        String::from("5797a99edc939ea0e9242d5e8c9cb3bc7d125b1eac21bda852e5cb79ede2cd9b"),
    ) {
        Ok(result) => println!("Success : {:?}", result),
        Err(e) => println!("Error : {}", e),
}
// Success : GetModelVersion { ... }

Get Collection Information

match replicate.collections.get(String::from("audio-generation")) {
        Ok(result) => println!("Success : {:?}", result),
        Err(e) => println!("Error : {}", e),
    }

// Success : GetCollectionModels { ... }

Get Collection Lists

match replicate.collections.list() {
        Ok(result) => println!("Success : {:?}", result),
        Err(e) => println!("Error : {}", e),
    }

// Success : ListCollectionModels { ... }