providers-kit 0.0.2

Portable enum-dispatch Kit over multiple model provider APIs.
Documentation
use providers_kit::config::{OllamaConfig, ProviderKind, TransportConfig};
use providers_kit::generation::{GenerateRequest, JsonSchema, Message, ResponseFormat};
use providers_kit::{ModelBackend, ModelId, Provider, ProviderBackend, ProviderConfig};
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), providers_kit::KitError> {
    let provider = Provider::from_config(ProviderConfig::new(
        ProviderKind::Ollama(OllamaConfig::local()),
        TransportConfig::default(),
    ))?;
    let model = provider.model(ModelId::new("ministral-3:8b-instruct-2512-q4_K_M")?)?;
    let request = GenerateRequest::new(vec![Message::user_text(
        "Return a JSON object with keys `name` and `summary`.",
    )?])?
    .with_response_format(ResponseFormat::JsonSchema(JsonSchema::new(json!({
        "type": "object",
        "properties": {
            "name": {"type": "string"},
            "summary": {"type": "string"}
        },
        "required": ["name", "summary"],
        "additionalProperties": false
    }))?));
    let response = model.generate(&request).await?;

    println!("{:#?}", response.message);
    Ok(())
}