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//! | `llamacpp` | `provider-llamacpp` | llama.cpp `llama-server` (OpenAI-compatible embeddings + native `/tokenize`) |
27
28#[cfg(feature = "provider-candle")]
29pub mod candle;
30
31#[cfg(any(
32    feature = "provider-openai",
33    feature = "provider-gemini",
34    feature = "provider-vertexai",
35    feature = "provider-mistral",
36    feature = "provider-anthropic",
37    feature = "provider-voyageai",
38    feature = "provider-cohere",
39    feature = "provider-azure-openai",
40    feature = "provider-llamacpp",
41))]
42pub(crate) mod remote_common;
43
44#[cfg(feature = "provider-openai")]
45pub mod openai;
46
47#[cfg(feature = "provider-gemini")]
48pub mod gemini;
49
50#[cfg(feature = "provider-vertexai")]
51pub mod vertexai;
52
53#[cfg(feature = "provider-mistralrs")]
54pub mod mistralrs;
55
56#[cfg(any(feature = "provider-onnx", feature = "provider-onnx-dynamic"))]
57pub(crate) mod onnx_ep;
58
59#[cfg(any(feature = "provider-onnx", feature = "provider-onnx-dynamic"))]
60pub mod local_onnx;
61
62#[cfg(feature = "provider-mistral")]
63pub mod mistral;
64
65#[cfg(feature = "provider-anthropic")]
66pub mod anthropic;
67
68#[cfg(feature = "provider-voyageai")]
69pub mod voyageai;
70
71#[cfg(feature = "provider-cohere")]
72pub mod cohere;
73
74#[cfg(feature = "provider-azure-openai")]
75pub mod azure_openai;
76
77#[cfg(feature = "provider-llamacpp")]
78pub mod llamacpp;
79
80#[cfg(feature = "provider-whisper-cpp")]
81pub mod local_whisper_cpp;
82
83// Re-exports (same order as module declarations above).
84#[cfg(feature = "provider-candle")]
85pub use candle::LocalCandleProvider;
86
87#[cfg(feature = "provider-openai")]
88pub use openai::RemoteOpenAIProvider;
89
90#[cfg(feature = "provider-gemini")]
91pub use gemini::RemoteGeminiProvider;
92
93#[cfg(feature = "provider-vertexai")]
94pub use vertexai::RemoteVertexAIProvider;
95
96#[cfg(feature = "provider-mistralrs")]
97pub use self::mistralrs::LocalMistralRsProvider;
98
99#[cfg(any(feature = "provider-onnx", feature = "provider-onnx-dynamic"))]
100pub use local_onnx::LocalOnnxProvider;
101
102#[cfg(feature = "provider-mistral")]
103pub use mistral::RemoteMistralProvider;
104
105#[cfg(feature = "provider-anthropic")]
106pub use anthropic::RemoteAnthropicProvider;
107
108#[cfg(feature = "provider-voyageai")]
109pub use voyageai::RemoteVoyageAIProvider;
110
111#[cfg(feature = "provider-cohere")]
112pub use cohere::RemoteCohereProvider;
113
114#[cfg(feature = "provider-azure-openai")]
115pub use azure_openai::RemoteAzureOpenAIProvider;
116
117#[cfg(feature = "provider-llamacpp")]
118pub use llamacpp::RemoteLlamaCppProvider;
119
120#[cfg(feature = "provider-whisper-cpp")]
121pub use local_whisper_cpp::LocalWhisperCppProvider;