soma-core 2.0.2

World's first production-ready self-aware development system with meta-cognitive capabilities and cognitive reasoning engine for intelligent development platforms
Documentation
// Example: Testing LLM API Integration
// Demonstrates how to use real API calls with SOMA Core

use soma_core::llm_operator::{init_env, llm_registry};
use soma_core::memory::SymbolicContext;
use std::env;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    println!("🚀 SOMA Core LLM API Integration Test");
    println!("=======================================");

    // Initialize environment variables
    init_env();

    // Check if we're in mock mode
    let use_mock = env::var("USE_MOCK_RESPONSES").unwrap_or_default() == "true";
    println!("📡 Mode: {}", if use_mock { "MOCK" } else { "REAL API" });

    // Create a test prompt
    let mut ctx = SymbolicContext::new();
    ctx.set("prompt", "Write a haiku about artificial intelligence");

    println!("\n🤖 Testing LLM Providers:");
    println!("-------------------------");

    // Get the LLM registry
    let registry = llm_registry();

    // Test GPT-4
    println!("\n🔍 Testing GPT-4...");
    if let Some(gpt) = registry.get("gpt_reflect") {
        match gpt.execute(&ctx) {
            Ok(result) => {
                let default_response = "No response".to_string();
                let response = result.get("response").unwrap_or(&default_response);
                println!("✅ GPT-4 Response:\n{}", response);
            }
            Err(e) => {
                println!("❌ GPT-4 Error: {}", e);
            }
        }
    }

    // Test Claude
    println!("\n🔍 Testing Claude...");
    if let Some(claude) = registry.get("claude_plan") {
        match claude.execute(&ctx) {
            Ok(result) => {
                let default_response = "No response".to_string();
                let response = result.get("response").unwrap_or(&default_response);
                println!("✅ Claude Response:\n{}", response);
            }
            Err(e) => {
                println!("❌ Claude Error: {}", e);
            }
        }
    }

    // Test Gemini
    println!("\n🔍 Testing Gemini...");
    if let Some(gemini) = registry.get("gemini_insight") {
        match gemini.execute(&ctx) {
            Ok(result) => {
                let default_response = "No response".to_string();
                let response = result.get("response").unwrap_or(&default_response);
                println!("✅ Gemini Response:\n{}", response);
            }
            Err(e) => {
                println!("❌ Gemini Error: {}", e);
            }
        }
    }

    println!("\n🎯 Test Complete!");

    if use_mock {
        println!("\n📝 Instructions for Real API Testing:");
        println!("1. Edit your .env file in the project root");
        println!("2. Add your real API keys (replace placeholder values)");
        println!("3. Set USE_MOCK_RESPONSES=false in .env");
        println!("4. Run again: cargo run --example api_test");
        println!("\n🔒 Security Note: Never commit real API keys to version control!");
    } else {
        println!("\n✅ Real API integration test completed successfully!");
        println!("🔒 API keys are loaded securely from environment variables.");
    }

    Ok(())
}