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