ai-lib v0.4.0
Released: 2025-12-04
This release marks a major architectural milestone: the Trait Shift 1.0 Evolution. The core dispatching mechanism has been redesigned from enum-based to trait-based architecture, providing better extensibility and cleaner abstractions.
Highlights
- ChatProvider Trait: All providers now implement a unified
ChatProvidertrait for consistent behavior - Strategy Builders: Pre-runtime routing composition with
with_failover_chainandwith_round_robin_chain - Custom Providers: Inject OpenAI-compatible endpoints without modifying the
Providerenum - Improved Error Handling:
AiClient::newnow returnsResult<AiClient, AiLibError>for explicit error handling
Breaking Changes
AiClient::new Returns Result
// ⛔️ Old (0.3.x)
let client = AiClient::new(Provider::Groq);
// ✅ New (0.4.0)
let client = AiClient::new(Provider::Groq)?;
Strategy-Based Routing
// ⛔️ Old (0.3.x) - Sentinel-based failover
let client = AiClient::new(Provider::OpenAI)
.with_failover(vec![Provider::Anthropic, Provider::Groq]);
// ✅ New (0.4.0) - Strategy builders
let client = AiClientBuilder::new(Provider::OpenAI)
.with_failover_chain(vec![Provider::Anthropic, Provider::Groq])?
.build()?;
New Features
Custom Provider Injection
use ai_lib::provider::builders::CustomProviderBuilder;
let custom = CustomProviderBuilder::new("my-gateway")
.with_base_url("https://gateway.example.com/v1")
.with_api_key_env("MY_GATEWAY_KEY")
.with_default_chat_model("gpt-4")
.build_provider()?;
let client = AiClientBuilder::new(Provider::OpenAI)
.with_strategy(custom)
.build()?;
Round-Robin Load Distribution
let client = AiClientBuilder::new(Provider::OpenAI)
.with_round_robin_chain(vec![Provider::Groq, Provider::Mistral])?
.build()?;
Upgrade
[dependencies]
ai-lib = "0.4.0"
tokio = { version = "1", features = ["full"] }
futures = "0.3"
Documentation
- Upgrade Guide - Migration from 0.3.x to 0.4.0
- API Reference - Complete API documentation
- Examples - Practical usage examples