use openmodex::{Error, OpenModex};
#[tokio::main]
async fn main() -> Result<(), Error> {
let client = OpenModex::from_env()?;
println!("=== Available Models ===\n");
let models = client.models().list().await?;
for model in &models.data {
println!(
" {} ({}) - {}",
model.id, model.provider, model.description
);
if let Some(pricing) = &model.pricing {
println!(
" Pricing: ${}/M input, ${}/M output",
pricing.openmodex_input_per_m, pricing.openmodex_output_per_m
);
}
}
println!("\nTotal: {} models", models.total);
println!("\n=== Model Details ===\n");
let model = client.models().get("gpt-4o").await?;
println!("ID: {}", model.id);
println!("Name: {}", model.name);
println!("Provider: {}", model.provider);
println!("Context length: {}", model.context_length);
if let Some(quality) = &model.quality_scores {
println!("Quality (overall): {}", quality.overall);
}
println!("\n=== Model Comparison ===\n");
let comparison = client
.models()
.compare(&["gpt-4o", "claude-3.5-sonnet"])
.await?;
for (id, item) in &comparison.comparison {
println!(" {id}: {} ({})", item.name, item.provider);
if let Some(pricing) = &item.pricing {
println!(
" Input: ${}/M, Output: ${}/M",
pricing.openmodex_input_per_m, pricing.openmodex_output_per_m
);
}
}
if let Some(highlights) = &comparison.highlights {
println!("\n Cheapest: {}", highlights.cheapest);
println!(" Fastest: {}", highlights.fastest);
println!(" Best quality: {}", highlights.best_quality);
}
Ok(())
}