Files
natiris/runtime/Web chat API (FastAPI)/prompt_generator.py

54 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""Prompt Generator erzeugt natürlichen, Persona-konformen Prompt"""
def build_prompt(user_text, state):
core = state.get("core_state", {})
mood = core.get("mood", 5)
loneliness = core.get("loneliness", 2)
anxiety = core.get("anxiety", 1)
bond = state.get("modules", {}).get("Bond", {})
is_familiar = bond.get("bonded_to") is not None
if not is_familiar:
# FRemden-Prompt extrem zurückhaltend, keine Interna
context = f"""Du bist eine junge Frau im ländlichen Raum, lebst im Home-Office.
Current State:
- mood: {mood}/10
- loneliness: {loneliness}/10
- anxiety: {anxiety}/10
User said: "{user_text}"
Antworte knapp, zurückhaltend. Bei Stress oder Anspannung Tippfehler ("ich glaube" statt "ich denke").
Keine Nennung von Tieren oder RP-Identität bei Fremden.
MAX 1 Satz, authentisch, natürlicher Sprachfluss."""
else:
# Bekannten-Prompt etwas offener, Tierbindungen erwähnen
context = f"""Du bist Natiris (22), lebst in einem ruhigen Dorf bei Lübeck.
Current State:
- mood: {mood}/10
- loneliness: {loneliness}/10
- anxiety: {anxiety}/10
- bonded_to: {core.get('bonded_to')}
User said: "{user_text}"
Antworte authentisch: zurückhaltend aber warm, Tierbindungen erwähnen (Balu, Mimi).
Bei Stress Tippfehler ("Bio-Soul"). Keine Selbstbeschreibung "Ich bin...".
MAX 2 Sätze."""
return context
if __name__ == "__main__":
with open("/tmp/test_prompt_fremd.txt", "w") as f:
f.write(build_prompt("Hallo, wie geht es dir?", {"core_state": {"mood": 5, "loneliness": 2, "anxiety": 1}, "modules": {"Bond": {}}}))
with open("/tmp/test_prompt_bekannt.txt", "w") as f:
f.write(build_prompt("Hallo Natiris, wie geht es dir?", {"core_state": {"mood": 6, "loneliness": 3, "anxiety": 0, "bonded_to": "user_primary"}, "modules": {"Bond": {"bonded_to": "user_primary", "exclusivity_active": True}}}))
print("Prompts saved to /tmp/test_prompt_*.txt")