reasonkit-core 0.1.8

The Reasoning Engine — Auditable Reasoning for Production AI | Rust-Native | Turn Prompts into Protocols
//! Example usage of the Multi-Model Semantic Validator
//!
//! This example demonstrates how to use the multi-model validator to cross-check
//! ReasonKit outputs against multiple LLMs for consensus validation.

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");

    // Create a protocol executor
    let executor = ProtocolExecutor::new()?;

    // Create input for validation
    let input = ProtocolInput::query(
        "Should companies prioritize short-term profits over long-term sustainability?",
    );

    // Execute a reasoning protocol (e.g., GigaThink for multi-perspective analysis)
    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);

    // Create multi-model validator with default configuration
    // This will consult 3+ different LLM models for consensus validation
    println!("\n2. Creating multi-model validator...");
    let validator_config = MultiModelValidatorConfig {
        model_count: 3,             // Consult 3 different models
        majority_threshold: 0.67,   // Require 2/3 majority consensus
        enable_factual_check: true, // Check factual accuracy
        enable_logical_check: true, // Check logical consistency
        query_timeout_secs: 30,     // 30 second timeout per model
        ..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
    );

    // Build validation prompt (demonstration)
    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(())
}