1pub mod error;
2#[cfg(feature = "mcp")]
3pub mod mcp;
4mod runner;
5pub mod sample;
6pub mod template;
7
8#[cfg(feature = "mcp")]
9pub use minijinja;
10pub use runner::*;
11
12#[cfg(test)]
13mod tests {
14 use super::*;
15
16 #[tokio::test]
17 async fn test_lm() {
18 let runner = Gemma3TextRunner::default().await.unwrap();
19 let answer = runner
20 .get_lm_response(TextLmRequest {
21 messages: vec![(MessageRole::User, "What is the capital of France?")],
22 ..Default::default()
23 })
24 .unwrap();
25 assert!(answer.contains("Paris"));
26 }
27
28 #[tokio::test]
29 async fn test_vlm() {
30 let runner = Gemma3VisionRunner::default().await.unwrap();
31 let eiffel_tower_im =
32 image::load_from_memory(include_bytes!("../assets/eiffel-tower.jpg")).unwrap();
33 let answer = runner
34 .get_vlm_response(VisionLmRequest {
35 messages: vec![
36 (
37 MessageRole::User,
38 ImageOrText::Text("Which city is this building in?"),
39 ),
40 (MessageRole::User, ImageOrText::Image(&eiffel_tower_im)),
41 ],
42 ..Default::default()
43 })
44 .unwrap();
45 assert!(answer.contains("Paris"));
46 }
47}