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
90 lines
3.0 KiB
Python
90 lines
3.0 KiB
Python
#!/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()
|