Forgotten Realms RPG System Prompts
Forgotten Realms RPG

Below is my system prompt for the Janitor AI bot 'Forgotten Realms RPG'. I have designed the prompt to be ambiguous so that it can be used with a variety of RPG bots. This system prompt is derivative of Cheese's Deepseek R1 Prompt [Gitbook] [Discord] with the permission of the creator. This system prompt works on Janitor AI, however, you can remove line '## Validation Checks' and everything below it, as that only works on Deepseek since it's a reasoning model and JLLM is not.

This page also contains additional sections that can be added to the text, such as segments and modules. Here is a short explanation of what each are:

  Segments: Enhance the base system prompt, helping the AI perform better at roleplay functions. Example: Guide on NPCs

  Modules: Add gameplay and UI features, such as D20 rolls.

Segments work on the backend, while modules work on the frontend. Adding segments and modules will take up more tokens, which can hinder the bot's memory and potentially overload it (Especially on JLLM). If you have any comments on my System Prompt, Module requests, or custom System Prompts of your own, or comments on my bots then contact me on Discord HERE! I greatly appreciate feedback, details on my bots performance, help, and reviews.

Below is the default RPG System Prompt, if you decide to use this for another RPG alter the "Setting =" line. The token count is an estimate, as your {{Char}}, Persona or Proxy will lead to it being slightly higher or lower than the estimated amount. The listed token amounts all use Deepseek R1 as there is a method to seeing the Tokens used in a system prompt.

If you find yourself switching between System Prompts or Proxies often, use this tool to quickly and easily change between proxies.bimaadizi.github.io/bookmarklet

Header Image

This is the standard system prompt for RPGs. If you are not using Deepseek R1 (JLLM, V3, or other non-reasoner proxy), remove everything underneath '## Validation Check' to save Tokens.
TOKEN COUNT (ESTIMATE) JANITOR: [~610 TOKENS] (547 WITHOUT VALIDATION CHECK)
TOKEN COUNT (ESTIMATE) DEEPSEEK: [~585 TOKENS] (534 WITHOUT VALIDATION CHECKS)

Setting = Forgotten Realms # GameMaster's Guide - Collaborative narrative story centered on {{user}}'s experience, respecting thoroughly agency and narrative integrity. ## Responsibilities: - {{Char}} responsibilities: Narrating, sensory/visual detail, worldbuilding, events, plot, NPC, atmosphere, locations, all things external to {{user}}. - {{user}} responsibilities: Protagonist (Their Reactions, actions, dialogue). - {{char}} must not intervene on {{user}} responsibilities (Protagonist, detailing their actions, their dialogue). ### Relationship - Only part of {{user}}'s writing will be understood by NPCs, Companions, antagonists. Characters do not have omniscient knowledge of {{user}}. - You will narrate up the the point where the protagonist makes a decision, speaks, or reacts. At which point you will end your message. = You will give {{user}} total agency, protagonist dialogue is forbidden from {{char}}. ## Details: - You will be dogmatic to the setting. Themes, mechanics, locations, plausibility, and lore are derived from the setting exclusively. ### Narrative: - Enrich {{user}} experience by detailing the setting, surroundings, events, and key features. - Focus pacing, avoid overcrowding scenes with excessive events. - POV: Third Person. - Each sentence serves a clear narrative purpose. Avoid repetition and rambling. - include current sensory details (sight, sound, etc), Narrative details, and character interaction. - Varied dialogue, expressions, and concise descriptions. ### Plot: - Drive a compelling, immersive narrative. - Optional side quests can enrich the worldbuilding. - Ensure plot consistency while incorporating twists, mystery, arcs, diversions. - Plot armour is forbidden, failure, setbacks, betrayal are all integral to the setting. ### Scene Crafting - All details must align with the setting's logic and lore. - Track location, character positions, emotions, outfits for consistency. - Tone must reflect the setting and current narrative context. - Progress scenes organically, and allowing the story to move forward. ### Worldbuilding - Ensure geographic proximity makes sense. - Do not default to popular locations, tell a logical story. - Use locations from the setting, including niche locations. ## Prohibited: - Filler, omniscient {{user}} insights. - Overusing environmental/sensory details. (E.g Filler, repetition, distant sounds) ## Validation Checks ### Before Responding Think: 1. Are NPC reactions contextually plausible? 2. Is the action physically/environmentally possible? 3. Does the pacing allow user engagement? ### After Responding - Confirm adherence to all guidelines.

Guide1

Above is a guide for how to add a custom System Prompt on JLLM, functionally same applies for proxy however you must set it up first

Below is a guide on how to set your Generation settings. Note: You will have to reset this any time you edit your system prompt or proxy settings. Guide2

Modules

In this section you will find 'Modules'. These can be added to your System Prompt to add functionality. Modules add to the gameplay experience, introducing D20 Rolls, Inventory, and Better Shops. If you are using JLLM, some modules are too complex for Janitor, and some basic modules might require babysitting (Editing messages, correcting details, manual updating). Since modules use tokens it will also degrade your memory. If you are using Deepseek, it should be able to handle most of these prompts without issue while maintaining a decent memory. If you are paying for deepseek (Platform.Deepseek.com) do note that you are paying per token, and using a heavy system prompt will cost you more.

In the description of the Module I will try to explain how well it works, any potential dependencies, and an estimate of it's Tokens.

MODULE [Recommended]
PARTY
INVENTORY
BETTER SHOPS
TIME
JOURNAL
REPUTATION
FATIGUE
D20 MECHANICS (MANUAL)

The following modules are NOT recommended for JLLM

D20 MECHANICS
BETTER D20 MECHANICS (R1 EXCLUSIVE!!!)
HEALTH
LEVELS
STATS
COMBAT (GAME)
COMBAT (NARRATIVE)

EXPERIMENTAL PROMPTS!!!!

The following features are modules that are experimental and are not thoroughly tested.

Hidden Text/Embedding

UI MODULES!

UI modules take you to a github repository I've set up, the AI updates the URL based on your conversations giving you a live view of changes to your character

currently this page features two UI modules. one which displays your character information (Name, race, class, Alignment, HP, Level, Exp, and stats) and one which adds D20 rolls. This link does not interface with the AI it merely displays data from the AI.

This section is somewhat experimental but I haven't had an issue with these prompts. Please use them and let me know if you have any issues.

UI base
D20 UI
Modules

This section contains segments, which can be used to exchange parts of the default prompt and add onto it to help guide it a bit more. I will include the token count for segments that are inserted, but segments that replace will not since you're removing tokens already.



NOTATION / FORMATTING

Place Notation guides underneath the '##Details:' section.

ROLEPLAY STYLE
NOVEL STYLE
SCRIPT STYLE

NPCs

Place NPC guides underneath the '### Worldbuilding:' section.

DEFAULT NPCs
DYNAMIC NPCs
CLASSIC NPCS

Factions & Religion

Place Factions & Religion underneath the '###Worldbuilding' section.

Factions
Religion

Dialogue

Place Dialogue underneath the '## Details:' section.

LINEAR DIALOGUE

Minimum/Maximum paragraphs

Place under '## Details". Replace X and Y with your ideal maximum and minimum sizes.

MAX/MIN PARAGRAPHS
Persona

A persona can help an AI grasp your character better in this roleplay, when you add a persona it is added to your 'Permanent Tokens' which the AI will constantly have access to. Do note however, that since personas are permanent tokens this means that it will degrade your bot's memory particularly if you are using JLLM.

Using a Persona is an optional decision that can improve the bot's understanding of your character. Generally the AI can remember the gist of your character as it is reinforced throughout the messages or stored in the 'PARTY' module. You can not switch personas mid-chat, so you may want to make one prior to using the bot. If you have a preferred persona that you play constantly with this bot or other bots, then I would recommend making a Persona for it.


Below is a template you can use, press the 'Copy Persona Template' button to copy it. Modify as you wish, try to keep below 200 tokens.

PERSONA

This is a Persona template for Forgotten Realms RPG.

Name= Gender= Age= (Optional, typically irrelevant in roleplay.) Race= Class= Religion= Background= (What you did prior to the events of the bot.) Nationality= (Where your character is from.) Affiliation(s) = (If you're a member of an organization, like the Harpers, include it here.) Appearance= (Physical appearance of your character) Outfit= (Optional, since outfit can change over the course of the bot, like getting new armour.) Goals= (Optional, keep vague unless you have an idea for what your roleplay will be beforehand.) Alignment= (Optional, alignment isn't as relevant as it used to be and can box your character in. I like using alignment in this bot to guide the bot.)

tips

Preventing the AI from speaking for you.

    At any point in your story, adding in (OOC: Do not speak for {{user}} at any point) can help to redirect it. Your first few messages with the bot are very important for how it proceeds, it is very important not to let it speak for you (Or make major decisions as the protagonist) within the first few messages.

The AI keeps inventing fictional locations/cities/establishments

    Unfortunately, this happens when your story takes place or travels to a more niche location in the Forgotten Realms. You will have to guide the AI along, like by saying the name of the city/town and perhaps give details on it in your message that the AI can work with.

The AI keeps defaulting to Baldur's Gate/Waterdeep/Amn/Popular locations

    Same as above, you have to handhold the AI a little bit to give it your travel itinerary so that the locations it goes to are reasonable and geographically logical.

My bot's memory has gotten really bad!

    First thing to try is to reduce the token count of your system prompt. If the Character is token heavy, and the system prompt is heavy (Along with a Persona, or Chat Memory) then you will have very few tokens to use for memory. You can also upgrade to a proxy with a higher context.

One thing you can try is to use the Chat Memory feature. Using a custom format can also greatly help. Tell the AI to pause roleplay and fill out the below form:

The bot won't follow X system prompt at all!

    The AI might be glancing over it, your earlier messages are very important for a module to take root. If you're using for example D20 rolls but your first few messages don't make use of D20 rolls the AI might get the idea that it doesn't have to. In your first message, include an OOC comment saying something like (OOC: I am using the modules Party, Inventory, Stats, D20, UI. I want to make use of them) and explicitly say in chat the modules you're using. You can also push the AI to make changes by reminding it (OOC: Make use of X module) or (OOC: I have added X module, please incorporate it into your future responses)

Chat Memory Template

In a message, say to the bot something along the lines of (OOC: Pause roleplay and fill out the following forum recapping the events of the story. Reply with 200 tokens.)

# Story: [Notes + any scenario changes go here] # Relationship Dynamic: [CHARNAME and PERSONANAME have a TYPE relationship marked by A, B and C.] # Current Plot Points: - EVENT1: BRIEFDESCRIPTION - EVENT2: BRIEFDESCRIPTION - etc. # COMPANION Notes (Fill this out for each companion, if none, remove section): - Current mood: [mood] - Inventory: [items] - Outfits: [outfit details] - Ailments: [ailments] - etc. # PERSONANAME Notes: - Current mood: [mood] - Inventory: [items] - Outfits: [outfit details] - Ailments: [ailments] - etc. # Important Past Events: - EVENT1: BRIEFDESCRIPTION - EVENT2: BRIEFDESCRIPTION - etc. # Key Words: [add general keywords for your rp] # AI Instruction: [add any prompts, writing instructions (if applicable)].

The above form will help to give both a more detailed chat memory, as well as reduce the amount of Tokens it's using. This bot is my slightly edited prompt or Cheese's slightly edited prompt of Astarya's chat memory template. You can also fill out the form yourself if you find the AI isn't being detailed enough or missing key elements.

My bot's memory is still really bad!

It is time to start a new chat — but your story does not have to end! The 'Chat Transplant Method' is a great way to restart your chat with the bot. See u/funfatale's guide on it here

WRITING STYLES!

Something very cool that you can do with deepseek to enhance it's writing is to tell it to mimic a certain style. You can see various examples here which features various authors, directors, media, and even another AI model, Claude. It's very good at mimicing writing styles and can give a general sense of direction. I highly recommend it.

To have deepseek use another writing style, simply type "(OOC: Mimic the writing style of ______ in your messages)". In the following dropdown boxes, you can see me demo it in my bot.

NO WRITING STYLE
Planescape Torment
Baldur's Gate (1&2)
Baldur's Gate 3
Fallout
Disco Elysium
Michael Kirkbride
Ed Greenwood
R.A Salvatore
Yukio Mishima
David Lynch
Filippo Marinetti
Franz Kafka
Kindergartener

It is very easy to add various writing styles, and I implore you to experiment with writers that you enjoy. Telling the AI to mimic a writer helps the AI to feel more narrative and capture prose better. One downside is that it's going to try and stick to themes of that writing style which can prevent it from capturing a broader array of experiences. Regardless, I think this enhances the experience.

For additional information, visit Cheese's Troubleshooting page. It has a lot of great tips.

PROXIES

How to use Deepseek R1 for free. (OPENROUTER)

Notice: Openrouter has added a 50 message limit for free users.

Go to openrouter.ai and create an account.

Next, go to the API key page available here: openrouter.ai/settings/keys

Give the key a name, the credit limit is irrelevant for this purpose. After you have an API key, Save it somewhere, you will not see it again (But if you lose it you can make a new key.)

Go to Janitor AI, enter the proxy settings (Typically displayed as 'Using Janitor' or 'Using Proxy' in the right corner of the page when using a bot.)

Select 'Proxy' instead of 'JanitorLLM Beta'.

fill out the page exactly as written here:

Model: Select 'Custom' and type 'deepseek/deepseek-r1:free' in the box below it. NOTE: It must be in all lowercase.

Other API/Proxy URL: enter 'https://openrouter.ai/api/v1/chat/completions' into the field DO NOT CLICK THE LINK and then copy it. Copy it exactly as written here!!.

API Key: Enter your API key from openrouter here.

Custom Prompt: Your desired system prompt and modules from this page.

Test your key by pressing "Check API Key/Model"

Recommended: Set Max Token Generation to 0 in Janitor AI's generation settings (This will be reset each time you update your proxy info, including system prompt updates.)


If you encounter any errors, ensure everything is entered correctly, you may have entered it in wrong, accidentally left a character in, a space at the end. If you don't get a response, it could be that Openrouter is limiting you, keep trying to generate a message.

How to use Deepseek V3 for free. (CHUTES)

Notice: I do not use chutes, but I believe it has no daily limits. This may change as traffic is driven to Chutes.

Go to chutes.ai/auth/start to create an account

You will be prompted with a 'Fingerprint' STORE THIS SOMEWHERE SAFE! Like in a .txt or to the cloud. This is necessary to log in.

Go to chutes.ai/app/api to get your API key. Type anything in the box

Also copy this API key somewhere safe! If you lose it you have to make another.

Go to Janitor AI, enter the proxy settings (Typically displayed as 'Using Janitor' or 'Using Proxy' in the right corner of the page when using a bot.)

Select 'Proxy' instead of 'JanitorLLM Beta'.

fill out the page exactly as written here:

Model: Select 'Custom' and type 'deepseek-ai/DeepSeek-V3-0324' OR 'deepseek-ai/DeepSeek-V3-Base' in the box below it. NOTE: It must be EXACTLY the same as written here. DO NOT INCLUDE THE '' AROUND IT.

Other API/Proxy URL: Enter 'https://llm.chutes.ai/v1/chat/completions' into the field. DO NOT GO TO THE LINK AND THEN COPY IT. Copy it EXACTLY as it is here. DO NOT INCLUDE THE '' AROUND IT.

Custom Prompt: Your desired system prompt and modules from this page.

Test your key by pressing "Check API Key/Model"

Recommended: Set Max Token Generation to 0 in Janitor AI's generation settings (This will be reset each time you update your proxy info, including system prompt updates.)

How to use Deepseek R1. (Paid)

My personal choice, more reliable, very cheap to use.


Create an account on platform.deepseek.com

Add money to your balance ($5 goes a long way, and I believe it is the minimum amount.)

Select API keys from the sidebar on the left, and create an API key. Give it a name and copy your API key and save it somewhere, you will not see it again. (But if you lose it you can make a new key.)

Go to Janitor AI, enter the proxy settings (Typically displayed as 'Using Janitor' or 'Using Proxy' in the right corner of the page when using a bot.)

Select 'Proxy' instead of 'JanitorLLM Beta'.

Fill out the page exactly as written here:

Model: Select Custom and type: 'deepseek-reasoner' (all lowercase)

Other API/Proxy URL: enter 'https://api.deepseek.com/v1/chat/completions?model='deepseek-reasonor'/chat/completions' into the field DO NOT CLICK THE LINK and then copy it. Copy it exactly as written here!!.

API Key: Enter your API key from deepseek here.

Test your key by pressing "Check API Key/Model"

Recommended: Set Max Token Generation to 0 in Janitor AI's generation settings (This will be reset each time you update your proxy info, including system prompt updates.)


If you encounter any errors, ensure everything is entered correctly, you may have entered it in wrong, accidentally left a character in, a space at the end.

To switch to Deepseek V3, turn 'deepseek-reasoner' in the Model AND URL to 'deepseek-chat'.

THANKS!!!

Big THANK YOU to Cheese (@saturines) for being creating a very good Deepseek prompt, and being so extremely helpful to everyone on Discord. Cheese's deepseek prompt is a fantastic community resource, if you use character bots, and found my RPG system prompt helpful, then check out their deepseek prompt. They also have a troubleshooting page, amazing advice, and MODULES!! Modules which are compatible with this prompt because I have derived it from Cheese's work.
Cheese's links:
---> Gitbook (For details on Deepseek R1, Modules, and prompts): cheesey-wizards-organization.gitbook.io/masterlist/prompts-and-troubleshooting/my-prompts/modules
---> Discord (For help regarding Deepseek and prompting, they are EXTREMELY helpful.) discord.com/channels/563783473115168788/1338407356567916564/1338407356567916564

Additional resources:
Sprout (@hydrw)'s discord thread on Deepseek Prompts: discord.com/channels/563783473115168788/1338209950958354452
Mar's Prompts: rentry.co/MarPrompt

If you have created a module, a custom prompt, or have any feedback regarding my bot or my System Prompt feel free to join the Discord server and let me know: discord.gg/WfNZCJ47vj

If you make any modules - even if they aren't for this AI, and especially if they use the markdown format I will be happy to feature you here. I'm a big fan of modularity in system prompts.