Expand description
§ZAI-RS: Zhipu AI Rust SDK
zai-rs is a type-safe Rust SDK for 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
| Capability | Description | Module |
|---|---|---|
| Chat completions | Sync / async text, vision, and voice | model |
| Image generation | Text-to-image | model::gen_image |
| Video generation | Async text-to-video | model::gen_video_async |
| Text-to-speech | Audio synthesis | model::text_to_audio |
| Speech-to-text | Audio transcription | model::audio_to_text |
| Voice cloning | Voice clone, list, delete | model::voice_clone |
| Text embeddings | Embeddings, reranking, tokenization | model::text_embedded |
| Content moderation | Safety analysis | model::moderation |
| OCR | Handwriting recognition | model::ocr |
| File management | Upload, list, content, delete | file |
| Batch processing | Create, list, retrieve, cancel | batches |
| Knowledge base | CRUD, document upload, retrieval | knowledge |
| Tool calling | Function calling, web search, file parsing | tool |
| MCP | Unified search, reader, repository, and vision capabilities | mcp |
| Agent | Agent creation & management | agent |
| Tool execution framework | Dynamic registration, execution, caching | toolkits |
| Real-time | WebSocket audio/video (GLM-Realtime) | realtime |
| Coding Plan usage | GLM Coding Plan quota / 余量查询 | usage |
§Module Structure
client— HTTP client, connection pool, retry strategy, error typesmodel— Data models, request/response types, model definitions, SSE parsingfile— 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)mcp— Unified MCP capabilities with automatic backend and transport selection (featuremcp)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(())
}§Configuration
ZaiClient owns credentials, validated endpoint families, connection
pooling, timeouts, and retry policy. Clone the client to share the same
transport safely across requests.
use zai_rs::client::{ApiFamily, ZaiClient};
let client = ZaiClient::builder("abc123.abcdefghijklmnopqrstuvwxyz")
.endpoint(
ApiFamily::CodingPaasV4,
"https://open.bigmodel.cn/api/coding/paas/v4",
)
.build()?;
assert_eq!(
client.endpoints().base(ApiFamily::CodingPaasV4).as_str(),
"https://open.bigmodel.cn/api/coding/paas/v4"
);§Feature Flags
| Feature | Default | Description |
|---|---|---|
| (default) | enabled | Core API functionality |
realtime | disabled | Real-time audio/video over WebSocket (GLM-Realtime) |
mcp | disabled | Unified high-level MCP capability client |
rmcp-kits | disabled | Enable RMCP protocol bridge for MCP tool calling |
toolkits | disabled | JSON-Schema validation for the tool-execution framework |
Enable in Cargo.toml:
[dependencies]
zai-rs = { version = "0.6", features = ["mcp"] }§Error Handling
All API calls return ZaiResult<T>,
unified under the ZaiError enum:
Error variants distinguish HTTP, authentication, account, API, rate-limit,
content-policy, file, network, JSON, realtime, and unknown failures. Use
ZaiError::category when recovery logic only
needs a coarse classification.
§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§
Modules§
- agent
- Agent v1 wire contracts
- 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
- mcp
mcp - Unified MCP capability client. Unified API for MCP capabilities.
- model
- Model Module
- prelude
- Convenience imports for the most common client and chat APIs.
- realtime
realtime - WebSocket realtime (GLM-Realtime) client — audio/video over a WebSocket.
Gated behind the
realtimeCargo feature (off by default). - services
- Typed service facades for application, assistant, image, and document tools. Request and response types for service-oriented Z.AI endpoints.
- tool
- Tool Module
- toolkits
- Tool definition, execution, caching, and LLM tool-call parsing utilities. Supports both static tool definitions and dynamic registration at runtime.
- usage
- Coding Plan Usage / Quota Query