use stakai::{GenerateRequest, Inference, InferenceConfig, Message, Model, Role};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("=== Test 1: Explicit Config ===");
let client = Inference::with_config(
InferenceConfig::new()
.openai(
"test-key-openai",
Some("https://api.openai.com/v1".to_string()),
)
.anthropic("test-key-anthropic", None)
.gemini("test-key-gemini", None)
.temperature(0.7)
.max_tokens(100),
)?;
println!("✓ Client created with explicit config");
println!(
" Registered providers: {:?}",
client.registry().list_providers()
);
println!("\n=== Test 2: Default Config (from env) ===");
let client_default = Inference::new();
println!("✓ Client created with default config");
println!(
" Registered providers: {:?}",
client_default.registry().list_providers()
);
println!("\n=== Test 3: Builder Pattern ===");
let client_builder = Inference::builder()
.with_inference_config(InferenceConfig::new().openai("builder-key", None))
.with_temperature(0.5)
.build()?;
println!("✓ Client created with builder pattern");
println!(
" Registered providers: {:?}",
client_builder.registry().list_providers()
);
println!("\n=== Test 4: Request API Test ===");
let request = GenerateRequest::new(
Model::custom("gpt-4", "openai"),
vec![Message::new(Role::User, "Hello!")],
);
println!("✓ Request created successfully");
println!(" Model: {}", request.model.id);
println!(" Messages: {}", request.messages.len());
println!("\n=== All Tests Passed ===");
Ok(())
}