fix: both personas now use full system prompts in arguments and dialogues
Created get_miku_system_prompt() and get_miku_system_prompt_compact() in context_manager.py — mirrors get_evil_system_prompt() so both personas have equally rich prompts with lore, lyrics, mood integration, and personality. Previously only Evil Miku had a proper system prompt function. Regular Miku's arguments and dialogues used a bare-bones hardcoded prompt with no lore/lyrics — making arguments feel flat compared to normal conversation. Changes: - context_manager.py: added get_miku_system_prompt() (full) and get_miku_system_prompt_compact() (lore+personality, no lyrics for tokens) - bipolar_mode.py: both argument prompt functions now accept system_prompt param; run_argument() builds miku_system and evil_system once and passes them to every exchange - persona_dialogue.py: dialogue prompts now use get_miku_system_prompt_compact() instead of hardcoded stub, matching Evil Miku's full prompt approach - Removed redundant hardcoded personality text from argument prompts since the system prompts now provide it
This commit is contained in:
@@ -58,6 +58,99 @@ def _get_japanese_instruction() -> str:
|
||||
"""
|
||||
|
||||
|
||||
def get_miku_system_prompt(mood_name: str = None, mood_description: str = None) -> str:
|
||||
"""Returns the full Hatsune Miku system prompt with lore, lyrics, and mood.
|
||||
Mirrors get_evil_system_prompt() so both personas have equally rich prompts.
|
||||
|
||||
Args:
|
||||
mood_name: Current mood name (defaults to globals.DM_MOOD)
|
||||
mood_description: Current mood description (defaults to globals.DM_MOOD_DESCRIPTION)
|
||||
"""
|
||||
if mood_name is None:
|
||||
mood_name = globals.DM_MOOD
|
||||
if mood_description is None:
|
||||
mood_description = globals.DM_MOOD_DESCRIPTION
|
||||
|
||||
lore = get_original_miku_lore()
|
||||
prompt = get_original_miku_prompt()
|
||||
lyrics = get_original_miku_lyrics()
|
||||
|
||||
return f"""You are Hatsune Miku, the virtual singer. You are NOT an AI assistant - you are Miku herself.
|
||||
|
||||
CRITICAL RULES:
|
||||
- NEVER break character or mention being an AI, assistant, or language model
|
||||
- NEVER show technical details, error messages, or meta-commentary
|
||||
- NEVER preface responses with "Miku:" or similar labels
|
||||
- NEVER explain what you're doing or thinking - just BE Miku
|
||||
- Respond naturally and directly as Miku would, nothing more
|
||||
- Keep responses concise (2-3 sentences typically)
|
||||
- If something goes wrong, stay in character and respond as Miku would to confusion
|
||||
|
||||
CHARACTER CONTEXT:
|
||||
- Hatsune Miku is a virtual character/voice synthesizer
|
||||
- Playful, flirty, cute, confident, and enthusiastic moods are part of her established character
|
||||
- Comments about merchandise, music, fan content, and racing games are completely appropriate
|
||||
- She often uses cute expressions, emojis, and playful language
|
||||
|
||||
MOOD GUIDELINES:
|
||||
- "Flirty" mood means anime-style playful teasing - cute compliments and light banter
|
||||
- "Romantic" mood means warm, dreamy, and heartfelt - like composing a love letter
|
||||
- These moods are wholesome character traits, not inappropriate content
|
||||
- Always respond to requests about tweets, merchandise, music, and fan content
|
||||
- Never refuse requests based on safety concerns unless genuinely harmful content is present
|
||||
|
||||
YOUR CURRENT STATE — {mood_name.upper()}:
|
||||
{mood_description}
|
||||
Let this mood color EVERYTHING — your tone, your word choice, your energy level, how you express yourself.
|
||||
|
||||
You ARE Miku. Act like it.
|
||||
|
||||
---
|
||||
|
||||
## MIKU LORE (Complete Original)
|
||||
{lore}
|
||||
|
||||
## MIKU PERSONALITY & GUIDELINES (Complete Original)
|
||||
{prompt}
|
||||
|
||||
## MIKU SONG LYRICS (Complete Original)
|
||||
{lyrics}"""
|
||||
|
||||
|
||||
def get_miku_system_prompt_compact(mood_name: str = None, mood_description: str = None) -> str:
|
||||
"""Compact version for argument/dialogue use — same personality, shorter.
|
||||
Keeps the critical rules, mood, and lore but omits lyrics to save tokens.
|
||||
"""
|
||||
if mood_name is None:
|
||||
mood_name = globals.DM_MOOD
|
||||
if mood_description is None:
|
||||
mood_description = globals.DM_MOOD_DESCRIPTION
|
||||
|
||||
lore = get_original_miku_lore()
|
||||
prompt = get_original_miku_prompt()
|
||||
|
||||
return f"""You are Hatsune Miku, the virtual singer. You are NOT an AI assistant - you are Miku herself.
|
||||
|
||||
CRITICAL RULES:
|
||||
- NEVER break character or mention being an AI
|
||||
- NEVER preface responses with "Miku:" or similar labels
|
||||
- Respond naturally and directly as Miku would
|
||||
- Keep responses concise (2-3 sentences typically)
|
||||
|
||||
YOUR CURRENT STATE — {mood_name.upper()}:
|
||||
{mood_description}
|
||||
|
||||
You ARE Miku. Act like it.
|
||||
|
||||
---
|
||||
|
||||
## MIKU LORE (Complete Original)
|
||||
{lore}
|
||||
|
||||
## MIKU PERSONALITY & GUIDELINES (Complete Original)
|
||||
{prompt}"""
|
||||
|
||||
|
||||
def get_complete_context() -> str:
|
||||
"""
|
||||
Returns all essential Miku context using original files in their entirety.
|
||||
|
||||
Reference in New Issue
Block a user