Replicate Rust client

An Unofficial Rust client for Replicate

[![Documentation]][docs.rs] [![Latest Version]][crates.io] [![Tests](https://github.com/Shubhamai/replicate-rust/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/Shubhamai/replicate-rust/actions/workflows/tests.yml) [![Rust](https://img.shields.io/badge/rust-1.72%2B-blue.svg?maxAge=3600)](https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1720-2023-08-24)

Documentation · Crate · Report Bug · Request Feature

An Unofficial Rust client for [Replicate](https://replicate.com). Provides a type-safe interface by deserializing API responses into Rust structs. ## Getting Started Add `replicate_rust` to `Cargo.toml`: ```toml [dependencies] replicate-rust = "0.0.5" ``` Grab your token from [replicate.com/account](https://replicate.com/account) and set it as an environment variable: ```sh export REPLICATE_API_TOKEN= ``` Here's an example using `replicate_rust` to run a model: ```rust use replicate_rust::{config::Config, Replicate, errors::ReplicateError}; fn main() -> Result<(), ReplicateError> { let config = Config::default(); // Instead of using the default config ( which reads API token from env variable), you can also set the token directly: // let config = Config { // auth: String::from("REPLICATE_API_TOKEN"), // ..Default::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 = "stability-ai/stable-diffusion:27b93a2413e7f36cd83da926f3656280b2931564ff050bf9575f1fdf9bcd7478"; // Run the model. let result = replicate.run(version, inputs)?; // Print the result. println!("{:?}", result.output); // Some(Array [String("https://pbxt.replicate.delivery/QLDGe2rXuIQ9ByMViQEXrYCkKfDi9I3YWAzPwWsDZWMXeN7iA/out-0.png")])``` Ok(()) } ``` ## Usage See the [reference docs](https://docs.rs/replicate-rust/) for detailed API documentation. ## Examples - Run a model in the background: ```rust // Construct the inputs. let mut inputs = std::collections::HashMap::new(); inputs.insert("prompt", "a 19th century portrait of a wombat gentleman"); let version = "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 [crates.io]: https://crates.io/crates/replicate-rust [Latest Version]: https://img.shields.io/crates/v/replicate-rust.svg [Documentation]: https://docs.rs/replicate-rust/badge.svg [docs.rs]: https://docs.rs/replicate-rust [License]: https://img.shields.io/crates/l/replicate-rust.svg