Expand description
§xz-provider
LLM service-provider abstraction — the HTTP + protocol layer for model calls.
§Minimal surface
| Item | Role |
|---|---|
LlmProvider | Trait: complete / complete_stream |
GenericProvider | Sole HTTP client; uses a ProtocolAdapter |
ProviderBuilder | Config → router of providers |
CompletionRequest / CompletionResponse / StreamEvent | Data plane |
RequestOptions | Control plane (timeout, cancel) |
ProviderError | Errors |
Protocol adapters live under protocol. Advanced routing / layers under
router and layer. Prefer use xz_provider::types::… for niche
types (thinking blocks, citations, …).
§Quick start
use xz_provider::{ProviderBuilder, ProviderConfig, LlmProvider};
let router = ProviderBuilder::new()
.with_config(ProviderConfig::from_json(r#"{
"default_model": "gpt-4o",
"providers": {
"openai": {
"provider_type": "open_ai",
"api_key": "sk-xxx",
"models": [{"name": "gpt-4o", "capabilities": {"context_window": 128000, "max_output_tokens": 4096}}]
}
},
"routing": {}
}"#).unwrap())
.build().await.unwrap();
let resp = router.complete(
&xz_provider::RouteContext::default(),
xz_provider::CompletionRequest::new("gpt-4o", vec![
xz_provider::Message::user("Hello!"),
]),
xz_provider::RequestOptions::default(),
).await.unwrap();Re-exports§
pub use builder::ProviderBuilder;pub use cancel::CancellationToken;pub use config::ApiProtocol;pub use config::ProviderConfig;pub use config::ProviderDefinition;pub use config::ProviderType;pub use error::ProviderError;pub use error::RetryStrategy;pub use protocol::AuthMethod;pub use protocol::ProtocolAdapter;pub use providers::GenericProvider;pub use router::ProviderRouter;pub use router::RouteContext;pub use router::RouteDecision;pub use traits::LlmProvider;pub use types::CompletionRequest;pub use types::CompletionResponse;pub use types::FinishReason;pub use types::Message;pub use types::MessageContent;pub use types::ModelInfo;pub use types::RequestOptions;pub use types::StreamEvent;pub use types::TokenUsage;pub use types::ToolCall;pub use types::ToolChoice;pub use types::ToolDefinition;pub use types::ToolResult;pub use accumulator::ToolCallAccumulator;pub use config::ConfigWatcher;pub use config::FallbackCondition as ConfigFallbackCondition;pub use config::FallbackEntry as ConfigFallbackEntry;pub use config::ModelConfig;pub use config::RouteRule;pub use key_source::KeySource;pub use layer::LayerService;pub use layer::Layered as ProviderLayered;pub use layer::ProviderLayer;pub use layer::RetryLayer;pub use layer::TelemetryLayer;pub use router::CostPreference;pub use router::FallbackCondition;pub use router::FallbackEntry;pub use router::HealthState;pub use router::LatencyTracker;pub use types::CacheControl;pub use types::CacheInfo;pub use types::CapabilityRequest;pub use types::Citation;pub use types::CitationConfig;pub use types::ContentPart;pub use types::EffortLevel;pub use types::ImageDetail;pub use types::Modality;pub use types::ModelCapabilities;pub use types::ModelLimits;pub use types::ModelPricing;pub use types::OutputConfig;pub use types::ReasoningEffort;pub use types::RedactedThinkingBlock;pub use types::ResponseFormat;pub use types::ServiceTier;pub use types::ThinkingBlock;pub use types::ThinkingConfig;pub use types::ThinkingDisplay;pub use types::ThinkingType;
Modules§
- accumulator
- builder
- cancel
- config
- error
- http
- key_
source - layer
- observability
- protocol
- providers
- LLM provider implementations.
- router
- traits
- types