Skip to main content

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//! | `mistralrs` | `provider-mistralrs` | [mistral.rs](https://github.com/EricLBuehler/mistral.rs) |
12//! | `local_onnx` | `provider-onnx` | [ONNX Runtime](https://onnxruntime.ai/) — embeddings, cross-encoder rerank, and raw tensor execution |
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-gemini")]
46pub mod gemini;
47
48#[cfg(feature = "provider-vertexai")]
49pub mod vertexai;
50
51#[cfg(feature = "provider-mistralrs")]
52pub mod mistralrs;
53
54#[cfg(any(feature = "provider-onnx", feature = "provider-onnx-dynamic"))]
55pub(crate) mod onnx_ep;
56
57#[cfg(any(feature = "provider-onnx", feature = "provider-onnx-dynamic"))]
58pub mod local_onnx;
59
60#[cfg(feature = "provider-mistral")]
61pub mod mistral;
62
63#[cfg(feature = "provider-anthropic")]
64pub mod anthropic;
65
66#[cfg(feature = "provider-voyageai")]
67pub mod voyageai;
68
69#[cfg(feature = "provider-cohere")]
70pub mod cohere;
71
72#[cfg(feature = "provider-azure-openai")]
73pub mod azure_openai;
74
75#[cfg(feature = "provider-whisper-cpp")]
76pub mod local_whisper_cpp;
77
78// Re-exports (same order as module declarations above).
79#[cfg(feature = "provider-candle")]
80pub use candle::LocalCandleProvider;
81
82#[cfg(feature = "provider-openai")]
83pub use openai::RemoteOpenAIProvider;
84
85#[cfg(feature = "provider-gemini")]
86pub use gemini::RemoteGeminiProvider;
87
88#[cfg(feature = "provider-vertexai")]
89pub use vertexai::RemoteVertexAIProvider;
90
91#[cfg(feature = "provider-mistralrs")]
92pub use self::mistralrs::LocalMistralRsProvider;
93
94#[cfg(any(feature = "provider-onnx", feature = "provider-onnx-dynamic"))]
95pub use local_onnx::LocalOnnxProvider;
96
97#[cfg(feature = "provider-mistral")]
98pub use mistral::RemoteMistralProvider;
99
100#[cfg(feature = "provider-anthropic")]
101pub use anthropic::RemoteAnthropicProvider;
102
103#[cfg(feature = "provider-voyageai")]
104pub use voyageai::RemoteVoyageAIProvider;
105
106#[cfg(feature = "provider-cohere")]
107pub use cohere::RemoteCohereProvider;
108
109#[cfg(feature = "provider-azure-openai")]
110pub use azure_openai::RemoteAzureOpenAIProvider;
111
112#[cfg(feature = "provider-whisper-cpp")]
113pub use local_whisper_cpp::LocalWhisperCppProvider;