Skip to main content

Crate xz_provider

Crate xz_provider 

Source
Expand description

§xz-provider

LLM service-provider abstraction — the HTTP + protocol layer for model calls.

§Minimal surface

ItemRole
LlmProviderTrait: complete / complete_stream
GenericProviderSole HTTP client; uses a ProtocolAdapter
ProviderBuilderConfig → router of providers
CompletionRequest / CompletionResponse / StreamEventData plane
RequestOptionsControl plane (timeout, cancel)
ProviderErrorErrors

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