use qai_sdk::*;
use qai_sdk::LanguageModel;
#[tokio::main]
async fn main() -> qai_sdk::Result<()> {
dotenvy::dotenv().ok();
let prompt = Prompt {
messages: vec![
Message {
role: Role::System,
content: vec![Content::Text {
text: "You are a concise assistant. Answer in one sentence.".to_string(),
}],
},
Message {
role: Role::User,
content: vec![Content::Text {
text: "What is Rust's ownership model?".to_string(),
}],
},
],
};
let options = GenerateOptions {
model_id: "gpt-4o-mini".to_string(),
max_tokens: Some(100),
temperature: Some(0.7),
top_p: None,
stop_sequences: None,
tools: None,
};
println!("=== OpenAI ===");
let api_key = std::env::var("OPENAI_API_KEY").unwrap_or_default();
let model = qai_sdk::openai::OpenAIModel::new(api_key);
let result = model.generate(prompt.clone(), options.clone()).await?;
println!("Response: {}", result.text);
println!(
"Tokens: {} in, {} out",
result.usage.prompt_tokens, result.usage.completion_tokens
);
println!("Finish: {}\n", result.finish_reason);
println!("=== Anthropic ===");
let api_key = std::env::var("ANTHROPIC_API_KEY").unwrap_or_default();
let model = qai_sdk::anthropic::AnthropicModel::new(api_key);
let mut opts = options.clone();
opts.model_id = "claude-3-haiku-20240307".to_string();
let result = model.generate(prompt.clone(), opts).await?;
println!("Response: {}", result.text);
println!(
"Tokens: {} in, {} out\n",
result.usage.prompt_tokens, result.usage.completion_tokens
);
println!("=== Google Gemini ===");
let api_key = std::env::var("GOOGLE_GENERATIVE_AI_API_KEY").unwrap_or_default();
let model = qai_sdk::google::GoogleModel::new(api_key);
let mut opts = options.clone();
opts.model_id = "gemini-1.5-flash".to_string();
let result = model.generate(prompt.clone(), opts).await?;
println!("Response: {}", result.text);
println!(
"Tokens: {} in, {} out\n",
result.usage.prompt_tokens, result.usage.completion_tokens
);
println!("=== DeepSeek ===");
let api_key = std::env::var("DEEPSEEK_API_KEY").unwrap_or_default();
let model = qai_sdk::deepseek::DeepSeekModel::new(api_key);
let mut opts = options.clone();
opts.model_id = "deepseek-chat".to_string();
let result = model.generate(prompt.clone(), opts).await?;
println!("Response: {}", result.text);
println!(
"Tokens: {} in, {} out\n",
result.usage.prompt_tokens, result.usage.completion_tokens
);
println!("=== xAI (Grok) ===");
let api_key = std::env::var("XAI_API_KEY").unwrap_or_default();
let model = qai_sdk::xai::XAIModel::new(api_key);
let mut opts = options.clone();
opts.model_id = "grok-2".to_string();
let result = model.generate(prompt.clone(), opts).await?;
println!("Response: {}", result.text);
println!(
"Tokens: {} in, {} out\n",
result.usage.prompt_tokens, result.usage.completion_tokens
);
Ok(())
}