Build a chatbot character that becomes progressively more cheerful or withdrawn depending on how users talk to it over time
Create multiple AI personas with contrasting Big Five personalities and compare how they respond to identical messages
Add emotional state tracking to an existing LLM-powered assistant so its tone and responses shift based on conversation sentiment
Requires a paid OpenAI API key for emotion classification and memory compression, Python 3.10 or newer.
Sentimo is a Python library and simulator that gives AI chat agents a persistent personality and emotional state. The premise is that most AI assistants respond the same way regardless of conversation history or the emotional tone of what you say to them. Sentimo adds a layer on top of a language model that tracks how the agent's emotional state shifts based on each exchange, so that over time the agent's responses are influenced by both its defined personality and its accumulated emotional experience. Personality is built on the Big Five model from psychology: extraversion, neuroticism, openness, agreeableness, and conscientiousness, plus a sensitivity trait. Each profile gets numerical scores across those dimensions. Six emotions are tracked continuously: joy, sadness, anger, fear, trust, and curiosity. After each message, the tool uses the language model to classify the sentiment and intensity of what was said, then adjusts the emotional state accordingly. How much a message moves each emotion depends on the personality traits. Memory works in two layers. A short-term buffer holds recent conversation context with a fixed size limit. A long-term store keeps the most important exchanges, using the language model to compress older memories so they take up less space. Both layers feed into how the agent understands and responds to new messages. The tool ships with a command-line interface that lets you select from multiple named profiles, each with its own personality, emotional state, and memory. The README includes three pre-built profiles called Luna, Atlas, and Sage, with different personality configurations. A verbose mode shows a dashboard after each message with the numerical emotion changes, sentiment scores, and current emotional state visualized as bar charts. The project requires Python 3.10 or newer and an OpenAI API key, which it uses for the language model calls that power emotion classification and memory compression.
← 0petru on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.