vex_router/
lib.rs

1//! VEX Router - Intelligent LLM Routing for VEX Protocol
2//!
3//! A drop-in replacement for vex-llm providers that intelligently routes
4//! queries to the most appropriate LLM based on complexity, cost, or quality.
5//!
6//! ## Quick Start
7//!
8//! ```rust
9//! use vex_router::{Router, RoutingStrategy};
10//!
11//! #[tokio::main]
12//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
13//!     let router = Router::builder()
14//!         .strategy(RoutingStrategy::Auto)
15//!         .build();
16//!
17//!     let response = router.ask("What is 2+2?").await?;
18//!     println!("{}", response);
19//!     Ok(())
20//! }
21//! ```
22//!
23//! ## For VEX Integration
24//!
25//! When integrated with VEX, this implements the `LlmProvider` trait
26//! for drop-in replacement with vex-llm providers.
27
28// Public modules
29pub mod cache;
30pub mod classifier;
31pub mod compress;
32pub mod config;
33pub mod guardrails;
34pub mod models;
35pub mod observability;
36pub mod router;
37
38// Re-export key types for easy use
39pub use classifier::{QueryClassifier, QueryComplexity};
40pub use config::{Config, ModelCapability, ModelConfig, RoutingStrategy};
41pub use models::{Model, ModelPool};
42pub use router::{
43    Router, RouterBuilder, RouterConfig, RouterError, RoutingDecision,
44    RoutingStrategy as RouterStrategy,
45};
46pub use vex_llm::{LlmError, LlmProvider, LlmRequest, LlmResponse};
47
48// Re-export compression types
49pub use compress::{CompressedPrompt, CompressionLevel, PromptCompressor};
50
51// Re-export guardrails types
52pub use guardrails::{GuardrailResult, Guardrails, Violation, ViolationCategory};
53
54// Re-export observability types
55pub use observability::{Observability, ObservabilitySummary, SavingsReport};
56
57// Re-export cache types
58pub use cache::SemanticCache;
59
60#[cfg(feature = "standalone")]
61pub mod gateway;
62
63#[cfg(feature = "standalone")]
64pub use gateway::Server;