zai-rs 0.2.0

一个 Rust SDK, 用于调用 智普AI API
Documentation
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();
    }

    // Read API key
    let key = std::env::var("ZHIPU_API_KEY").expect("Set ZHIPU_API_KEY in your environment");

    // Query and candidate documents
    let query = "要查询的文本";
    let documents = vec!["要查询的文本".to_string(), "这个文本分数低".to_string()];

    // Build request
    let req = RerankRequest::new(key, query, documents)
        .with_top_n(4)
        .with_return_documents(true)
        .with_return_raw_scores(true);

    // Optional runtime validation (send() will validate automatically)
    if let Err(e) = req.validate() {
        tracing::warn!(error = %e, "Validation warning");
    }

    // Send
    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(())
}