feedback history and prompt work better
This commit is contained in:
119
demonstrate_feedback_historic.py
Normal file
119
demonstrate_feedback_historic.py
Normal file
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Demonstration of the feedback_historic.json cyclic buffer system.
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
from generate_prompts import JournalPromptGenerator
|
||||
|
||||
def demonstrate_system():
|
||||
"""Demonstrate the feedback historic system."""
|
||||
print("="*70)
|
||||
print("DEMONSTRATION: Feedback Historic Cyclic Buffer System")
|
||||
print("="*70)
|
||||
|
||||
# Create a temporary .env file
|
||||
with open(".env.demo", "w") as f:
|
||||
f.write("DEEPSEEK_API_KEY=demo_key\n")
|
||||
f.write("API_BASE_URL=https://api.deepseek.com\n")
|
||||
f.write("MODEL=deepseek-chat\n")
|
||||
|
||||
# Initialize generator
|
||||
generator = JournalPromptGenerator(config_path=".env.demo")
|
||||
|
||||
print("\n1. Initial state:")
|
||||
print(f" - feedback_words: {len(generator.feedback_words)} items")
|
||||
print(f" - feedback_historic: {len(generator.feedback_historic)} items")
|
||||
|
||||
# Create some sample feedback words
|
||||
sample_words_batch1 = [
|
||||
{"feedback00": "memory", "weight": 5},
|
||||
{"feedback01": "time", "weight": 4},
|
||||
{"feedback02": "nature", "weight": 3},
|
||||
{"feedback03": "emotion", "weight": 6},
|
||||
{"feedback04": "change", "weight": 2},
|
||||
{"feedback05": "connection", "weight": 4}
|
||||
]
|
||||
|
||||
print("\n2. Adding first batch of feedback words...")
|
||||
generator.update_feedback_words(sample_words_batch1)
|
||||
print(f" - Added 6 feedback words")
|
||||
print(f" - feedback_historic now has: {len(generator.feedback_historic)} items")
|
||||
|
||||
# Show the historic items
|
||||
print("\n Historic feedback words (no weights):")
|
||||
for i, item in enumerate(generator.feedback_historic):
|
||||
key = list(item.keys())[0]
|
||||
print(f" {key}: {item[key]}")
|
||||
|
||||
# Add second batch
|
||||
sample_words_batch2 = [
|
||||
{"feedback00": "creativity", "weight": 5},
|
||||
{"feedback01": "reflection", "weight": 4},
|
||||
{"feedback02": "growth", "weight": 3},
|
||||
{"feedback03": "transformation", "weight": 6},
|
||||
{"feedback04": "journey", "weight": 2},
|
||||
{"feedback05": "discovery", "weight": 4}
|
||||
]
|
||||
|
||||
print("\n3. Adding second batch of feedback words...")
|
||||
generator.update_feedback_words(sample_words_batch2)
|
||||
print(f" - Added 6 more feedback words")
|
||||
print(f" - feedback_historic now has: {len(generator.feedback_historic)} items")
|
||||
|
||||
print("\n Historic feedback words after second batch:")
|
||||
print(" (New words at the top, old words shifted down)")
|
||||
for i, item in enumerate(generator.feedback_historic[:12]): # Show first 12
|
||||
key = list(item.keys())[0]
|
||||
print(f" {key}: {item[key]}")
|
||||
|
||||
# Demonstrate the cyclic buffer by adding more batches
|
||||
print("\n4. Demonstrating cyclic buffer (30 item limit)...")
|
||||
print(" Adding 5 more batches (30 more words total)...")
|
||||
|
||||
for batch_num in range(3, 8):
|
||||
batch_words = []
|
||||
for j in range(6):
|
||||
batch_words.append({f"feedback{j:02d}": f"batch{batch_num}_word{j+1}", "weight": 3})
|
||||
generator.update_feedback_words(batch_words)
|
||||
|
||||
print(f" - feedback_historic now has: {len(generator.feedback_historic)} items (max 30)")
|
||||
print(f" - Oldest items have been dropped to maintain 30-item limit")
|
||||
|
||||
# Show the structure
|
||||
print("\n5. Checking file structure...")
|
||||
if os.path.exists("feedback_historic.json"):
|
||||
with open("feedback_historic.json", "r") as f:
|
||||
data = json.load(f)
|
||||
print(f" - feedback_historic.json exists with {len(data)} items")
|
||||
print(f" - First item: {data[0]}")
|
||||
print(f" - Last item: {data[-1]}")
|
||||
print(f" - Items have keys (feedback00, feedback01, etc.) but no weights")
|
||||
|
||||
# Clean up
|
||||
os.remove(".env.demo")
|
||||
if os.path.exists("feedback_words.json"):
|
||||
os.remove("feedback_words.json")
|
||||
if os.path.exists("feedback_historic.json"):
|
||||
os.remove("feedback_historic.json")
|
||||
|
||||
print("\n" + "="*70)
|
||||
print("SUMMARY:")
|
||||
print("="*70)
|
||||
print("✓ feedback_historic.json stores previous feedback words (no weights)")
|
||||
print("✓ Maximum of 30 items (feedback00-feedback29)")
|
||||
print("✓ When new feedback is generated (6 words):")
|
||||
print(" - They become feedback00-feedback05 in the historic buffer")
|
||||
print(" - All existing items shift down by 6 positions")
|
||||
print(" - Items beyond feedback29 are discarded")
|
||||
print("✓ Historic feedback words are included in AI prompts for")
|
||||
print(" generate_theme_feedback_words() to avoid repetition")
|
||||
print("="*70)
|
||||
|
||||
if __name__ == "__main__":
|
||||
demonstrate_system()
|
||||
|
||||
Reference in New Issue
Block a user