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!("=======================================");
init_env();
let use_mock = env::var("USE_MOCK_RESPONSES").unwrap_or_default() == "true";
println!("📡 Mode: {}", if use_mock { "MOCK" } else { "REAL API" });
let mut ctx = SymbolicContext::new();
ctx.set("prompt", "Write a haiku about artificial intelligence");
println!("\n🤖 Testing LLM Providers:");
println!("-------------------------");
let registry = llm_registry();
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);
}
}
}
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);
}
}
}
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(())
}