openmodex 0.1.1

Official Rust SDK for the OpenModex API
Documentation
use openmodex::{ChatCompletionRequest, ChatMessage, Error, OpenModex};

#[tokio::main]
async fn main() -> Result<(), Error> {
    // Create a client (uses OPENMODEX_API_KEY env var if no key is passed).
    let client = OpenModex::from_env()?;

    // Send a chat completion request.
    let response = client
        .chat()
        .completions()
        .create(
            ChatCompletionRequest::new("gpt-4o")
                .message(ChatMessage::system("You are a helpful assistant."))
                .message(ChatMessage::user("What is OpenModex?"))
                .temperature(0.7)
                .max_tokens(256),
        )
        .await?;

    // Print the response.
    let content = response.choices[0]
        .message
        .as_ref()
        .and_then(|m| m.content.as_deref())
        .unwrap_or("");
    println!("Assistant: {content}");

    // Print usage information.
    if let Some(usage) = &response.usage {
        println!(
            "\nTokens: {} prompt + {} completion = {} total",
            usage.prompt_tokens, usage.completion_tokens, usage.total_tokens
        );
    }

    // Print OpenModex metadata.
    if let Some(meta) = &response.openmodex {
        println!("Provider: {}", meta.provider);
        println!("Latency: {}ms", meta.latency_ms);
        println!("Cache hit: {}", meta.cache_hit);
    }

    Ok(())
}