use embedrs::{EmbedResult, cloud};
#[tokio::main]
async fn main() -> embedrs::Result<()> {
dotenvy::from_filename(".env.local").ok();
dotenvy::from_filename(
std::path::Path::new(env!("CARGO_MANIFEST_DIR"))
.parent()
.unwrap()
.parent()
.unwrap()
.join(".env.local"),
)
.ok();
let api_key = std::env::var("OPENAI_API_KEY").expect("OPENAI_API_KEY required");
let client = cloud(&api_key);
let texts: Vec<String> = vec![
"Rust is a systems programming language focused on safety and performance.".into(),
"The quick brown fox jumps over the lazy dog.".into(),
"Machine learning models can generate human-like text.".into(),
"Tokyo is the capital of Japan.".into(),
];
let result: EmbedResult = client.embed(texts).await?;
println!("model: {}", result.model);
println!("texts embedded: {}", result.embeddings.len());
println!("dimensions: {}", result.embeddings[0].len());
println!("total tokens: {}", result.usage.total_tokens);
for (i, embedding) in result.embeddings.iter().enumerate() {
let preview: Vec<String> = embedding
.iter()
.take(5)
.map(|v| format!("{v:.4}"))
.collect();
println!(" [{i}] first 5 values: [{}]", preview.join(", "));
}
Ok(())
}