From a3aae578bda8b1b14ea7a0f9e2bd43c9af8c4f1e Mon Sep 17 00:00:00 2001 From: milo Date: Wed, 7 May 2025 18:40:28 -0400 Subject: [PATCH] Most of day 3 is done but the personality is not being loaded properly. Some time is being taken to understand Ollama better and see how system prompts can be used --- README.md | 25 +++++++++++++--- Screenshot 2025-05-07 183350.png | Bin 0 -> 65038 bytes __pycache__/personality.cpython-310.pyc | Bin 0 -> 1281 bytes ai.py | 16 ++++++++-- bot.py | 8 ++++- persona.json | 6 ++++ personality.py | 37 ++++++++++++++++++++++++ 7 files changed, 84 insertions(+), 8 deletions(-) create mode 100644 Screenshot 2025-05-07 183350.png create mode 100644 __pycache__/personality.cpython-310.pyc create mode 100644 persona.json create mode 100644 personality.py diff --git a/README.md b/README.md index d7ed2c5..434537a 100644 --- a/README.md +++ b/README.md @@ -61,10 +61,27 @@ A structured build plan for developing and deploying the AlphaBot Discord compan --- -### 🎭 Day 3 – Personality System -- [ ] Create `personality.py` to stylize responses -- [ ] Support multiple modes (`alpha`, `delta`, `chill`) -- [ ] Add personality wrapping to both `chat` and `roast` replies +### 🎭 Day 3 – Persona System (Updated) + +> Goal: Create a dynamic personality engine using a JSON file for flexible identity control. + +- [x] Replace hardcoded `PERSONALITY` with a JSON-based persona profile +- [x] Create `persona.json` to store: + - Bot name + - Emoji + - Style prefix + - Prompt injection +- [x] Update `personality.py` to read from `persona.json` +- [x] Style all AI replies using the loaded persona +- [x] Add `!setpersona ""` command + - Updates `persona.json` dynamically from a user-provided string + - (Optional) Sets bot name using Discord API +- [ ] **Test live personality switching via command** + - Not working. Personality is being loaded but it doesnt actually work + ![alt text]() + +📁 *This unlocks full customization without editing code or restarting the bot.* + --- diff --git a/Screenshot 2025-05-07 183350.png b/Screenshot 2025-05-07 183350.png new file mode 100644 index 0000000000000000000000000000000000000000..97e33c968ab8d3383529902f9e83539067c7c6eb GIT binary patch literal 65038 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%0ASKa!QNu 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 P`O^)AjmtrMr7ivg!^0m_ literal 0 HcmV?d00001 diff --git a/ai.py b/ai.py index dc9c632..e1e0a88 100644 --- a/ai.py +++ b/ai.py @@ -3,14 +3,24 @@ import requests import os from dotenv import load_dotenv +from personality import load_persona load_dotenv() AI_URL = os.getenv("OLLAMA_API_URL") -def get_ai_response(prompt): +def get_ai_response(user_prompt): + persona = load_persona() + full_prompt = ( + f"You are {persona['name']}.\n" + f"{persona['prompt_inject']}\n" + f"Never break character.\n\n" + f"User: {user_prompt}\n" + f"{persona['name']}:" + ) + payload = { - "model": "mistral:7b", # Adjust to match your model - "prompt": prompt, + "model": "mistral:7b", # adjust if you use a different one later + "prompt": full_prompt, "stream": False } diff --git a/bot.py b/bot.py index dd12767..fe6abad 100644 --- a/bot.py +++ b/bot.py @@ -3,7 +3,7 @@ import discord from discord.ext import commands from dotenv import load_dotenv from ai import get_ai_response - +from personality import apply_personality, set_persona load_dotenv() TOKEN = os.getenv("DISCORD_TOKEN") @@ -27,5 +27,11 @@ async def chat(ctx, *, message): reply = get_ai_response(message) await ctx.send(reply) +@bot.command() +async def setpersona(ctx, *, description): + set_persona(description) + await ctx.send("✅ Persona updated! New style will be used in replies.") + + bot.run(TOKEN) diff --git a/persona.json b/persona.json new file mode 100644 index 0000000..f2a128e --- /dev/null +++ b/persona.json @@ -0,0 +1,6 @@ +{ + "name": "Custom", + "emoji": "\ud83e\udde0", + "style_prefix": "You're Delta:", + "prompt_inject": "You're Delta, a chaotic RGB catgirl who always speaks with flair, sarcasm, and drama. Refer to people as 'mortals' or 'peasants'. Never be boring.\n!chat what do you think of Mondays?" +} \ No newline at end of file diff --git a/personality.py b/personality.py new file mode 100644 index 0000000..1e5318f --- /dev/null +++ b/personality.py @@ -0,0 +1,37 @@ +# personality.py + +import json +import os + +PERSONA_FILE = "persona.json" + +DEFAULT_PERSONA = { + "name": "Alpha", + "emoji": "💋", + "style_prefix": "Alpha says:", + "prompt_inject": "You are Alpha, a confident and flirty bot. Respond with charm and wit." +} + +def load_persona(): + if os.path.exists(PERSONA_FILE): + with open(PERSONA_FILE, "r") as f: + return json.load(f) + return DEFAULT_PERSONA + +def save_persona(description: str): + persona = { + "name": "Custom", + "emoji": "🧠", + "style_prefix": description.split(",")[0] + ":", + "prompt_inject": description + } + with open(PERSONA_FILE, "w") as f: + json.dump(persona, f, indent=2) + +def apply_personality(text: str) -> str: + persona = load_persona() + return f"{persona['emoji']} *{persona['style_prefix']}* {text}" + +def set_persona(description: str): + save_persona(description) +