explaingit

0petru/sentimo

17PythonAudience · developerComplexity · 3/5Setup · moderate

TLDR

A Python library that gives AI chat agents a persistent emotional state and Big Five personality, tracking six emotions that shift based on each conversation exchange and shaping how the agent responds over time.

Mindmap

mindmap
  root((Sentimo))
    What It Does
      Personality tracking
      Emotion state updates
      Memory management
    Tech Stack
      Python 3.10+
      OpenAI API
    Personality Model
      Big Five traits
      Six emotions
    Use Cases
      Emotional chatbots
      Persona simulation
      Research
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build a chatbot character that becomes progressively more cheerful or withdrawn depending on how users talk to it over time

USE CASE 2

Create multiple AI personas with contrasting Big Five personalities and compare how they respond to identical messages

USE CASE 3

Add emotional state tracking to an existing LLM-powered assistant so its tone and responses shift based on conversation sentiment

Tech stack

PythonOpenAI API

Getting it running

Difficulty · moderate Time to first run · 30min

Requires a paid OpenAI API key for emotion classification and memory compression, Python 3.10 or newer.

No license information is stated in the repository.

In plain English

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.

Copy-paste prompts

Prompt 1
Using Sentimo, create a new personality profile called Aria with high openness and low neuroticism, then run a conversation and show the emotion dashboard after each message
Prompt 2
Explain how Sentimo's emotion adjustment works: if a message is classified as high-intensity anger, how much does each of the six emotions shift for a high-agreeableness personality?
Prompt 3
Integrate Sentimo into a Flask web app so users can chat with a persistent emotional agent whose state is preserved between browser sessions
Prompt 4
Extend Sentimo's long-term memory to store compressed summaries in a SQLite database so emotional history survives across restarts
Open on GitHub → Explain another repo

← 0petru on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.