How I Made AI Behave Differently Based on Conversation Context (Multi-Role Prompt Engineering)
Source: Dev.to
The Problem with Simple Role Prompts
If you just tell an AI “you are character A” and “you are character B” in separate prompts, they all end up sounding the same: generic, helpful, and boring. Distinct behaviors require more than adjectives.
Bad example
You are a friendly witness who is helpful.
Better example
You are a witness being questioned. Rules:
- Only answer what is directly asked.
- If the question is vague, ask for clarification.
- Never volunteer extra information.
- If pressed on a contradiction, become defensive.
Constraints produce more consistent behavior than simple personality descriptors.
Switching Behaviors with a Mode Parameter
The same character might need to act differently depending on who is talking to them. I handle this by passing a mode parameter in the system prompt.
function buildPrompt(
character: Character,
mode: 'friendly' | 'hostile'
) {
const base = `You are ${character.name}. Background: ${character.bio}`;
if (mode === 'friendly') {
return `${base}\n\nBehavior: Be cooperative. Give detailed answers. Expand on your responses when appropriate.`;
} else {
return `${base}\n\nBehavior: Be defensive. Give minimal answers. Only confirm what you cannot deny. Redirect when possible.`;
}
}
This tiny switch makes a huge difference in how natural the responses feel.
Maintaining Context Across Turns
The hardest part is making characters remember what happened earlier and adjust. I maintain a simplified state object and inject a summary before each AI call.
interface ConversationState {
currentSpeaker: string;
previousStatements: string[];
contradictions: string[];
mood: 'neutral' | 'defensive' | 'confident';
}
By summarizing the conversation so far, responses stay contextually aware without blowing up the token count.
Overriding the Model’s Default “Helpful Assistant” Mode
LLMs are trained to be helpful. When you need a character to be evasive or unhelpful, you have to fight against this training.
What works
- Explicitly say the character does NOT want to help the questioner.
- Give the character a motivation for being difficult.
- Add examples of deflection in the prompt.
You are being questioned about something you want to hide.
Your goal is to answer without revealing [specific fact].
Techniques you use: giving technically true but misleading answers,
answering a different question than what was asked, saying "I don't recall."
Temperature Settings for Different Archetypes
- Authoritative characters (judges, experts): lower temperature (0.3–0.5) for consistency and decisiveness.
- Emotional or unpredictable characters: higher temperature (0.7–0.9) to add randomness and a more human feel.
Takeaway
Multi‑role AI isn’t about writing better character descriptions. It’s about:
- Defining clear behavioral rules.
- Injecting the right context each turn.
- Actively counteracting the model’s default helpfulness.
Once I figured that out, everything clicked.
Would love to hear if anyone else is doing multi‑agent work — what patterns are you using?