use openrouter_rust::{OpenRouterClient, embeddings::EmbeddingBuilder};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = OpenRouterClient::builder()
.api_key(std::env::var("OPENROUTER_API_KEY")?)
.build()?;
println!("Embeddings API Examples\n");
println!("1. Single text embedding:");
let request = EmbeddingBuilder::new(
"text-embedding-ada-002",
"The quick brown fox jumps over the lazy dog"
).build();
let response = client.create_embedding(request).await?;
println!(" Model: {}", response.model);
println!(" Object: {}", response.object);
println!(" Items: {}", response.data.len());
for item in &response.data {
match &item.embedding {
openrouter_rust::embeddings::EmbeddingData::FloatArray(vec) => {
println!(" Embedding dimensions: {}", vec.len());
println!(" First 5 values: {:?}", &vec[..5.min(vec.len())]);
}
openrouter_rust::embeddings::EmbeddingData::Base64String(s) => {
println!(" Base64 embedding (length: {})", s.len());
}
}
}
println!(" Usage: {} tokens", response.usage.total_tokens);
if let Some(cost) = response.usage.cost {
println!(" Cost: ${:.6}", cost);
}
println!("\n2. Batch embeddings:");
let texts = vec![
"First text to embed".to_string(),
"Second text to embed".to_string(),
"Third text to embed".to_string(),
];
let batch_request = EmbeddingBuilder::new_with_array("text-embedding-ada-002", texts).build();
let batch_response = client.create_embedding(batch_request).await?;
println!(" Generated {} embeddings", batch_response.data.len());
for (i, item) in batch_response.data.iter().enumerate() {
match &item.embedding {
openrouter_rust::embeddings::EmbeddingData::FloatArray(vec) => {
println!(" Embedding {}: {} dimensions", i, vec.len());
}
_ => {}
}
}
println!("\n3. Available embedding models:");
let models = client.list_embedding_models().await?;
for (i, model) in models.data.iter().take(5).enumerate() {
println!(" {}. {} - {}", i + 1, model.id, model.name);
println!(" Description: {}", model.description);
}
if models.data.len() > 5 {
println!(" ... and {} more models", models.data.len() - 5);
}
Ok(())
}