use llmrust::LmrsClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let model = std::env::var("LLMRUST_EMBEDDINGS_MODEL")
.unwrap_or_else(|_| "openai/text-embedding-3-small".to_string());
let llm = LmrsClient::from_env().await;
eprintln!("Using model: {model}\n");
eprintln!("=== single embed ===");
let response = llm.embed(&model, "hello from llmrust").await?;
eprintln!("model: {}", response.model);
eprintln!("vector count: {}", response.data.len());
if let Some(first) = response.data.first() {
eprintln!("dimension: {}", first.embedding.len());
}
if let Some(usage) = &response.usage {
eprintln!(
"usage: {} prompt tokens, {} total tokens",
usage.prompt_tokens, usage.total_tokens
);
}
eprintln!("\n=== batch embed ===");
let batch_resp = llm
.embed_batch(
&model,
[
"hello from llmrust",
"embeddings are useful",
"rust is fast",
],
)
.await?;
eprintln!("model: {}", batch_resp.model);
eprintln!("vector count: {}", batch_resp.data.len());
if let Some(first) = batch_resp.data.first() {
eprintln!("dimension: {}", first.embedding.len());
}
if let Some(usage) = &batch_resp.usage {
eprintln!(
"usage: {} prompt tokens, {} total tokens",
usage.prompt_tokens, usage.total_tokens
);
}
for emb in &batch_resp.data {
eprintln!(
" data[{}]: vector of length {}",
emb.index,
emb.embedding.len()
);
}
eprintln!("\nDone.");
Ok(())
}