intr_providers/lib.rs
1//! `intr-providers` - model-provider abstraction for Intentry.
2//!
3//! Every AI model call goes through the [`Provider`] trait. To add a new
4//! model you add a new adapter - nothing else changes.
5//!
6//! # Quick start
7//!
8//! ```rust,no_run
9//! use intr_providers::{ProviderRegistry, GenerateRequest, ApiKey, Message, Role};
10//!
11//! # #[tokio::main] async fn main() -> anyhow::Result<()> {
12//! let registry = ProviderRegistry::default();
13//!
14//! let resp = registry
15//! .for_model("claude-sonnet-4-6")
16//! .unwrap()
17//! .generate(GenerateRequest {
18//! model: "claude-sonnet-4-6".into(),
19//! messages: vec![Message { role: Role::User, content: "Hello!".into() }],
20//! api_key: ApiKey::UserSupplied("sk-ant-...".to_string().into()),
21//! ..Default::default()
22//! })
23//! .await?;
24//!
25//! println!("{}", resp.text);
26//! # Ok(())
27//! # }
28//! ```
29
30pub mod error;
31pub mod registry;
32pub mod retry;
33pub mod types;
34
35pub mod providers {
36 pub mod anthropic;
37 pub mod google;
38 pub mod mock;
39 pub mod ollama;
40 pub mod openai;
41}
42
43pub use error::ProviderError;
44pub use registry::ProviderRegistry;
45pub use types::{ApiKey, FinishReason, GenerateRequest, GenerateResponse, Message, Role};