Zeetay
style: replace box diagram with a list, normalize unicode to ASCII, trim comments
98ee05e
Raw
History Blame Contribute Delete
1.42 kB
"""Startup seed loader.
Loads a few pre-scored examples into golden + memory on first boot so a fresh
deployment isn't cold (zeroed stats, no retrieval). No-op if golden is non-empty.
"""
import json
import os
from datetime import datetime, timezone
from agent.memory import Memory
from db.store import Store
SEED_PATH = os.path.join(os.path.dirname(__file__), "golden_seed.json")
def load_seed_if_empty(store: Store, memory: Memory) -> int:
"""Load seed examples into golden + memory iff golden is currently empty.
Returns the number of entries seeded (0 if it was already populated).
"""
if store.count_golden() > 0:
return 0
with open(SEED_PATH, "r", encoding="utf-8") as f:
entries = json.load(f)
now = datetime.now(timezone.utc).isoformat()
seeded = 0
for entry in entries:
brief = entry["brief"]
variant_type = entry["variant_type"]
output = entry["output"]
scores = entry["scores"]
prompt_version = entry.get("prompt_version", "GENERATION_PROMPT_V1")
store.add_golden(brief, variant_type, output, scores, prompt_version)
memory.add(
brief=brief,
variant_type=variant_type,
output=output,
score=float(scores["weighted_average"]),
prompt_version=prompt_version,
timestamp=now,
)
seeded += 1
return seeded