use zai_rs::model::text_rerank::RerankRequest;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
if std::env::var_os("RUST_LOG").is_some() {
let _ = tracing_subscriber::fmt()
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
.try_init();
}
let key = std::env::var("ZHIPU_API_KEY").expect("Set ZHIPU_API_KEY in your environment");
let query = "要查询的文本";
let documents = vec!["要查询的文本".to_string(), "这个文本分数低".to_string()];
let req = RerankRequest::new(key, query, documents)
.with_top_n(4)
.with_return_documents(true)
.with_return_raw_scores(true);
if let Err(e) = req.validate() {
tracing::warn!(error = %e, "Validation warning");
}
let resp = req.send().await?;
tracing::trace!("created: {}", resp.created);
tracing::trace!("id: {}", resp.id);
if let Some(rid) = &resp.request_id {
tracing::trace!("request_id: {}", rid);
}
tracing::trace!("results: {}", resp.results.len());
for r in &resp.results {
tracing::trace!("- index={} score={:.6}", r.index, r.relevance_score);
if let Some(doc) = &r.document {
tracing::trace!(" doc: {}", doc);
}
}
tracing::trace!(
"usage: prompt_tokens={} total_tokens={}",
resp.usage.prompt_tokens,
resp.usage.total_tokens
);
Ok(())
}