uni_xervo/
provider.rs

1//! Provider implementations for local and remote model backends.
2//!
3//! Each sub-module is gated behind a Cargo feature flag (e.g. `provider-candle`,
4//! `provider-openai`). Only providers whose features are enabled will be compiled.
5//!
6//! ## Local providers
7//!
8//! | Module | Feature | Engine |
9//! |--------|---------|--------|
10//! | `candle` | `provider-candle` | [Candle](https://github.com/huggingface/candle) |
11//! | `fastembed` | `provider-fastembed` | [FastEmbed](https://github.com/Anush008/fastembed-rs) (ONNX Runtime) |
12//! | `mistralrs` | `provider-mistralrs` | [mistral.rs](https://github.com/EricLBuehler/mistral.rs) |
13//!
14//! ## Remote providers
15//!
16//! | Module | Feature | API |
17//! |--------|---------|-----|
18//! | `openai` | `provider-openai` | OpenAI |
19//! | `gemini` | `provider-gemini` | Google Gemini |
20//! | `vertexai` | `provider-vertexai` | Google Vertex AI |
21//! | `mistral` | `provider-mistral` | Mistral AI |
22//! | `anthropic` | `provider-anthropic` | Anthropic |
23//! | `voyageai` | `provider-voyageai` | Voyage AI |
24//! | `cohere` | `provider-cohere` | Cohere |
25//! | `azure_openai` | `provider-azure-openai` | Azure OpenAI |
26
27#[cfg(feature = "provider-candle")]
28pub mod candle;
29
30#[cfg(any(
31    feature = "provider-openai",
32    feature = "provider-gemini",
33    feature = "provider-vertexai",
34    feature = "provider-mistral",
35    feature = "provider-anthropic",
36    feature = "provider-voyageai",
37    feature = "provider-cohere",
38    feature = "provider-azure-openai",
39))]
40pub(crate) mod remote_common;
41
42#[cfg(feature = "provider-openai")]
43pub mod openai;
44
45#[cfg(feature = "provider-fastembed")]
46pub mod fastembed;
47
48#[cfg(feature = "provider-gemini")]
49pub mod gemini;
50
51#[cfg(feature = "provider-vertexai")]
52pub mod vertexai;
53
54#[cfg(feature = "provider-mistralrs")]
55pub mod mistralrs;
56
57#[cfg(feature = "provider-mistral")]
58pub mod mistral;
59
60#[cfg(feature = "provider-anthropic")]
61pub mod anthropic;
62
63#[cfg(feature = "provider-voyageai")]
64pub mod voyageai;
65
66#[cfg(feature = "provider-cohere")]
67pub mod cohere;
68
69#[cfg(feature = "provider-azure-openai")]
70pub mod azure_openai;
71
72// Re-exports (same order as module declarations above).
73#[cfg(feature = "provider-candle")]
74pub use candle::LocalCandleProvider;
75
76#[cfg(feature = "provider-openai")]
77pub use openai::RemoteOpenAIProvider;
78
79#[cfg(feature = "provider-fastembed")]
80pub use fastembed::LocalFastEmbedProvider;
81
82#[cfg(feature = "provider-gemini")]
83pub use gemini::RemoteGeminiProvider;
84
85#[cfg(feature = "provider-vertexai")]
86pub use vertexai::RemoteVertexAIProvider;
87
88#[cfg(feature = "provider-mistralrs")]
89pub use self::mistralrs::LocalMistralRsProvider;
90
91#[cfg(feature = "provider-mistral")]
92pub use mistral::RemoteMistralProvider;
93
94#[cfg(feature = "provider-anthropic")]
95pub use anthropic::RemoteAnthropicProvider;
96
97#[cfg(feature = "provider-voyageai")]
98pub use voyageai::RemoteVoyageAIProvider;
99
100#[cfg(feature = "provider-cohere")]
101pub use cohere::RemoteCohereProvider;
102
103#[cfg(feature = "provider-azure-openai")]
104pub use azure_openai::RemoteAzureOpenAIProvider;