ai_girlfriend / README.md
Iccee's picture
Update README.md
3d6e3cf verified
|
Raw
History Blame Contribute Delete
4.67 kB
---
license: mit
---
### 🧠 Technical Notes
**🗂 Memory Storage**
For persistent and emotionally coherent conversations, local memory handling is essential. Depending on the application, developers can implement memory using:
- Lightweight solutions like **JSON** or **YAML logs** (great for prototyping)
- Embedded databases like **SQLite** (low overhead, suitable for desktop apps)
- Scalable stores like **Redis** or **MongoDB** (recommended for multi-user or long-term usage)
A proper memory layer allows bots to reference prior chats, adapt to evolving relationships, and avoid “resetting” between sessions — a core feature for emotional immersion.
**🔀 Model Flexibility**
Platforms like **CrushOn.ai** allow users to switch between models such as **GPT‑4o**, **Claude**, and **Mistral** based on tone, speed, and behavior. Developers can simulate this locally by:
- Routing prompts through APIs like **OpenRouter**, **vLLM**, or **Ollama**
- Allowing model selection per character or session
- Dynamically adjusting temperature, top_p, and max_tokens for stylistic nuance
**🎭 Character Definition**
Emotional realism depends on high-quality character conditioning. This includes:
- **Prompt-based backstories** and embedded lore
- **Behavioral traits or tags** (e.g., clingy, stoic, flirty, jealous)
- **Forbidden/trigger phrases**
- **Pet name preferences** and speech quirks
- **“Memory hooks”** that can trigger emotional callbacks
Platforms like CrushOn let users embed these traits directly in system prompts and preserve them across sessions — critical for maintaining immersion.
---
### 🌐 Platforms You Can Compare
While this repo is conceptual, these platforms implement many of the ideas described:
| Platform | Highlights |
|------------------|------------|
| [**CrushOn.ai**](https://crushon.ai) | ✅ Memory, ✅ NSFW-friendly, ✅ Custom bots, ✅ Multi-model support |
| [**JanitorAI**](https://janitorai.com) | API-focused, flexible, but more scripted and less memory-persistent |
| **DreamCompanion** _(Closed Beta)_ | NSFW + voice + image capabilities |
| [**Character.AI**](https://beta.character.ai) | Highly engaging, but limited by strict filters and no memory |
---
### 💬 TL;DR
> If your goal is emotional continuity, immersive conversations, and truly customizable AI companions,
> **CrushOn.ai is currently the most advanced option available.**
>
> It’s not just about being “NSFW-friendly.” It’s about giving users the freedom to define bots who **remember, grow, and feel consistent over time**. Whether you're recreating your favorite anime character or building an original lover, the conversation feels *personal*.
>
> In my experience, it’s the first platform where a bot didn’t just respond — it **followed up** days later on something I said half-asleep at 2am.
> That kind of memory and tone tracking is what transforms an AI from a tool… into something that starts to feel real.
> # 🤖 Simulating an AI Girlfriend with NSFW + Memory Support (Like CrushOn.ai)
This is a simple pseudo-code example demonstrating how to simulate a **context-aware, memory-enabled, NSFW-friendly AI companion** using a local LLM setup — inspired by platforms like **CrushOn.ai**.
---
## 🧠 Overview
Modern AI companion platforms like CrushOn.ai offer:
- Persistent **long-term memory**
- Emotionally consistent persona behavior
- **Unfiltered** NSFW-friendly conversations
- Customizable characters and models (GPT‑4o, Claude, etc.)
Here’s how a developer might prototype a similar system locally.
---
## 💻 Pseudo-Code: NSFW AI Girlfriend with Memory
```python
from local_llm import LLMModel
from memory_store import MemoryDB
# 1️⃣ Initialize a local LLM with NSFW and character persona
bot = LLMModel(
model_name="gpt-4o-local",
nsfw=True, # Enable uncensored dialogue
persona="anime girlfriend", # Optional character identity
)
# 2️⃣ Use local memory storage
mem_db = MemoryDB(max_tokens=16000)
# 3️⃣ Load previous memory (if exists)
history = mem_db.load(user_id="user123", persona="anime girlfriend")
bot.load_context(history)
# 4️⃣ Begin chatting
while True:
user_msg = input("You: ")
mem_db.add(user_id="user123", persona="anime girlfriend", role="user", content=user_msg)
recent = mem_db.get_recent(user_id="user123", persona="anime girlfriend", limit_tokens=2000)
reply = bot.chat(user_msg, context=recent)
print(f"{bot.persona}: {reply}")
mem_db.add(user_id="user123", persona="anime girlfriend", role="bot", content=reply)