Skip to main content

Crate zai_rs

Crate zai_rs 

Source
Expand description

§ZAI-RS: Zhipu AI Rust SDK

zai-rs is a type-safe Rust SDK providing full coverage of the Zhipu AI (BigModel) API. Strongly-typed clients and models span chat completions, image generation, speech recognition, text embeddings, knowledge-base management, and more.

§Capabilities

CapabilityDescriptionModule
Chat completionsSync / async / streaming text, vision, voicemodel
Image generationText-to-imagemodel::gen_image
Video generationAsync text-to-videomodel::gen_video_async
Text-to-speechAudio synthesismodel::text_to_audio
Speech-to-textAudio transcriptionmodel::audio_to_text
Voice cloningVoice clone, list, deletemodel::voice_clone
Text embeddingsEmbeddings, reranking, tokenizationmodel::text_embedded
Content moderationSafety analysismodel::moderation
OCRHandwriting recognitionmodel::ocr
File managementUpload, list, content, deletefile
Batch processingCreate, list, retrieve, cancelbatches
Knowledge baseCRUD, document upload, retrievalknowledge
Tool callingFunction calling, web search, file parsingtool
AgentAgent creation & managementagent
Tool execution frameworkDynamic registration, execution, cachingtoolkits
Real-timeWebSocket audio/video (GLM-Realtime)realtime
Coding Plan usageGLM Coding Plan quota / 余量查询usage

§Module Structure

  • client — HTTP client, connection pool, retry strategy, error types
  • model — Data models, request/response types, model definitions, SSE parsing
  • file — File management (upload, list, content, delete)
  • batches — Batch processing (create, list, retrieve, cancel)
  • knowledge — Knowledge-base management (CRUD, document upload, retrieval)
  • tool — Tool implementations (web search, file parsing)
  • agent — Agent API (creation, chat, history)
  • toolkits — Tool execution framework (registration, execution, caching, RMCP bridge)
  • realtime — Real-time audio/video communication (WebSocket, experimental)
  • usage — Coding Plan usage / quota query (GLM Coding Plan 余量查询)

§Quick Start

use zai_rs::{client::ZaiClient, model::*};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let model = GLM4_5_flash {};
    let client = ZaiClient::from_env()?;
    let request = ChatCompletion::new(model, TextMessage::user("Hello"));
    let _resp = request.send_via(&client).await?;
    Ok(())
}

§Streaming Requests

use zai_rs::{client::ZaiClient, model::*};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let model = GLM4_5_flash {};
    let client = ZaiClient::from_env()?;
    let request = ChatCompletion::new(model, TextMessage::user("Hello"));
    let _response = request.send_via(&client).await?;
    Ok(())
}

§Configuration

ZaiConfig is the central place for credentials, endpoint families, and HTTP transport settings. It mirrors the API families exposed by client::EndpointConfig, including the dedicated Coding Plan endpoint required by official Zhipu AI documentation.

# fn main() -> Result<(), Box<dyn std::error::Error>> {
use zai_rs::ZaiConfig;

let config = ZaiConfig::builder()
    .api_key("abc123.abcdefghijklmnopqrstuvwxyz")
    .paas_v4_base("https://open.bigmodel.cn/api/paas/v4")
    .coding_paas_v4_base("https://open.bigmodel.cn/api/coding/paas/v4")
    .build()?;

assert_eq!(
    config.coding_paas_v4_url("chat/completions"),
    "https://open.bigmodel.cn/api/coding/paas/v4/chat/completions"
);
# Ok(())
# }

§Feature Flags

FeatureDefaultDescription
(default)enabledCore API functionality
realtimedisabledReal-time audio/video over WebSocket (GLM-Realtime)
rmcp-kitsdisabledEnable RMCP protocol bridge for MCP tool calling
tool-validationdisabledRuntime validation of tool-call arguments against their JSON Schema

Enable in Cargo.toml:

[dependencies]
zai-rs = { version = "0.4", features = ["rmcp-kits"] }

§Error Handling

All API calls return ZaiResult<T>, unified under the ZaiError enum:

  • ApiError — Business-level API error (with code and message)
  • NetworkError — Network / timeout error
  • JsonError — JSON serialization / deserialization error
  • RateLimitError — Rate-limit or quota exceeded
  • ContentPolicyError — API policy or unsafe-content block
  • AuthError — Authentication / authorization error

§Design Principles

  • Compile-time type safety — trait bounds and type-state patterns ensure model/message compatibility at compile time
  • Zero-cost abstractions — marker traits and type-state patterns impose no runtime overhead
  • Consistent API style — request builders carry typed payloads and all network operations are dispatched with send_via(&ZaiClient)

Re-exports§

pub use client::ZaiClient;
pub use client::error::*;

Modules§

agent
Agent v1 API (plan P04).
batches
Batch Processing Module
client
HTTP client infrastructure: the shared ZaiClient, validated endpoints, transport policies and error types.
file
File Management Module
knowledge
Knowledge Base Module
model
Model Module
prelude
Prelude for the zai-rs 0.5 public surface (plan P10.1).
realtimerealtime
WebSocket realtime (GLM-Realtime) client — audio/video over a WebSocket. Gated behind the realtime Cargo feature (off by default).
services
tool
Tool Module
toolkits
Toolkits Module
usage
Coding Plan Usage / Quota Query

Macros§

define_model_type
Macro for defining AI model types with standard implementations.
impl_message_binding
Macro for binding message types to AI models.
impl_model_markers
Macro for implementing multiple capability traits on model types.