Skip to main content

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};