rustglm 1.0.0

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

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let args = std::env::args().skip(1).collect::<Vec<_>>();
    let asynchronous = args.iter().any(|argument| argument == "--async");
    let prompt = args
        .into_iter()
        .find(|argument| argument != "--async")
        .unwrap_or_else(|| "A precise technical cutaway of a mechanical watch".to_owned());
    let client = ZhipuClient::new(std::env::var("ZHIPU_API_KEY")?)?;
    let request = ImageGenerationRequest::new("cogview-4-250304", prompt)
        .size("1024x1024")
        .quality("hd")
        .watermark(false);
    if asynchronous {
        let task = client.create_image_async(&request).await?;
        println!("task={} status={}", task.id, task.task_status);
        return Ok(());
    }
    let response = client.create_image(&request).await?;
    for image in response.data {
        println!("{}", image.url.as_deref().unwrap_or("inline base64 image"));
    }
    Ok(())
}