pub struct Images { /* private fields */ }Expand description
Client for interacting with the OpenAI Images API.
This struct provides methods to generate, edit, and create variations of images.
Use Images::new() to create a new instance.
§Example
use openai_tools::images::request::{Images, GenerateOptions, ImageModel, ImageSize};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let images = Images::new()?;
let options = GenerateOptions {
model: Some(ImageModel::DallE3),
size: Some(ImageSize::Size1024x1024),
..Default::default()
};
let response = images.generate("A sunset over mountains", options).await?;
println!("Generated image: {:?}", response.data[0].url);
Ok(())
}Implementations§
Source§impl Images
impl Images
Sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Creates a new Images client for OpenAI API.
Initializes the client by loading the OpenAI API key from
the environment variable OPENAI_API_KEY. Supports .env file loading
via dotenvy.
§Returns
Ok(Images)- A new Images client ready for useErr(OpenAIToolError)- If the API key is not found in the environment
§Example
use openai_tools::images::request::Images;
let images = Images::new().expect("API key should be set");Sourcepub fn with_auth(auth: AuthProvider) -> Self
pub fn with_auth(auth: AuthProvider) -> Self
Creates a new Images client with a custom authentication provider
Sourcepub fn detect_provider() -> Result<Self>
pub fn detect_provider() -> Result<Self>
Creates a new Images client by auto-detecting the provider
Sourcepub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
pub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self
Creates a new Images client with URL-based provider detection
Sourcepub fn from_url<S: Into<String>>(url: S) -> Result<Self>
pub fn from_url<S: Into<String>>(url: S) -> Result<Self>
Creates a new Images client from URL using environment variables
Sourcepub fn auth(&self) -> &AuthProvider
pub fn auth(&self) -> &AuthProvider
Returns the authentication provider
Sourcepub async fn generate(
&self,
prompt: &str,
options: GenerateOptions,
) -> Result<ImageResponse>
pub async fn generate( &self, prompt: &str, options: GenerateOptions, ) -> Result<ImageResponse>
Generates images from a text prompt.
Creates one or more images based on the provided text description.
§Arguments
prompt- Text description of the desired image(s)options- Generation options (model, size, quality, etc.)
§Returns
Ok(ImageResponse)- The generated image(s)Err(OpenAIToolError)- If the request fails
§Example
use openai_tools::images::request::{Images, GenerateOptions, ImageQuality, ImageStyle};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let images = Images::new()?;
let options = GenerateOptions {
quality: Some(ImageQuality::Hd),
style: Some(ImageStyle::Natural),
..Default::default()
};
let response = images.generate("A serene lake at dawn", options).await?;
if let Some(url) = &response.data[0].url {
println!("Image URL: {}", url);
}
Ok(())
}Sourcepub async fn edit(
&self,
image_path: &str,
prompt: &str,
options: EditOptions,
) -> Result<ImageResponse>
pub async fn edit( &self, image_path: &str, prompt: &str, options: EditOptions, ) -> Result<ImageResponse>
Edits an existing image based on a prompt.
Creates edited versions of an image by replacing areas indicated by a transparent mask. Only available with DALL-E 2.
§Arguments
image_path- Path to the image to edit (PNG, max 4MB, square)prompt- Text description of the desired editoptions- Edit options (mask, size, etc.)
§Returns
Ok(ImageResponse)- The edited image(s)Err(OpenAIToolError)- If the request fails
§Example
use openai_tools::images::request::{Images, EditOptions};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let images = Images::new()?;
let options = EditOptions {
mask: Some("mask.png".to_string()),
..Default::default()
};
let response = images.edit("original.png", "Add a red hat", options).await?;
println!("Edited image: {:?}", response.data[0].url);
Ok(())
}Sourcepub async fn variation(
&self,
image_path: &str,
options: VariationOptions,
) -> Result<ImageResponse>
pub async fn variation( &self, image_path: &str, options: VariationOptions, ) -> Result<ImageResponse>
Creates variations of an existing image.
Only available with DALL-E 2.
§Arguments
image_path- Path to the image to create variations of (PNG, max 4MB, square)options- Variation options (n, size, etc.)
§Returns
Ok(ImageResponse)- The image variation(s)Err(OpenAIToolError)- If the request fails
§Example
use openai_tools::images::request::{Images, VariationOptions, ImageModel};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let images = Images::new()?;
let options = VariationOptions {
model: Some(ImageModel::DallE2),
n: Some(3),
..Default::default()
};
let response = images.variation("original.png", options).await?;
for (i, image) in response.data.iter().enumerate() {
println!("Variation {}: {:?}", i + 1, image.url);
}
Ok(())
}Auto Trait Implementations§
impl Freeze for Images
impl RefUnwindSafe for Images
impl Send for Images
impl Sync for Images
impl Unpin for Images
impl UnsafeUnpin for Images
impl UnwindSafe for Images
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more