302 lines
14 KiB
Markdown
302 lines
14 KiB
Markdown
# Living AI System
|
|
|
|
The Living AI system gives the bot personality, emotional depth, and relationship awareness. It transforms a simple chatbot into a character that learns, remembers, and evolves through interactions.
|
|
|
|
## Table of Contents
|
|
|
|
- [Overview](#overview)
|
|
- [System Components](#system-components)
|
|
- [How It Works Together](#how-it-works-together)
|
|
- [Feature Toggle Reference](#feature-toggle-reference)
|
|
|
|
## Overview
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
│ Living AI System │
|
|
├─────────────────────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
│ │ Mood │ │ Relationship │ │ Fact │ │ Opinion │ │
|
|
│ │ System │ │ System │ │ Extraction │ │ System │ │
|
|
│ │ │ │ │ │ │ │ │ │
|
|
│ │ Valence + │ │ 5 levels │ │ AI-based │ │ Topic │ │
|
|
│ │ Arousal │ │ 0-100 score │ │ learning │ │ sentiments │ │
|
|
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
│ │
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
│ │Communication │ │ Proactive │ │ Association │ │ Self │ │
|
|
│ │ Style │ │ Events │ │ System │ │ Awareness │ │
|
|
│ │ │ │ │ │ │ │ │ │
|
|
│ │ Learned │ │ Birthdays, │ │ Cross-user │ │ Stats, │ │
|
|
│ │ preferences │ │ follow-ups │ │ memory │ │ reflection │ │
|
|
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## System Components
|
|
|
|
### 1. Mood System
|
|
**File:** `services/mood_service.py`
|
|
**Documentation:** [mood-system.md](mood-system.md)
|
|
|
|
The bot has emotions that affect how it responds. Uses a valence-arousal psychological model:
|
|
|
|
- **Valence** (-1 to +1): Negative to positive emotional state
|
|
- **Arousal** (-1 to +1): Calm to excited energy level
|
|
|
|
**Mood Labels:**
|
|
| Valence | Arousal | Label |
|
|
|---------|---------|-------|
|
|
| High | High | Excited |
|
|
| High | Low | Happy |
|
|
| Neutral | Low | Calm |
|
|
| Neutral | Neutral | Neutral |
|
|
| Low | Low | Bored |
|
|
| Low | High | Annoyed |
|
|
| Neutral | High | Curious |
|
|
|
|
**Key Features:**
|
|
- Time decay: Mood gradually returns to neutral
|
|
- Inertia: Changes are dampened (30% absorption rate)
|
|
- Mood affects response style via prompt modifiers
|
|
|
|
---
|
|
|
|
### 2. Relationship System
|
|
**File:** `services/relationship_service.py`
|
|
**Documentation:** [relationship-system.md](relationship-system.md)
|
|
|
|
Tracks relationship depth with each user:
|
|
|
|
| Score | Level | Behavior |
|
|
|-------|-------|----------|
|
|
| 0-20 | Stranger | Polite, formal |
|
|
| 21-40 | Acquaintance | Friendly, reserved |
|
|
| 41-60 | Friend | Casual, warm |
|
|
| 61-80 | Good Friend | Personal, references past |
|
|
| 81-100 | Close Friend | Very casual, inside jokes |
|
|
|
|
**Relationship Score Factors:**
|
|
- Interaction sentiment (+/- 0.5 base)
|
|
- Message length (up to +0.3 bonus)
|
|
- Conversation depth (up to +0.2 bonus)
|
|
- Minimum interaction bonus (+0.1)
|
|
|
|
---
|
|
|
|
### 3. Fact Extraction System
|
|
**File:** `services/fact_extraction_service.py`
|
|
**Documentation:** [fact-extraction.md](fact-extraction.md)
|
|
|
|
Autonomously learns facts about users from conversations:
|
|
|
|
**Fact Types:**
|
|
- `hobby` - Activities and interests
|
|
- `work` - Job, career, professional life
|
|
- `family` - Family members and relationships
|
|
- `preference` - Likes, dislikes, preferences
|
|
- `location` - Where they live, travel to
|
|
- `event` - Important life events
|
|
- `relationship` - Personal relationships
|
|
- `general` - Other facts
|
|
|
|
**Extraction Process:**
|
|
1. Rate-limited (default 30% of messages)
|
|
2. AI analyzes message for extractable facts
|
|
3. Deduplication against existing facts
|
|
4. Facts stored with confidence and importance scores
|
|
|
|
---
|
|
|
|
### 4. Opinion System
|
|
**File:** `services/opinion_service.py`
|
|
**Documentation:** [opinion-system.md](opinion-system.md)
|
|
|
|
Bot develops opinions on topics over time:
|
|
|
|
**Opinion Attributes:**
|
|
- **Sentiment** (-1 to +1): How positive/negative about the topic
|
|
- **Interest Level** (0 to 1): How engaged when discussing
|
|
- **Discussion Count**: How often topic has come up
|
|
- **Reasoning**: AI-generated explanation (optional)
|
|
|
|
**Topic Detection:**
|
|
Simple keyword-based extraction for categories like:
|
|
- Hobbies (gaming, music, movies, etc.)
|
|
- Technology (programming, AI, etc.)
|
|
- Life (work, family, health, etc.)
|
|
- Interests (philosophy, science, nature, etc.)
|
|
|
|
---
|
|
|
|
### 5. Communication Style System
|
|
**File:** `services/communication_style_service.py`
|
|
|
|
Learns each user's preferred communication style:
|
|
|
|
**Tracked Preferences:**
|
|
- **Response Length**: short / medium / long
|
|
- **Formality**: 0 (casual) to 1 (formal)
|
|
- **Emoji Usage**: 0 (none) to 1 (frequent)
|
|
- **Humor Level**: 0 (serious) to 1 (playful)
|
|
- **Detail Level**: 0 (brief) to 1 (thorough)
|
|
|
|
**Learning Process:**
|
|
- Analyzes last 50 messages (rolling window)
|
|
- Requires 10+ samples for confidence > 0.3
|
|
- Generates prompt modifiers to adapt response style
|
|
|
|
---
|
|
|
|
### 6. Proactive Events System
|
|
**File:** `services/proactive_service.py`
|
|
|
|
Schedules and triggers proactive messages:
|
|
|
|
**Event Types:**
|
|
- **Birthday**: Remembers and celebrates birthdays
|
|
- **Follow-up**: Returns to check on mentioned events
|
|
- **Reminder**: General scheduled reminders
|
|
|
|
**Detection Methods:**
|
|
- Birthday: Regex patterns for dates
|
|
- Follow-up: AI-based event detection or keyword matching
|
|
|
|
**Event Lifecycle:**
|
|
1. Detection from conversation
|
|
2. Scheduled in database
|
|
3. Triggered when due
|
|
4. Personalized message generated
|
|
|
|
---
|
|
|
|
### 7. Association System
|
|
**File:** `services/association_service.py`
|
|
|
|
Links facts across different users (optional, disabled by default):
|
|
|
|
**Use Cases:**
|
|
- "User A and User B both work at the same company"
|
|
- "Multiple users share an interest in hiking"
|
|
- Enables group context and shared topic suggestions
|
|
|
|
---
|
|
|
|
### 8. Self-Awareness System
|
|
**File:** `services/self_awareness_service.py`
|
|
|
|
Provides the bot with statistics about itself:
|
|
|
|
**Available Stats:**
|
|
- Age (time since first activation)
|
|
- Total messages sent
|
|
- Total facts learned
|
|
- Total users known
|
|
- Favorite topics (from opinions)
|
|
|
|
Used for the `!botstats` command and self-reflection in responses.
|
|
|
|
---
|
|
|
|
## How It Works Together
|
|
|
|
When a user sends a message, the Living AI components work together:
|
|
|
|
```
|
|
┌──────────────────────────────────────────────────────────────────────────────┐
|
|
│ Message Processing │
|
|
└──────────────────────────────────────────────────────────────────────────────┘
|
|
│
|
|
┌───────────────┼───────────────┐
|
|
▼ ▼ ▼
|
|
┌──────────────┐┌──────────────┐┌──────────────┐
|
|
│ Get Mood ││Get Relationship│ Get Style │
|
|
│ ││ ││ │
|
|
│ Current state││ Level + refs ││ Preferences │
|
|
└──────────────┘└──────────────┘└──────────────┘
|
|
│ │ │
|
|
└───────────────┼───────────────┘
|
|
▼
|
|
┌──────────────────────────────────────┐
|
|
│ Build Enhanced System Prompt │
|
|
│ │
|
|
│ Base personality + mood modifier + │
|
|
│ relationship context + style prefs + │
|
|
│ relevant opinions │
|
|
└──────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌──────────────────────────────────────┐
|
|
│ Generate Response │
|
|
└──────────────────────────────────────┘
|
|
│
|
|
┌───────────────┼───────────────┐
|
|
▼ ▼ ▼
|
|
┌──────────────┐┌──────────────┐┌──────────────┐
|
|
│ Update Mood ││ Record ││ Maybe │
|
|
│ ││ Interaction ││Extract Facts │
|
|
│Sentiment + ││ ││ │
|
|
│arousal delta ││Score update ││ Rate-limited │
|
|
└──────────────┘└──────────────┘└──────────────┘
|
|
│
|
|
▼
|
|
┌──────────────────────────────────────┐
|
|
│ Check for Proactive Events │
|
|
│ │
|
|
│ Detect birthdays, follow-ups │
|
|
└──────────────────────────────────────┘
|
|
```
|
|
|
|
### Example System Prompt Enhancement
|
|
|
|
```
|
|
[Base Personality]
|
|
You are Daemon, a friendly AI companion...
|
|
|
|
[Mood Modifier]
|
|
You're feeling enthusiastic and energetic right now! Be expressive,
|
|
use exclamation marks, show genuine excitement.
|
|
|
|
[Relationship Context]
|
|
This is a good friend you know well. Be relaxed and personal.
|
|
Reference things you've talked about before. Feel free to be playful.
|
|
You have inside jokes together: "the coffee incident".
|
|
|
|
[Communication Style]
|
|
This user prefers longer, detailed responses with some humor.
|
|
They use casual language, so match their tone.
|
|
|
|
[Relevant Opinions]
|
|
You really enjoy discussing programming; You find gaming interesting.
|
|
```
|
|
|
|
---
|
|
|
|
## Feature Toggle Reference
|
|
|
|
All Living AI features can be individually enabled/disabled:
|
|
|
|
| Environment Variable | Default | Description |
|
|
|---------------------|---------|-------------|
|
|
| `LIVING_AI_ENABLED` | `true` | Master switch for all Living AI features |
|
|
| `MOOD_ENABLED` | `true` | Enable mood system |
|
|
| `RELATIONSHIP_ENABLED` | `true` | Enable relationship tracking |
|
|
| `FACT_EXTRACTION_ENABLED` | `true` | Enable autonomous fact extraction |
|
|
| `FACT_EXTRACTION_RATE` | `0.3` | Probability of extracting facts (0-1) |
|
|
| `PROACTIVE_ENABLED` | `true` | Enable proactive messages |
|
|
| `CROSS_USER_ENABLED` | `false` | Enable cross-user associations |
|
|
| `OPINION_FORMATION_ENABLED` | `true` | Enable opinion formation |
|
|
| `STYLE_LEARNING_ENABLED` | `true` | Enable communication style learning |
|
|
| `MOOD_DECAY_RATE` | `0.1` | How fast mood returns to neutral (per hour) |
|
|
|
|
---
|
|
|
|
## Detailed Documentation
|
|
|
|
- [Mood System Deep Dive](mood-system.md)
|
|
- [Relationship System Deep Dive](relationship-system.md)
|
|
- [Fact Extraction Deep Dive](fact-extraction.md)
|
|
- [Opinion System Deep Dive](opinion-system.md)
|