Skip to main content

llama_runner/
lib.rs

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}