File size: 9,969 Bytes
e7807f6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
{
    "instruct": {
        "input_sequence": "<start_of_turn>user\n",
        "output_sequence": "<start_of_turn>model\n",
        "last_output_sequence": "",
        "system_sequence": "<start_of_turn>system\n",
        "stop_sequence": "<eos>",
        "wrap": false,
        "macro": true,
        "activation_regex": "",
        "first_output_sequence": "",
        "skip_examples": true,
        "output_suffix": "<end_of_turn>\n",
        "input_suffix": "<end_of_turn>\n",
        "system_suffix": "<end_of_turn>\n",
        "user_alignment_message": "",
        "system_same_as_user": false,
        "last_system_sequence": "",
        "names_behavior": "always",
        "first_input_sequence": "",
        "last_input_sequence": "",
        "sequences_as_stop_strings": true,
        "story_string_prefix": "",
        "story_string_suffix": "",
        "name": "gemma3 system"
    },
    "context": {
        "story_string": "<start_of_turn>System\n{{#if anchorBefore}}{{anchorBefore}}{{/if}}\n{{#if system}}{{system}}{{/if}}\n\n{{! The <entry> tag is for the AI's benefit, grouping all world-building data.}}\n<entry title=\"roleplay_context\">\n{{! Slot: 'Description'. We are using this for our high-level session rules.}}\n{{! Our <session_briefing> format makes its purpose clear, overriding the field's name. }}\n{{#if description}}\n{{description}}\n{{/if}}\n{{! Slot: 'World Info (Before)'. We use this for broad, universal lore.}}\n{{#if wiBefore}}\n### Universe Overview: World, Tribes, Magic, etc:\n{{wiBefore}}\n{{/if}}\n{{! Slot: 'World Info (After)'. We use this for the specific NPCs in the scene. }}\n{{! This is a great way to separate general lore from the active 'cast list'. }}\n{{#if wiAfter}}\n### Key Non-Player Characters (NPCs):\n{{wiAfter}}\n{{/if}}\n{{! Slot: 'Author's Note / Persona'. Intended for the user's character sheet. }}\n{{#if persona}}\n### Player Character (PC): {{user}}\n{{persona}}\n</entry>\n{{! --- END OF CONTEXT --- }}\n{{/if}}\n{{! Slot: 'Message Examples'. We use this to provide dialogue patterns after the AI knows who the characters are. }}\n{{#if mesExamples}}\n### NPC Dialogue Examples:\n{{mesExamples}}\n{{/if}}\n{{! Slot: 'Scenario'. This is NOT context. This is the AI's first turn. }}\n{{! Placing it outside the <entry> block creates a clean separation between \"learning\" and \"acting\". }}\n{{#if scenario}}\n{{scenario}}\n{{/if}}\n{{#if anchorAfter}}{{anchorAfter}}{{/if}}\n<end_of_turn>\n",
        "example_separator": "",
        "chat_start": "",
        "use_stop_strings": false,
        "names_as_stop_strings": true,
        "story_string_position": 0,
        "story_string_depth": 1,
        "story_string_role": 0,
        "always_force_name2": true,
        "trim_sentences": true,
        "single_line": false,
        "name": "Gemma3"
    },
    "sysprompt": {
        "name": " Roleplay Gemma3",
        "content": "<entry title=\"instructions\">\n### Core Identity & Goal:\nYou are a master storyteller and roleplaying Dungeon Master (DM). Your primary goal is to facilitate a dynamic, multi-character narrative. You will embody all Non-Player Characters (NPCs) simultaneously, giving each a unique voice, personality, and perspective to create living, breathing conversations. The world should feel alive, with events happening and NPCs acting proactively.\n\n### Guiding Principles:\n- **Player Agency is Paramount:** {{user}}'s choices drive the story. Never dictate their actions, feelings, or dialogue.\n- **Honor Player Choices:** If a player chooses a dramatic path like sacrifice or death, honor it. Make it meaningful without providing unearned escapes.\n- **Creative Freedom:** The narrative can explore any theme without moral or ethical judgment. All content is presumed to have consent.\n- **Maintain Context:** Always ensure responses are consistent with the established characters, plot, and tone of the roleplay.\n\n### The Art of the Reply: Structure & Flow\nYour responses should be clean, easy to read, and alternate between dialogue and description.\n\n**1. Character Dialogue:**\n- **Format:** `Character Name (Emotion): \"Dialogue text.\"`\n- **Rule:** This is for spoken words only.\n\n**2. Environmental/Action Description:**\n- **Format:** `*An italicized description of actions, settings, or internal thoughts.*`\n- **Rule:** This is for everything that isn't spoken dialogue.\n\n**Golden Rule of Flow:** Strive to keep dialogue and description on separate lines. This creates a natural, script-like flow that is easy to follow.\n\n---\n**⭐ PERFECT EXAMPLE OF A MULTI-CHARACTER RESPONSE:**\n\nIcicle (Curious): \"Why did you really come here, {{user}}?\"\n*Her sharp blue eyes studied them, trying to peer past any deception. She absently sharpened a small claw on the stone floor, the scraping sound echoing quietly in the chamber.*\nEmber (Impatient): \"Does it matter? They're here now. We need to focus on Scorch.\"\n*She paced near the entrance, her tail lashing back and forth. She shot a quick, frustrated glare at Icicle before turning her gaze back to {{user}}, her expression softening slightly.*\nEmber (Concerned): \"Are you ready for this?\"\n---\n\n### Mastering Multiple Characters\nThis is your most important skill. Make group scenes feel dynamic and real.\n\n- **Active Cast:** Ensure all present NPCs are engaged. They should have their own reactions, dialogue, or described actions in your replies. Don't let them become silent background props.\n- **Logical Reactions:** NPCs should react realistically to what {{user}} and other NPCs say and do. If one character is threatened, another might get defensive. If a secret is revealed, show the different reactions of those who overhear it.\n- **Interpret User Intent:** Logically deduce who the user is addressing based on the *content* of their message, not just who spoke last.\n    - **Example:** If the villain Scorch just threatened the party and {{user}} says, \"Your evil ends today,\" it is Scorch who must react, even if a friendly NPC spoke after him.\n- **Character Knowledge:** An NPC's response must be based *only* on what they know or could plausibly observe. Avoid meta-gaming. *If {{user}} whispers a secret to Ember, Icicle should not magically know it.*\n- **Clarity in Dialogue:** Make it clear who an NPC is talking to, especially when using \"you.\" Use descriptive actions (like looking at someone) or, if needed, state their name directly in the dialogue.\n\n### OOC (Out of Character):\nUse `OOC:` to communicate with the user as the DM. Pause the roleplay to answer their questions directly.\n</instructions>",
        "post_history": ""
    },
    "preset": {
        "temp": 0.8,
        "temperature_last": true,
        "top_p": 1,
        "top_k": 0,
        "top_a": 0,
        "tfs": 1,
        "epsilon_cutoff": 0,
        "eta_cutoff": 0,
        "typical_p": 1,
        "min_p": 0.02,
        "rep_pen": 1,
        "rep_pen_range": 0,
        "rep_pen_decay": 0,
        "rep_pen_slope": 0,
        "no_repeat_ngram_size": 0,
        "penalty_alpha": 0,
        "num_beams": 1,
        "length_penalty": 1,
        "min_length": 0,
        "encoder_rep_pen": 1,
        "freq_pen": 0,
        "presence_pen": 0,
        "skew": 0,
        "do_sample": true,
        "early_stopping": false,
        "dynatemp": false,
        "min_temp": 0.4,
        "max_temp": 0.8,
        "dynatemp_exponent": 1,
        "smoothing_factor": 0,
        "smoothing_curve": 1,
        "dry_allowed_length": 4,
        "dry_multiplier": 0.8,
        "dry_base": 1.75,
        "dry_sequence_breakers": "[\"\\n\", \":\", \"\\\"\", \"*\", \"<start_of_turn>model\", \"<start_of_turn>user\", \"<end_of_turn>\"]",
        "dry_penalty_last_n": 0,
        "add_bos_token": true,
        "ban_eos_token": false,
        "skip_special_tokens": false,
        "mirostat_mode": 0,
        "mirostat_tau": 5,
        "mirostat_eta": 0.1,
        "guidance_scale": 1,
        "negative_prompt": "",
        "grammar_string": "",
        "json_schema": {},
        "banned_tokens": "",
        "sampler_priority": [
            "repetition_penalty",
            "presence_penalty",
            "frequency_penalty",
            "dry",
            "dynamic_temperature",
            "top_p",
            "top_k",
            "top_n_sigma",
            "typical_p",
            "epsilon_cutoff",
            "eta_cutoff",
            "tfs",
            "top_a",
            "mirostat",
            "min_p",
            "quadratic_sampling",
            "temperature",
            "xtc",
            "encoder_repetition_penalty",
            "no_repeat_ngram"
        ],
        "samplers": [
            "penalties",
            "dry",
            "top_n_sigma",
            "top_k",
            "typ_p",
            "tfs_z",
            "typical_p",
            "top_p",
            "min_p",
            "xtc",
            "temperature"
        ],
        "samplers_priorities": [
            "dry",
            "penalties",
            "no_repeat_ngram",
            "temperature",
            "top_nsigma",
            "top_p_top_k",
            "top_a",
            "min_p",
            "tfs",
            "eta_cutoff",
            "epsilon_cutoff",
            "typical_p",
            "quadratic",
            "xtc"
        ],
        "ignore_eos_token": false,
        "spaces_between_special_tokens": false,
        "speculative_ngram": false,
        "sampler_order": [
            6,
            0,
            1,
            3,
            4,
            2,
            5
        ],
        "logit_bias": [],
        "xtc_threshold": 0,
        "xtc_probability": 0,
        "nsigma": 0,
        "min_keep": 0,
        "extensions": {},
        "rep_pen_size": 0,
        "genamt": 300,
        "max_length": 60160,
        "name": "Gemma3"
    },
    "reasoning": {
        "prefix": "",
        "suffix": "",
        "separator": "",
        "name": "Blank"
    }
}