ai-lib 🦀✨
A unified, reliable, high-performance multi-provider AI SDK for Rust
A production-grade, provider-agnostic SDK that provides a unified Rust API for 17+ AI platforms and growing (OpenAI, Groq, Anthropic, Gemini, Mistral, Cohere, Azure OpenAI, Ollama, DeepSeek, Qwen, Baidu ERNIE, Tencent Hunyuan, iFlytek Spark, Kimi, HuggingFace, TogetherAI, xAI Grok, and more).
Eliminates fragmented authentication flows, streaming formats, error semantics, model naming differences, and inconsistent function calling. Scale from one-liner scripts to production systems without rewriting integration code.
🚀 Core Value
ai-lib unifies AI provider complexity into a single, ergonomic Rust interface:
- Universal API: Chat, multimodal, and function calling across all providers
- Unified Streaming: Consistent SSE/JSONL parsing with real-time deltas
- Reliability: Built-in retry, timeout, circuit breaker, and error classification
- Flexible Configuration: Environment variables, builder pattern, or explicit overrides
- Production Ready: Connection pooling, proxy support, observability hooks
Result: Focus on your product logic while ai-lib handles provider integration friction.
⚙️ Quick Start
Installation
[]
= "0.3.3"
= { = "1", = ["full"] }
= "0.3"
One-liner Chat
use Provider;
async
Standard Usage
use ;
async
Streaming
use StreamExt;
let mut stream = client.chat_completion_stream.await?;
while let Some = stream.next.await
🧠 Core Concepts
Concept | Purpose |
---|---|
Provider | Enumerates all supported AI providers |
AiClient | Main entry point with unified interface |
ChatCompletionRequest | Standardized request payload |
Message / Content | Text, image, audio content types |
Streaming Event | Provider-standardized delta streams |
ConnectionOptions | Runtime configuration overrides |
Metrics Trait | Custom observability integration |
Transport | Injectable HTTP + streaming layer |
💡 Key Features
Core Capabilities
- Unified Provider Abstraction: Single API across all providers
- Universal Streaming: Consistent SSE/JSONL parsing with real-time deltas
- Multimodal Support: Text, image, and audio content handling
- Function Calling: Consistent tool patterns and OpenAI compatibility
- Batch Processing: Sequential and concurrent processing strategies
Reliability & Production
- Built-in Resilience: Retry with exponential backoff, circuit breakers
- Error Classification: Distinguish transient vs permanent failures
- Connection Management: Pooling, timeouts, proxy support
- Observability: Pluggable metrics and tracing integration
- Security: No sensitive content logging by default
🌍 Supported Providers
17+ providers and growing - We continuously add new AI platforms to support the evolving ecosystem.
Provider | Streaming | Highlights |
---|---|---|
Groq | ✅ | Ultra-low latency inference |
OpenAI | ✅ | GPT models, function calling |
Anthropic | ✅ | Claude models, high quality |
Google Gemini | ✅ | Multimodal capabilities |
Mistral | ✅ | European models |
Cohere | ✅ | RAG-optimized |
HuggingFace | ✅ | Open source models |
TogetherAI | ✅ | Cost-effective inference |
DeepSeek | ✅ | Reasoning models |
Qwen | ✅ | Chinese ecosystem |
Baidu ERNIE | ✅ | Enterprise China |
Tencent Hunyuan | ✅ | Cloud integration |
iFlytek Spark | ✅ | Voice + multimodal |
Moonshot Kimi | ✅ | Long context |
Azure OpenAI | ✅ | Enterprise compliance |
Ollama | ✅ | Local/air-gapped |
xAI Grok | ✅ | Real-time oriented |
See examples/ for provider-specific usage patterns.
🔑 Configuration
Environment Variables
# API Keys (convention-based)
# Optional: Custom endpoints
# Optional: Proxy and timeouts
# Optional: Connection pooling (enabled by default)
Programmatic Configuration
use ;
use Duration;
let client = with_options?;
Concurrency Control
use ;
let client = new
.with_max_concurrency
.for_production
.build?;
🛡️ Reliability & Resilience
Feature | Description |
---|---|
Retry Logic | Exponential backoff with intelligent error classification |
Error Handling | Distinguish transient vs permanent failures |
Timeouts | Configurable per-request and global timeouts |
Proxy Support | Global, per-connection, or disabled proxy handling |
Connection Pooling | Tunable pool size and connection lifecycle |
Health Checks | Endpoint monitoring and policy-based routing |
Fallback Strategies | Multi-provider arrays and manual failover |
📊 Observability & Metrics
Custom Metrics Integration
;
let client = new_with_metrics?;
Usage Tracking
match response.usage_status
Optional Features
interceptors
: Retry, timeout, circuit breaker pipelineunified_sse
: Common SSE parser for all providersunified_transport
: Shared HTTP client factorycost_metrics
: Basic cost accounting via environment variablesrouting_mvp
: Model selection and routing capabilities
🗂️ Examples
Category | Examples |
---|---|
Getting Started | quickstart , basic_usage , builder_pattern |
Configuration | explicit_config , proxy_example , custom_transport_config |
Streaming | test_streaming , cohere_stream |
Reliability | custom_transport , resilience_example |
Multi-Provider | config_driven_example , model_override_demo |
Model Management | model_management , routing_modelarray |
Batch Processing | batch_processing |
Function Calling | function_call_openai , function_call_exec |
Multimodal | multimodal_example |
Advanced | architecture_progress , reasoning_best_practices |
📄 License
Dual-licensed under MIT or Apache License 2.0 - choose what works best for your project.
🤝 Contributing
- Fork & clone repository
- Create feature branch:
git checkout -b feature/your-feature
- Run tests:
cargo test
- Add examples for new features
- Follow adapter patterns (prefer config-driven over custom)
- Open PR with rationale + benchmarks (if performance impact)
We value: clarity, test coverage, minimal surface area, incremental composability.
📚 Citation