diff --git a/examples/session_templates_example.py b/examples/session_templates_example.py new file mode 100644 index 000000000..706ff4196 --- /dev/null +++ b/examples/session_templates_example.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 +""" +Example: Using session templates for code-first seeding. + +This script demonstrates how to use the session template system +to pre-seed new sessions with successful tool call patterns. +""" + +import sys +from pathlib import Path + +# Add the parent directory to the path +sys.path.insert(0, str(Path(__file__).parent.parent)) + +from tools.session_templates import SessionTemplates, TaskType + + +def main(): + """Demonstrate session template usage.""" + + # Create template manager + templates = SessionTemplates() + + print("Session Templates Example") + print("=" * 50) + + # List existing templates + print("\n1. Existing templates:") + template_list = templates.list_templates() + if template_list: + for t in template_list: + print(f" - {t.name}: {t.task_type.value} ({len(t.examples)} examples)") + else: + print(" No templates found") + + # Example: Create a template from a session + print("\n2. Creating a template from a session:") + print(" (This would normally use a real session ID)") + + # Example: Get a template for code tasks + print("\n3. Getting a template for CODE tasks:") + code_template = templates.get_template(TaskType.CODE) + if code_template: + print(f" Found template: {code_template.name}") + print(f" Type: {code_template.task_type.value}") + print(f" Examples: {len(code_template.examples)}") + + # Show first example + if code_template.examples: + example = code_template.examples[0] + print(f" First example: {example.tool_name}") + print(f" Arguments: {example.arguments}") + print(f" Result preview: {example.result[:100]}...") + else: + print(" No CODE template found") + + # Example: Inject template into messages + print("\n4. Injecting template into messages:") + if code_template: + # Create sample messages + messages = [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Help me write some code"} + ] + + # Inject template + updated_messages = templates.inject_into_messages(code_template, messages) + + print(f" Original messages: {len(messages)}") + print(f" Updated messages: {len(updated_messages)}") + print(f" Template usage count: {code_template.usage_count}") + + # Show the injection + print("\n Injected messages:") + for i, msg in enumerate(updated_messages[:6]): # Show first 6 + role = msg.get('role', 'unknown') + content = msg.get('content', '') + if content: + content_preview = content[:50] + "..." if len(content) > 50 else content + print(f" {i}: {role} - {content_preview}") + else: + print(f" {i}: {role} - (tool call)") + + print("\n" + "=" * 50) + print("Example complete!") + + +if __name__ == "__main__": + main()