docs(templates): Add example for session templates
Some checks failed
Forge CI / smoke-and-build (pull_request) Failing after 57s
Some checks failed
Forge CI / smoke-and-build (pull_request) Failing after 57s
Add example script demonstrating session template usage: 1. Listing existing templates 2. Getting templates by task type 3. Injecting templates into messages 4. Usage tracking Resolves #329
This commit is contained in:
89
examples/session_templates_example.py
Normal file
89
examples/session_templates_example.py
Normal file
@@ -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()
|
||||
Reference in New Issue
Block a user