xAI SDK
A comprehensive Rust SDK for xAI's API, providing type-safe gRPC clients for all xAI services including Grok language models, embeddings, image generation, and more.
Features
- Complete API Coverage: Full gRPC client implementation for all xAI services
- Type Safety: Auto-generated Rust types from Protocol Buffers
- Async/Await: Built on Tokio for high-performance async operations
- Multiple Models: Support for all xAI language models (Grok-2, Grok-3, etc.)
- Streaming Support: Real-time streaming for chat completions and text generation
- Response Assembly: Convert streaming chunks into complete responses
- Secure: TLS encryption with automatic certificate validation
- Production Ready: Comprehensive error handling and connection management
Quick Start
Prerequisites
- Rust 1.70+ installed
- xAI API key
Installation
Add to your Cargo.toml:
[]
= "0.1.0"
= { = "1.0", = ["full"] }
= "1.0"
Running the Examples
-
Set your API key as an environment variable:
-
Run the text generation example:
-
Run the chat completion example:
-
Run the streaming chat example:
-
Run the response assembly example:
-
Test your connection:
Usage Examples
Text Generation
use ;
use Request;
let mut client = connect.await?;
let request = new;
let response = client.sample_text.await?;
println!;
Chat Completion
use ;
use Request;
let mut client = connect.await?;
let message = Message ;
let request = new;
let response = client.get_completion.await?;
println!;
Streaming Chat Completion
use ;
use Request;
let mut client = connect.await?;
let message = Message ;
let request = new;
// Process streaming response
let stream = client.get_completion_chunk.await?.into_inner;
let consumer = with_stdout;
let chunks = process_stream.await?;
// Assemble complete response
if let Some = assemble_response
API Services
The SDK provides clients for all xAI services:
Chat Service
GetCompletion- Blocking chat completionGetCompletionChunk- Streaming chat completionStartDeferredCompletion- Async completion with pollingGetDeferredCompletion- Retrieve async results
Sample Service
SampleText- Raw text generationSampleTextStreaming- Streaming text generation
Models Service
ListLanguageModels- List available language modelsListEmbeddingModels- List embedding modelsListImageGenerationModels- List image generation models
Embed Service
Embed- Generate embeddings from text or images
Image Service
GenerateImage- Create images from text prompts
Auth Service
get_api_key_info- Get API key information
Streaming Utilities
The SDK provides powerful utilities for working with streaming responses:
StreamConsumer
A flexible callback system for processing streaming data:
on_content_token- Called for each piece of response contenton_reason_token- Called for each piece of reasoning contenton_chunk- Called for each complete chunk received
Stream Processing Functions
process_stream- Process streaming responses with custom callbacksassemble_response- Convert collected chunks into complete responsesStreamConsumer::with_stdout- Pre-configured consumer for real-time output
Configuration
The SDK supports comprehensive configuration options:
- Temperature: Controls randomness (0.0 to 2.0)
- Top-p: Nucleus sampling parameter (0.0 to 1.0)
- Max tokens: Maximum tokens to generate
- Log probabilities: Enable detailed token probability logging
- Multiple completions: Generate multiple responses per request
- Stop sequences: Custom stop conditions
- Frequency/Presence penalties: Control repetition and topic diversity
Security
- TLS Encryption: Automatic HTTPS with certificate validation
- Authentication: Bearer token support for API key authentication
- Secure by Default: No manual TLS configuration required
Error Handling
Comprehensive error handling for:
- Connection errors and timeouts
- Authentication failures
- API rate limiting
- Invalid parameters
- Network issues
Development
This SDK is built using:
- Protocol Buffers: Auto-generated Rust types from xAI's
.protodefinitions - Tonic: Modern gRPC framework for Rust with async/await support
- Prost: High-performance Protocol Buffer implementation
- Tokio: Async runtime for Rust
The code is generated from xAI's official Protocol Buffer definitions, ensuring compatibility and type safety.
Changelog
See CHANGELOG.md for a detailed list of changes and new features.
License
This project is licensed under the MIT License.