use std::env;
use valyu::{DeepSearchRequest, ValyuClient};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv().ok();
let api_key = env::var("VALYU_API_KEY")
.expect("VALYU_API_KEY must be set in .env file");
let client = ValyuClient::new(api_key);
let request = DeepSearchRequest::new("artificial intelligence breakthroughs 2024")
.with_max_results(10)
.with_search_type("web")
.with_fast_mode(false)
.with_response_length("medium")
.with_relevance_threshold(0.7)
.with_date_range("2024-01-01", "2024-12-31");
println!("🔍 Advanced Search");
println!("Query: {}", request.query);
println!("Max results: {:?}", request.max_num_results);
println!("Search type: {:?}", request.search_type);
println!("Response length: {:?}", request.response_length);
println!("Relevance threshold: {:?}", request.relevance_threshold);
println!("Date range: {} to {}\n",
request.start_date.as_deref().unwrap_or("N/A"),
request.end_date.as_deref().unwrap_or("N/A")
);
let response = client.deep_search(&request).await?;
println!("✅ Search completed successfully!\n");
if let Some(tx_id) = &response.tx_id {
println!("📋 Transaction ID: {}", tx_id);
}
if let Some(total_chars) = response.total_characters {
println!("📝 Total characters: {}", total_chars);
}
if let Some(cost) = response.total_deduction_dollars {
println!("💰 Cost: ${:.4}", cost);
}
if let Some(results) = &response.results {
println!("\n📊 Found {} results\n", results.len());
for (idx, result) in results.iter().enumerate() {
println!("[{}] {}", idx + 1, result.title.as_deref().unwrap_or("Untitled"));
if let Some(url) = &result.url {
println!(" URL: {}", url);
}
if let Some(pub_date) = &result.publication_date {
println!(" Published: {}", pub_date);
}
if let Some(citation_count) = result.citation_count {
println!(" Citations: {}", citation_count);
}
println!();
}
}
Ok(())
}