.. _api-core: Module Cœur (``mirza.core``) ============================= Le module ``mirza.core`` fournit les deux composants transversaux fondamentaux de la plateforme : la gestion de la mémoire unifiée Apple Silicon et le filtrage de texte en streaming temps réel. .. contents:: Sommaire :local: :depth: 1 ---- Gestionnaire de Mémoire Unifiée (``MemoryManager``) ----------------------------------------------------- .. important:: ``MemoryManager`` utilise l'API C++ Metal exposée par MLX pour interroger directement la consommation en Unified Memory. Ces métriques sont propres à Apple Silicon et ne sont pas disponibles sur d'autres architectures. .. list-table:: Méthodes clés du MemoryManager :widths: 45 55 :header-rows: 1 * - Méthode - Description * - ``initializeEnvironment(vramLimitBytes, cacheLimit)`` - Configure les limites Metal et les préférences de cache MLX * - ``getMemoryStats() → dict`` - Retourne ``ramMb``, ``ramTotalMb``, ``vramActiveMb``, ``vramPeakMb`` * - ``purge()`` - Libère les caches Metal et déclenche ``gc.collect()`` .. automodule:: mirza.core.memoryManager :members: :undoc-members: :show-inheritance: ---- Filtre de Texte en Streaming (``StreamingTextFilter``) ------------------------------------------------------- Le ``StreamingTextFilter`` est le composant central de séparation des canaux. Il analyse le flux de tokens LLM **au fur et à mesure de leur génération** et dirige chaque fragment vers le bon canal de sortie. .. list-table:: Canaux de sortie gérés par StreamingTextFilter :widths: 35 35 30 :header-rows: 1 * - Type de fragment - Balises détectées - Destination * - **Pensée CoT** - ``…`` · ``<|channel>thought…`` · ``…`` - ``onThought(chunk)`` → ``thoughtChunk`` WebSocket * - **Résultat agentique** - ``…`` - ``onResultDoc(content)`` → ``agentResultDoc`` WebSocket * - **Voix épurée** - Tout le reste - Retourné comme chaîne par ``processChunk()`` .. note:: Le filtre est conçu pour être **sans état inter-tours** : il maintient un buffer interne minimaliste de 12 à 15 caractères pour gérer les balises coupées entre deux chunks consécutifs. .. automodule:: mirza.core.textCleaner :members: :undoc-members: :show-inheritance: ---- Mémoire Épisodique & RAG (``EpisodicMemoryStore``) --------------------------------------------------- Le ``EpisodicMemoryStore`` gère l'archivage vectoriel local persistant avec SQLite-vec, les embeddings locaux vectoriels et le reclassement par rang réciproque (RRF) combiné avec la recherche lexicale SQLite FTS5. .. automodule:: mirza.core.episodicMemory :members: :undoc-members: :show-inheritance: