Skip to main content

Files

Struct Files 

Source
pub struct Files { /* private fields */ }
Expand description

Client for interacting with the OpenAI Files API.

This struct provides methods to upload, list, retrieve, delete files, and get file content. Use Files::new() to create a new instance.

§Providers

The client supports two providers:

  • OpenAI: Standard OpenAI API (default)
  • Azure: Azure OpenAI Service

§Example

use openai_tools::files::request::{Files, FilePurpose};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let files = Files::new()?;

    // Upload a file for fine-tuning
    let file = files.upload_path("training_data.jsonl", FilePurpose::FineTune).await?;
    println!("Uploaded: {} ({})", file.filename, file.id);

    Ok(())
}

Implementations§

Source§

impl Files

Source

pub fn new() -> Result<Self>

Creates a new Files 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(Files) - A new Files client ready for use
  • Err(OpenAIToolError) - If the API key is not found in the environment
§Example
use openai_tools::files::request::Files;

let files = Files::new().expect("API key should be set");
Source

pub fn with_auth(auth: AuthProvider) -> Self

Creates a new Files client with a custom authentication provider

Source

pub fn azure() -> Result<Self>

Creates a new Files client for Azure OpenAI API

Source

pub fn detect_provider() -> Result<Self>

Creates a new Files client by auto-detecting the provider

Source

pub fn with_url<S: Into<String>>(base_url: S, api_key: S) -> Self

Creates a new Files client with URL-based provider detection

Source

pub fn from_url<S: Into<String>>(url: S) -> Result<Self>

Creates a new Files client from URL using environment variables

Source

pub fn auth(&self) -> &AuthProvider

Returns the authentication provider

Source

pub fn base_url<T: AsRef<str>>(&mut self, url: T) -> &mut Self

Sets a custom API endpoint URL (OpenAI only)

Use this to point to alternative OpenAI-compatible APIs.

§Arguments
  • url - The base URL (e.g., “https://my-proxy.example.com/v1”)
§Returns

A mutable reference to self for method chaining

Source

pub fn timeout(&mut self, timeout: Duration) -> &mut Self

Sets the request timeout duration.

§Arguments
  • timeout - The maximum time to wait for a response
§Returns

A mutable reference to self for method chaining

§Example
use std::time::Duration;
use openai_tools::files::request::Files;

let mut files = Files::new().unwrap();
files.timeout(Duration::from_secs(120));  // Longer timeout for file uploads
Source

pub async fn upload_path( &self, file_path: &str, purpose: FilePurpose, ) -> Result<File>

Uploads a file from a file path.

The file will be uploaded with the specified purpose. Individual files can be up to 512 MB, and the total size of all files uploaded by one organization can be up to 100 GB.

§Arguments
  • file_path - Path to the file to upload
  • purpose - The intended purpose of the uploaded file
§Returns
  • Ok(File) - The uploaded file object
  • Err(OpenAIToolError) - If the file cannot be read or the upload fails
§Example
use openai_tools::files::request::{Files, FilePurpose};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let files = Files::new()?;
    let file = files.upload_path("data.jsonl", FilePurpose::FineTune).await?;
    println!("Uploaded: {}", file.id);
    Ok(())
}
Source

pub async fn upload_bytes( &self, content: &[u8], filename: &str, purpose: FilePurpose, ) -> Result<File>

Uploads a file from bytes.

The file will be uploaded with the specified filename and purpose.

§Arguments
  • content - The file content as bytes
  • filename - The name to give the file
  • purpose - The intended purpose of the uploaded file
§Returns
  • Ok(File) - The uploaded file object
  • Err(OpenAIToolError) - If the upload fails
§Example
use openai_tools::files::request::{Files, FilePurpose};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let files = Files::new()?;

    let content = b"{\"messages\": [{\"role\": \"user\", \"content\": \"Hello\"}]}";
    let file = files.upload_bytes(content, "training.jsonl", FilePurpose::FineTune).await?;

    println!("Uploaded: {}", file.id);
    Ok(())
}
Source

pub async fn list( &self, purpose: Option<FilePurpose>, ) -> Result<FileListResponse>

Lists all files that belong to the user’s organization.

Optionally filter by purpose.

§Arguments
  • purpose - Optional filter by file purpose
§Returns
  • Ok(FileListResponse) - The list of files
  • Err(OpenAIToolError) - If the request fails
§Example
use openai_tools::files::request::{Files, FilePurpose};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let files = Files::new()?;

    // List all files
    let all_files = files.list(None).await?;
    println!("Total files: {}", all_files.data.len());

    // List only fine-tuning files
    let ft_files = files.list(Some(FilePurpose::FineTune)).await?;
    println!("Fine-tuning files: {}", ft_files.data.len());

    Ok(())
}
Source

pub async fn retrieve(&self, file_id: &str) -> Result<File>

Retrieves details of a specific file.

§Arguments
  • file_id - The ID of the file to retrieve
§Returns
  • Ok(File) - The file details
  • Err(OpenAIToolError) - If the file is not found or the request fails
§Example
use openai_tools::files::request::Files;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let files = Files::new()?;
    let file = files.retrieve("file-abc123").await?;

    println!("File: {}", file.filename);
    println!("Size: {} bytes", file.bytes);
    println!("Purpose: {}", file.purpose);
    Ok(())
}
Source

pub async fn delete(&self, file_id: &str) -> Result<DeleteResponse>

Deletes a file.

§Arguments
  • file_id - The ID of the file to delete
§Returns
  • Ok(DeleteResponse) - Confirmation of deletion
  • Err(OpenAIToolError) - If the file cannot be deleted or the request fails
§Example
use openai_tools::files::request::Files;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let files = Files::new()?;
    let result = files.delete("file-abc123").await?;

    if result.deleted {
        println!("File {} was deleted", result.id);
    }
    Ok(())
}
Source

pub async fn content(&self, file_id: &str) -> Result<Vec<u8>>

Retrieves the content of a file.

§Arguments
  • file_id - The ID of the file to retrieve content from
§Returns
  • Ok(Vec<u8>) - The file content as bytes
  • Err(OpenAIToolError) - If the file cannot be retrieved or the request fails
§Example
use openai_tools::files::request::Files;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let files = Files::new()?;
    let content = files.content("file-abc123").await?;

    // Convert to string if it's text content
    let text = String::from_utf8(content)?;
    println!("Content: {}", text);
    Ok(())
}

Auto Trait Implementations§

§

impl Freeze for Files

§

impl RefUnwindSafe for Files

§

impl Send for Files

§

impl Sync for Files

§

impl Unpin for Files

§

impl UnwindSafe for Files

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more