openrouter-rust 0.1.0

A modular, type-safe Rust client for the OpenRouter API
Documentation
use openrouter_rust::{OpenRouterClient, ChatCompletionBuilder};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Initialize the client with your OpenRouter API key
    let client = OpenRouterClient::builder()
        .api_key(std::env::var("OPENROUTER_API_KEY")?)
        .http_referer("https://your-site.com")
        .x_title("My Rust App")
        .build()?;

    // Build a chat completion request using the builder pattern
    let request = ChatCompletionBuilder::new("openai/gpt-3.5-turbo")
        .system_message("You are a helpful assistant.")
        .user_message("What is the capital of France?")
        .temperature(0.7)
        .max_tokens(150)
        .build();

    // Send the request and get the response
    println!("Sending request to OpenRouter...");
    let response = client.chat_completion(request).await?;

    // Print the response
    if let Some(choice) = response.choices.first() {
        println!("\nResponse from model ({}):", response.model);
        if let Some(ref content) = choice.message.content {
            println!("{}", content);
        }
        
        if let Some(ref usage) = response.usage {
            println!("\nUsage:");
            println!("  Prompt tokens: {}", usage.prompt_tokens);
            println!("  Completion tokens: {}", usage.completion_tokens);
            println!("  Total tokens: {}", usage.total_tokens);
            if let Some(cost) = usage.cost {
                println!("  Cost: ${:.6}", cost);
            }
        }
    }

    Ok(())
}