use reasonkit::error::Result;
use reasonkit::thinktool::{
MultiModelValidator, MultiModelValidatorConfig, ProtocolExecutor, ProtocolInput,
};
#[tokio::main]
async fn main() -> Result<()> {
println!("ReasonKit Multi-Model Semantic Validator Example");
println!("================================================\n");
let executor = ProtocolExecutor::new()?;
let input = ProtocolInput::query(
"Should companies prioritize short-term profits over long-term sustainability?",
);
println!("1. Executing GigaThink protocol for initial analysis...");
let protocol_result = executor.execute("gigathink", input.clone()).await?;
println!(" Protocol executed successfully");
println!(" Confidence: {:.1}%", protocol_result.confidence * 100.0);
println!("\n2. Creating multi-model validator...");
let validator_config = MultiModelValidatorConfig {
model_count: 3, majority_threshold: 0.67, enable_factual_check: true, enable_logical_check: true, query_timeout_secs: 30, ..Default::default()
};
let validator = MultiModelValidator::with_config(validator_config.clone())?;
println!(
" Validator configured for {} models",
validator_config.model_count
);
println!(
" Majority threshold: {:.1}%",
validator_config.majority_threshold * 100.0
);
println!("\n3. Building validation prompt...");
let prompt = validator.build_validation_prompt(&protocol_result, &input);
println!(" Validation prompt built ({} chars)", prompt.len());
println!("\n4. Multi-model validation requires API keys for multiple providers.");
println!(" Configure your environment variables:");
println!(" - ANTHROPIC_API_KEY (for Claude)");
println!(" - OPENAI_API_KEY (for GPT)");
println!(" - GOOGLE_AI_API_KEY (for Gemini)");
println!(" - XAI_API_KEY (for Grok)");
println!(" - DEEPSEEK_API_KEY (for DeepSeek)");
println!(" - OPENROUTER_API_KEY (for OpenRouter)");
println!("\n Multi-model validation example completed!");
Ok(())
}