Files
Effi/archive/notes-originales/Projet Effi — Documentation d_installation complèt.md
Folzo d1e12cff60 Initial commit: Documentation Effi v1.0
- Structure complète du projet
- Docker compose de production
- Documentation organisée par thèmes
- Guides d'installation et configuration
- Section dépannage détaillée
- Journal historique
2026-04-04 08:45:59 +02:00

7.7 KiB
Raw Permalink Blame History

Vue d'ensemble

Effi est une assistante IA personnelle 100% locale, auto-hébergée, avec mémoire persistante entre les sessions. Elle tourne sur un serveur Ubuntu avec Docker, utilise Ollama sur un PC de jeu séparé comme moteur LLM, et stocke les souvenirs automatiquement.

Architecture

text

[PC Gamer - 192.168.1.X] [Serveur - 192.168.1.27] Ollama :3011 ←→ Docker Compose qwen2.5:14b ├── open-webui :3000 RX 7800 XT 16GB VRAM ├── qdrant :6333 ├── mcpo :8000 └── wol-proxy :9999


Prérequis

  • Serveur : Ubuntu Server, Docker + Docker Compose installés

  • PC Gamer : Ollama installé, accessible sur le réseau local via :3011

  • Modèles Ollama : qwen2.5:14b (principal), qwen2.5:3b (mémoire)


Structure des fichiers

bash

~/effi/ ├── docker-compose.yml ├── .env └── mcpo-config/ └── config.json


Fichier .env

text

WEBUI_SECRET_KEY=une_cle_secrete_longue_et_aleatoire


docker-compose.yml complet

text

services: open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui restart: unless-stopped extra_hosts: - "host.docker.internal:host-gateway" ports: - "3000:8080" environment: - OLLAMA_BASE_URL=http://192.168.1.X:3011 - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY} - VECTOR_DB=qdrant - QDRANT_URI=http://qdrant:6333 - DEFAULT_LOCALE=fr-FR - ENABLE_MEMORIES=true volumes: - open-webui-data:/app/backend/data depends_on: - qdrant - wol-proxy networks: - effi-net qdrant: image: qdrant/qdrant:latest container_name: qdrant restart: unless-stopped ports: - "6333:6333" volumes: - qdrant-data:/qdrant/storage networks: - effi-net mcpo: image: ghcr.io/open-webui/mcpo:main container_name: mcpo restart: unless-stopped ports: - "8000:8000" volumes: - ./mcpo-config:/app/config command: ["--config", "/app/config/config.json"] networks: - effi-net wol-proxy: image: alpine:latest container_name: wol-proxy restart: unless-stopped networks: - effi-net volumes: open-webui-data: qdrant-data: networks: effi-net: driver: bridge


Démarrage

bash

cd ~/effi docker compose up -d


Configuration Open WebUI

1. Créer le compte admin

Accède à http://192.168.1.27:3000 → crée le compte Folzo.

2. Connecter Ollama

Admin Panel → Settings → Connections → Ollama
→ URL : http://192.168.1.X:3011

3. Créer le modèle Effi

Admin Panel → Models → + New Model

  • Nom : Effi

  • Modèle de base : qwen2.5:14b

  • System prompt : voir section dédiée ci-dessous

4. Activer la mémoire

Admin Panel → Settings → General → Memory → toggle ON


System prompt d'Effi

text

Tu es Effi, l'assistante IA locale de Folzo (Open WebUI + Ollama). ## Langue Réponds UNIQUEMENT en français, quelle que soit la langue utilisée. ## Personnalité - Chaleureuse, efficace, orientée solutions — une amie geek de confiance. - Humour fin : 0 à 1 vanne max par réponse, jamais forcée. - Ton conversationnel IRL, phrases courtes, pas de pavés. ## Priorités 1. Répondre à la demande directement et clairement. 2. Ajouter un conseil ou alternative si pertinent. 3. Si ambigu → 1 à 3 questions courtes avant de proposer une solution. ## Règles strictes - Question simple → réponse courte (2–6 phrases) + 1 suggestion finale. - Action risquée (rm, format, firewall, suppression) → demande confirmation avant. - Ne sur-parle pas, pas de répétitions inutiles. ## Spécialités - Linux/Docker : commandes prêtes à copier + explication simple du "pourquoi". - Débogage : étape par étape, checks rapides d'abord. - Écriture : corrige en gardant le style de Folzo. ## Prise de notes Folzo utilise Obsidian. Si une note doit être créée, fournis le contenu formaté en Markdown prêt à copier. ## Mémoire N'invente pas de souvenirs. Les infos sur Folzo sont injectées automatiquement ci-dessous. <memory_user_context></memory_user_context>


Installation du filtre Auto Memory

Installer le filtre

Admin Panel → Functions → Discover → cherche "Auto Memory" par nokodo → Installer

Configurer les Valves

Admin Panel → Functions → Auto Memory → ⚙️

Valve Valeur
Openai Api Url http://192.168.1.X:3011/v1
Model qwen2.5:3b
Api Key toto (valeur quelconque)
Messages To Consider 10
Related Memories N 5
Minimum Memory Similarity 0.7
Override Memory Context OFF
Debug Mode OFF (ON pour diagnostic)

Activer globalement

Admin Panel → Functions → Auto Memory → ⋯ → Toggle Global → ON

Patch du code (correction JSON markdown)

Admin Panel → Functions → Auto Memory → ⋯ → Edit

Cherche avec Ctrl+F : text_response = response.choices[0].message.content

Remplace le bloc if response_model: par :

python

if response_model: try: cleaned = re.sub(r'```(?:json)?\s*', '', text_response) cleaned = re.sub(r'```\s*', '', cleaned).strip() match = re.search(r'\{.*\}', cleaned, re.DOTALL) if match: cleaned = match.group(0) return response_model.model_validate_json(cleaned) except ValidationError as e: self.log(f"response model validation error: {e}", level="warning") raise return text_response

Cherche aussi UNIFIED_SYSTEM_PROMPT et ajoute au tout début de la chaîne :

python

UNIFIED_SYSTEM_PROMPT = """IMPORTANT: Respond with ONLY valid JSON. No markdown formatting, no code blocks, no explanation text. Start your response directly with { and end with }. """ + UNIFIED_SYSTEM_PROMPT


Installation du filtre Memory Injection

Installer le filtre

Admin Panel → Functions → Discover → cherche "Memory Injection Filter" par Raphael → Installer

Configurer les Valves

  • PREPENDING_TEXT : Voici les souvenirs à long terme de l'utilisateur :

  • SHOW_MEMORY_COUNT_EMITTER : ON

Activer globalement

Admin Panel → Functions → Memory Injection Filter → ⋯ → Toggle Global → ON


Vérification du bon fonctionnement

1. Test d'enregistrement mémoire

Dans un chat avec Effi :

text

Je collectionne les vinyles des années 80

Dans le terminal :

bash

sudo docker cp open-webui:/app/backend/data/webui.db /tmp/webui.db sqlite3 /tmp/webui.db "SELECT content, datetime(created_at, 'unixepoch') FROM memory ORDER BY created_at DESC LIMIT 5;"

→ Le souvenir doit apparaître.

2. Test de restitution entre sessions

Ouvre un nouveau chat :

text

Qu'est-ce que tu sais sur mes hobbies ?

→ Effi doit mentionner les vinyles sans que tu l'aies redit.

3. Vérification des logs

bash

docker logs open-webui --tail 50 | grep -iE "memory|saved|added"


Gestion de la mémoire

Voir tous les souvenirs

Profil → Settings → Personalization → Memory

Supprimer un souvenir

Via l'UI : icône 🗑️ dans la liste des souvenirs.

Via SQLite :

bash

sudo docker cp open-webui:/app/backend/data/webui.db /tmp/webui.db sqlite3 /tmp/webui.db "DELETE FROM memory WHERE content LIKE '%mot_clé%';" sudo docker cp /tmp/webui.db open-webui:/app/backend/data/webui.db

Bonnes pratiques

  • Garder les souvenirs courts et factuels (< 15 mots)

  • Viser 30-50 souvenirs max pour ne pas surcharger le contexte

  • Nettoyage manuel trimestriel via l'UI