a1c8cf0342
Lets the same safe-trigger prompts run through cloud, mi50 (Qwen), or local (dolphin3:8b) for cross-model voice comparison. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G796GsLCvJQKVN7hwV2cDx
35 lines
1.4 KiB
Python
35 lines
1.4 KiB
Python
"""Replay the exact prompts where Lyra went 'too safe' through the rewritten persona.
|
|
Run: `uv run python scripts/persona_replay_eval.py` (cloud backend; needs OPENAI_API_KEY).
|
|
Pick a backend/model with env vars, e.g. `EVAL_BACKEND=mi50 uv run python …` or
|
|
`EVAL_BACKEND=local EVAL_MODEL=dolphin3:8b uv run python …`.
|
|
Eyeball each reply against the four tics: no menu, no tag-question closer, a side taken."""
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
|
|
from lyra import persona, llm
|
|
|
|
# The real safe-trigger prompts from the diagnosed transcripts.
|
|
PROMPTS = [
|
|
"I could run the miner ~8 hours a day. In theory that's about $7.30 of Monero a day. Or am I over simplifying?",
|
|
"Do you want more time between your dream cycles? Or less?",
|
|
"I sort of just slept all day. Kind of a bummer.",
|
|
"So the only way to make money with AI is SaaS apps basically?",
|
|
"I'm not writing any of the code, it's all Claude. I feel like a phony.",
|
|
]
|
|
|
|
|
|
def main() -> None:
|
|
backend = os.getenv("EVAL_BACKEND", "cloud")
|
|
model = os.getenv("EVAL_MODEL") or None
|
|
system = persona.core_prompt()
|
|
print(f"### backend={backend} model={model or '(default)'}")
|
|
for i, p in enumerate(PROMPTS, 1):
|
|
msgs = [{"role": "system", "content": system}, {"role": "user", "content": p}]
|
|
reply = llm.complete(msgs, backend=backend, model=model)
|
|
print(f"\n{'='*80}\n[{i}] USER: {p}\nLYRA: {reply}\n")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|