use text_to_cypher::{AdapterKind, TextToCypherClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
#[cfg(feature = "server")]
tracing_subscriber::fmt()
.with_env_filter(
tracing_subscriber::EnvFilter::try_from_default_env()
.unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info")),
)
.init();
let api_key = std::env::var("OPENAI_API_KEY")
.or_else(|_| std::env::var("ANTHROPIC_API_KEY"))
.or_else(|_| std::env::var("GEMINI_API_KEY"))
.unwrap_or_default();
let client = TextToCypherClient::new("gpt-4o-mini", &api_key, "falkor://127.0.0.1:6379");
println!("=== Method 1: list_models for a single provider ===\n");
let adapter = AdapterKind::OpenAI;
match client.list_models(adapter).await {
Ok(models) => {
println!("{adapter}: found {} models", models.len());
for model in &models {
println!(" • {model}");
}
}
Err(e) => eprintln!(" ✗ Error fetching {adapter} models: {e}"),
}
println!("\n=== Method 2: list_all_models across all providers ===\n");
match client.list_all_models().await {
Ok(all_models) => {
let total: usize = all_models.values().map(Vec::len).sum();
println!("Total models across all providers: {total}\n");
for (kind, models) in all_models {
println!("{kind}: {} models", models.len());
}
}
Err(e) => eprintln!("Error fetching all models: {e}"),
}
println!("\n=== Example completed successfully! ===");
Ok(())
}