核心特性
V2 错误码与特性标志
13 种 V2 标准错误码,跨提供商统一错误处理。按特性门控的模块:7 个可选特性加完整元特性,支持最小或完整构建。
基于算子的管道
流式响应通过可组合算子:Decoder → Selector → Accumulator → FanOut → EventMapper。各阶段由协议配置。
协议加载
从本地文件、环境变量或 GitHub 后备加载提供商清单。支持通过文件监听实现热重载。配置更新无需重启。
弹性模式
内置熔断器、令牌桶限流、指数退避重试与最大并发背压。均可通过环境变量配置。
嵌入与向量
EmbeddingClient 提供向量运算:余弦相似度、欧氏距离、点积。原生构建语义搜索与 RAG 应用。
缓存与批处理
带 TTL 的响应缓存(内存后端)。可配置并发、超时及多种处理策略的批处理执行。
插件系统
可扩展的插件架构,含钩子与中间件链。无需修改核心代码即可添加自定义行为。用于内容过滤与 PII 检测的护栏。
简单统一的 API
同一套代码适用于全部 35+ 个提供商。只需修改模型标识符 —— 协议清单会处理其余一切:端点、认证、参数映射、流式格式。
建造者模式提供流畅的请求构造 API。流式结果以统一的 StreamingEvent 类型返回,与底层提供商无关。
use ai_lib::{AiClient, Message, StreamingEvent};
// Works with ANY provider — protocol-driven
let client = AiClient::new(
"anthropic/claude-3-5-sonnet"
).await?;
// Builder pattern for chat requests
let mut stream = client.chat()
.user("Explain AI-Protocol")
.temperature(0.7)
.max_tokens(1000)
.stream()
.execute_stream()
.await?;
// Unified streaming events
while let Some(event) = stream.next().await {
match event? {
StreamingEvent::ContentDelta { text, .. }
=> print!("{text}"),
StreamingEvent::StreamEnd { stats, .. }
=> println!("\nTokens: {}",
stats.total_tokens),
_ => {} // ToolCall, Metadata, etc.
}
} 内部架构
从用户 API 到 HTTP 传输的五层结构。流式管道是系统的核心。
模块概览
client/ + error_code/
AiClient、AiClientBuilder、ChatRequestBuilder、执行逻辑、策略引擎、预检、错误分类、CallStats、CancelHandle。
protocol/
ProtocolLoader(本地/URL/GitHub)、JSON Schema 验证器、ProtocolManifest 结构、UnifiedRequest 编译、配置类型。
pipeline/
Decoder(SSE、JSON Lines)、Selector(JSONPath)、Accumulator(工具调用)、FanOut(多候选)、EventMapper(统一事件)、Retry 与 Fallback 算子。
transport/
HttpTransport(reqwest)、API 密钥解析(keyring + env vars)、代理/超时配置、中间件支持。
resilience/
熔断器(开/半开/闭)、令牌桶限流、最大并发信号量背压。
embeddings/
EmbeddingClient、EmbeddingClientBuilder、向量运算(余弦相似度、欧氏距离、点积)。
cache/ + batch/
带 TTL 的 CacheManager(MemoryCache、NullCache)。带并发控制与多种策略的 BatchCollector 与 BatchExecutor。
plugins/ + guardrails/ + structured/
Plugin trait、PluginRegistry、HookManager、中间件链。含关键词/模式过滤与 PII 检测的护栏。