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//! | `local_onnx` | `provider-onnx` | [ONNX Runtime](https://onnxruntime.ai/) — embeddings, cross-encoder rerank, and raw tensor execution |
12//!
13//! ## Remote providers
14//!
15//! | Module | Feature | API |
16//! |--------|---------|-----|
17//! | `openai` | `provider-openai` | OpenAI |
18//! | `gemini` | `provider-gemini` | Google Gemini |
19//! | `vertexai` | `provider-vertexai` | Google Vertex AI |
20//! | `mistral` | `provider-mistral` | Mistral AI |
21//! | `anthropic` | `provider-anthropic` | Anthropic |
22//! | `voyageai` | `provider-voyageai` | Voyage AI |
23//! | `cohere` | `provider-cohere` | Cohere |
24//! | `azure_openai` | `provider-azure-openai` | Azure OpenAI |
25//! | `llamacpp` | `provider-llamacpp` | llama.cpp `llama-server` (embeddings, generation, rerank, document extraction) |
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    feature = "provider-llamacpp",
40))]
41pub(crate) mod remote_common;
42
43#[cfg(feature = "provider-openai")]
44pub mod openai;
45
46#[cfg(feature = "provider-gemini")]
47pub mod gemini;
48
49#[cfg(feature = "provider-vertexai")]
50pub mod vertexai;
51
52#[cfg(any(feature = "provider-onnx", feature = "provider-onnx-dynamic"))]
53pub(crate) mod onnx_ep;
54
55#[cfg(any(feature = "provider-onnx", feature = "provider-onnx-dynamic"))]
56pub mod local_onnx;
57
58#[cfg(feature = "provider-mistral")]
59pub mod mistral;
60
61#[cfg(feature = "provider-anthropic")]
62pub mod anthropic;
63
64#[cfg(feature = "provider-voyageai")]
65pub mod voyageai;
66
67#[cfg(feature = "provider-cohere")]
68pub mod cohere;
69
70#[cfg(feature = "provider-azure-openai")]
71pub mod azure_openai;
72
73#[cfg(feature = "provider-llamacpp")]
74pub mod llamacpp;
75
76#[cfg(feature = "provider-whisper-cpp")]
77pub mod local_whisper_cpp;
78
79// Re-exports (same order as module declarations above).
80#[cfg(feature = "provider-candle")]
81pub use candle::LocalCandleProvider;
82
83#[cfg(feature = "provider-openai")]
84pub use openai::RemoteOpenAIProvider;
85
86#[cfg(feature = "provider-gemini")]
87pub use gemini::RemoteGeminiProvider;
88
89#[cfg(feature = "provider-vertexai")]
90pub use vertexai::RemoteVertexAIProvider;
91
92#[cfg(any(feature = "provider-onnx", feature = "provider-onnx-dynamic"))]
93pub use local_onnx::LocalOnnxProvider;
94
95#[cfg(feature = "provider-mistral")]
96pub use mistral::RemoteMistralProvider;
97
98#[cfg(feature = "provider-anthropic")]
99pub use anthropic::RemoteAnthropicProvider;
100
101#[cfg(feature = "provider-voyageai")]
102pub use voyageai::RemoteVoyageAIProvider;
103
104#[cfg(feature = "provider-cohere")]
105pub use cohere::RemoteCohereProvider;
106
107#[cfg(feature = "provider-azure-openai")]
108pub use azure_openai::RemoteAzureOpenAIProvider;
109
110#[cfg(feature = "provider-llamacpp")]
111pub use llamacpp::RemoteLlamaCppProvider;
112
113#[cfg(feature = "provider-whisper-cpp")]
114pub use local_whisper_cpp::LocalWhisperCppProvider;