thulp-guidance
LLM guidance and prompt template system for Thulp.
Overview
This crate provides utilities for creating, managing, and rendering prompt templates for AI agent interactions. It supports variable substitution, default values, and a template registry for organizing prompts.
Features
- Prompt Templates: Define templates with
{{variable}}placeholders - Variable Substitution: Replace placeholders with runtime values
- Default Values: Set fallback values for template variables
- Template Registry: Organize and manage multiple templates
- JSON Serialization: Full serde support for templates
Installation
Add to your Cargo.toml:
[]
= "0.2"
Usage
Creating a Prompt Template
use PromptTemplate;
let template = new;
Rendering with Variables
use PromptTemplate;
use HashMap;
let template = new;
let mut vars = new;
vars.insert;
let result = template.render.unwrap;
assert_eq!;
Using Default Values
use PromptTemplate;
use HashMap;
let template = new
.with_default;
// Renders with default value
let result = template.render.unwrap;
assert_eq!;
// Override default with provided value
let mut vars = new;
vars.insert;
let result = template.render.unwrap;
assert_eq!;
Template Registry
use ;
use HashMap;
let mut registry = new;
// Register templates
registry.register;
registry.register;
// List all templates
let names = registry.list;
println!;
// Render by name
let mut vars = new;
vars.insert;
let greeting = registry.render.unwrap;
assert_eq!;
Complex Templates
use PromptTemplate;
use HashMap;
let template = new
Focus on: {{focus_areas}}
Provide feedback on code quality, potential bugs, and improvements."# ) .with_default("focus_areas", "readability and performance");
let mut vars = HashMap::new(); vars.insert("language".to_string(), "rust".to_string()); vars.insert("code".to_string(), "fn main() { println!("Hello"); }".to_string());
let prompt = template.render(&vars).unwrap();
## Error Handling
The crate provides specific error types:
- `GuidanceError::Template`: Template rendering errors
- `GuidanceError::VariableNotFound`: Missing template or variable
- `GuidanceError::InvalidFormat`: Format validation errors
```rust
use thulp_guidance::{PromptTemplate, GuidanceError};
use std::collections::HashMap;
let template = PromptTemplate::new("test", "Hello {{name}}!");
// Missing variable returns error
let result = template.render(&HashMap::new());
assert!(result.is_err());
Testing
License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.