Skip to main content

llm_kernel/llm/
prompt.rs

1/// Simple variable substitution in prompt templates.
2/// Replaces `{{variable}}` with provided values.
3pub fn render_prompt(template: &str, vars: &[(&str, &str)]) -> String {
4    let mut result = template.to_string();
5    for (key, value) in vars {
6        result = result.replace(&format!("{{{{{}}}}}", key), value);
7    }
8    result
9}
10
11#[cfg(test)]
12mod tests {
13    use super::*;
14
15    #[test]
16    fn test_render_prompt() {
17        let template = "Hello {{name}}, your topic is {{topic}}.";
18        let result = render_prompt(template, &[("name", "Alice"), ("topic", "Rust")]);
19        assert_eq!(result, "Hello Alice, your topic is Rust.");
20    }
21
22    #[test]
23    fn test_render_prompt_missing_var() {
24        let template = "Hello {{name}}.";
25        let result = render_prompt(template, &[]);
26        assert_eq!(result, "Hello {{name}}.");
27    }
28}