rustglm 1.0.0

Production-oriented async Rust SDK for Zhipu GLM, Realtime, Batch, RAG, and MCP
Documentation
use rustglm::{KnowledgeUpdateRequest, ZhipuClient};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut args = std::env::args().skip(1);
    let operation = args.next().unwrap_or_else(|| "list".to_owned());
    let client = ZhipuClient::new(std::env::var("ZHIPU_API_KEY")?)?;
    match operation.as_str() {
        "list" => println!("{:#?}", client.knowledge_bases(1, 20).await?),
        "capacity" => println!("{:#?}", client.knowledge_capacity().await?),
        "get" => {
            let id = args
                .next()
                .ok_or("knowledge_management get <knowledge-id>")?;
            println!("{:#?}", client.knowledge_base(&id).await?);
        }
        "update" => {
            let id = args
                .next()
                .ok_or("knowledge_management update <knowledge-id> <description>")?;
            let description = args
                .next()
                .ok_or("knowledge_management update <knowledge-id> <description>")?;
            let request = KnowledgeUpdateRequest {
                description: Some(description),
                ..KnowledgeUpdateRequest::default()
            };
            println!("{:#?}", client.update_knowledge_base(&id, &request).await?);
        }
        "delete" => {
            let id = args
                .next()
                .ok_or("knowledge_management delete <knowledge-id>")?;
            println!("{:#?}", client.delete_knowledge_base(&id).await?);
        }
        _ => return Err("operation must be list, capacity, get, update, or delete".into()),
    }
    Ok(())
}