Skip to main content

llama_runner/
lib.rs

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}