rustglm 1.0.0

Production-oriented async Rust SDK for Zhipu GLM, Realtime, Batch, RAG, and MCP
Documentation
use std::io::{self, Write};

use rustglm::{OfficialAgentMessage, OfficialAgentRequest, ZhipuClient};

fn read_line(prompt: &str) -> io::Result<String> {
    print!("{prompt}");
    io::stdout().flush()?;
    let mut value = String::new();
    io::stdin().read_line(&mut value)?;
    Ok(value.trim().to_owned())
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let api_key = match std::env::var("ZHIPU_API_KEY") {
        Ok(value) if !value.trim().is_empty() => value,
        _ => read_line("请输入智谱 API Key(输入内容会显示): ")?,
    };
    let agent_id = match read_line("智能体 ID,直接回车使用 general_translation: ")? {
        value if value.is_empty() => "general_translation".to_owned(),
        value => value,
    };
    let input = read_line("请输入发送给智能体的内容: ")?;
    let client = ZhipuClient::new(api_key)?;
    let response = client
        .official_agent(
            &OfficialAgentRequest::new(agent_id).message(OfficialAgentMessage::user(input)),
        )
        .await?;
    println!("{response:#?}");
    Ok(())
}