Module Pipeline (mirza.pipeline)¶
Le module mirza.pipeline contient l’orchestrateur central de la plateforme :
ConversationOrchestrator, qui coordonne l’ensemble des sous-systèmes de capture,
transcription, génération et synthèse vocale.
Rôle de l’Orchestrateur¶
Important
ConversationOrchestrator est le chef d’orchestre de Mirza.
Il tourne dans le thread principal du processus Python et délègue les tâches
intensives (inférence LLM, TTS) dans des threads ou coroutines séparés.
Responsabilité |
Détail |
|---|---|
Gestion du cycle conversationnel |
Maintient |
Coordination VAD → ASR |
Collecte les chunks PCM validés par VAD et lance l’ASR |
Routage de mode |
Décide direct / CoT / agent selon les paramètres |
Filtrage streaming temps réel |
Instancie et pilote |
Gating acoustique |
Positionne |
Métriques TTFT / tok/s |
Calcule et émet les métriques via |
Gestion de l’État de Conversation¶
État |
Description |
|---|---|
|
Aucune activité — le réacteur HUD est en veille |
|
VAD détecte de la parole — capture PCM active |
|
ASR en cours ou LLM en génération |
|
TTS en streaming — microphone muté (gating) |
|
Mode agentique ReAct actif — cycle outil en cours |
Référence API¶
Orchestrateur central du cycle conversationnel multimodal de Mirza.
Coordonne les evenements microphone, le VAD neuronal, la transcription ASR, le dialogue LLM, le filtrage temps reel bi-canal, la memoire RAG hybride, et la restitution vocale TTS non bloquante.
- class mirza.pipeline.conversationOrchestrator.TurnModes(agentActive, thinking, reasoningBudget)[source]¶
Bases :
objectThe execution modes that apply to a single conversational turn.
Agent mode and reflection mode are mutually exclusive by construction.
- showsThinking()[source]¶
Whether the HUD should display the THINKING state for this turn.
- Type renvoyé:
- property streamsThoughtsUpFront: bool¶
Whether the stream starts inside a thought block, with no opening tag.
- class mirza.pipeline.conversationOrchestrator.TurnOutcome(agentText='', document=None, spoken='', ragContext=None)[source]¶
Bases :
objectWhat the agent branch produced during a turn.
Mutable by design: it is filled in progressively as the agent runs and the answer is arbitrated. An explicit holder keeps the surrounding code free of
'name' in locals()probing.
- class mirza.pipeline.conversationOrchestrator.ConversationOrchestrator(config=None, sttEngine=None, llmEngine=None, ttsEngine=None, textOnly=False)[source]¶
Bases :
objectOrchestrateur backend principal du cycle conversationnel temps reel.
Gere l’ecoute vocale (VAD), la saisie textuelle directe, le streaming LLM et le TTS.
- Paramètres:
- __init__(config=None, sttEngine=None, llmEngine=None, ttsEngine=None, textOnly=False)[source]¶
Initialise l’orchestrateur de conversation et ses sous-systemes.
- Paramètres:
config (
AppConfig, optional) – Configuration globale, defaut: AppConfig().sttEngine (
BaseStt, optional) – Moteur ASR injecte, sinon instancie via EngineFactory.llmEngine (
BaseLlm, optional) – Moteur de langage injecte, sinon instancie via EngineFactory.ttsEngine (
BaseTts, optional) – Moteur TTS injecte, sinon instancie via EngineFactory.textOnly (
bool, optional) – Desactive STT et TTS pour un fonctionnement allonge en memoire, defaut: False.
- agentManager: AgentManager | None¶
- memoryStore: EpisodicMemoryStore | None¶
- setMemoryRetrieval(enabled)[source]¶
Active ou desactive le retrieval semantique RAG passif a chaque tour.
- getMemoryStatus()[source]¶
Renvoie le statut de la memoire conversationnelle RAG.
- Renvoie:
L’etat d’activation, le nombre d’enregistrements et l’auto-archivage.
- Type renvoyé:
- setAgentMode(enabled)[source]¶
Active ou desactive le mode agentique CodeAgent.
Desactive aussi le mode reflexion (BrainBoost) des que l’agent est active.
- toggleAgentTool(toolId, enabled=None)[source]¶
Active ou desactive un outil specifique du mode agentique.
- getAgentStatus()[source]¶
Renvoie l’etat courant de l’agent et de ses outils.
- Renvoie:
Statut detaille de l’agent et des outils.
- Type renvoyé:
- setAudioDevices(micId=None, speakerId=None)[source]¶
Modifie dynamiquement les peripheriques audio d’entree et de sortie.
- getAudioDevices()[source]¶
Recupere la liste des peripheriques audio disponibles et les peripheriques actifs.
- Renvoie:
Peripheriques audio disponibles et actifs.
- Type renvoyé:
- loadModels()[source]¶
Precharge les modeles en VRAM et effectue un warm-up initial.
- Type renvoyé:
None
- interrupt()[source]¶
Interrompt immediatement la generation ou la lecture audio (barge-in).
- Type renvoyé:
None
- emergencyStop()[source]¶
Arret d’urgence : tue le processus du modele.
L’interruption ordinaire arrete la consommation du flux, mais la generation continue cote serveur et la memoire reste occupee. Ici le processus est termine, ce qui coupe la generation la ou elle se fait et rend la memoire. Le moteur est marque decharge : la prochaine question le recharge normalement.
- Renvoie:
L’etat obtenu, avec le nom du moteur arrete.
- Type renvoyé:
- listModelProfiles()[source]¶
Renvoie les profils de modele selectionnables.
- Renvoie:
Un profil par entree du catalogue, marque actif pour celui en cours.
- Type renvoyé:
list[dict]
- getActiveModelProfileId()[source]¶
Identifie le profil correspondant au modele actuellement charge.
- Renvoie:
L’identifiant du profil, ou None si le modele charge n’est pas du catalogue.
- Type renvoyé:
str | None
- switchModel(profileId)[source]¶
Bascule vers un autre profil de modele.
Pour les modeles locaux, la memoire est liberee avant de charger le nouveau modele afin de ne jamais conserver deux modeles lourds en VRAM. Pour le modele distant (OpenRouter), le modele local reste conserve en RAM pour permettre un basculement instantane sans rechargement.
- listAssistantProfiles()[source]¶
Liste l’ensemble des profils d’assistant configurés.
- Renvoie:
Description de chaque profil d’assistant.
- Type renvoyé:
list[dict[str,Any]]
- getActiveAssistantProfileId()[source]¶
Retourne l’identifiant du profil d’assistant actuellement actif.
- Renvoie:
Identifiant du profil (ex: « assistant », « medical »).
- Type renvoyé:
- switchAssistantProfile(profileId)[source]¶
Bascule a chaud vers un autre profil d’assistant (ex: assistant, medical).
Met a jour le prompt systeme, les prompts et outils de l’agent, les phrases d’attente vocale et la base de donnees memoire.
- Paramètres:
profileId (
str) – Identifiant du profil cible.- Renvoie:
Resultat de la bascule.
- Type renvoyé:
dict[str,Any]
- getEngineStatus()[source]¶
Renvoie l’etat de chargement de chaque moteur.
- Renvoie:
Les cles
llmLoaded,sttLoaded,ttsLoaded,allLoadedetanyLoading.- Type renvoyé:
- setEngineLoaded(loaded)[source]¶
Decharge ou recharge l’integralite des modeles a la volee.
Toute requete est refusee pendant une generation : decharger les poids sous un flux de tokens en cours produirait une panne segfault.
- processClientAudio(audioBytes, clientTargetId=None)[source]¶
Traite un flux audio envoye directement par un client distant.
- processTextInput(textInput, clientTargetId=None)[source]¶
Traite directement une invite textuelle sans capture microphonique.
- processSingleTurn()[source]¶
Execute un tour conversationnel complet : VAD, STT, streaming LLM, TTS.
- Renvoie:
True si le tour a abouti, False si aucun signal vocal n’a ete detecte.
- Type renvoyé:
- startSession(maxTurns=10)[source]¶
Demarre la boucle de conversation interactive.
- Paramètres:
maxTurns (
int, optional) – Nombre maximal de tours de conversation (defaut: 10).- Type renvoyé:
None
- resetConversation()[source]¶
Reinitialise l’historique, vide le cache KV et purge la memoire Metal.
- Type renvoyé:
None
- setThinkingMode(enabled)[source]¶
Active ou desactive le mode reflexion au niveau du moteur LLM.
- Paramètres:
enabled (
bool) – True pour activer BrainBoost (CoT), False pour desactiver.- Type renvoyé:
None
- setReasoningBudget(budget)[source]¶
Definit a chaud le budget de tokens alloue a la reflexion.
- Paramètres:
budget (
int) – Nombre de tokens alloues au raisonnement interne (0 a 2048).- Type renvoyé:
None
- getActiveContextInfo()[source]¶
Extrait et synthetise l’etat du contexte actif charge en memoire vive (KV).
- Renvoie:
Decompte des tokens par section, occupation du cache KV et historique.
- Type renvoyé:
- listMemories(query=None, limit=50, offset=0)[source]¶
Interroge la memoire episodique SQLite et retourne la liste des souvenirs.
- Paramètres:
- Renvoie:
Les dictionnaires de souvenirs trouves.
- Type renvoyé:
list[dict]
- ingestConsultationNote(rawText)[source]¶
Reformule une note brute ou une dictée de consultation médicale au format standardisé de la patientèle, puis l’injecte dans la base de données épisodique. N’utilise aucun TTS et n’émet aucun flux vocal.
- Paramètres:
rawText (
str) – Observations orales ou notes brutes saisies par le médecin.- Renvoie:
Détails de la consultation insérée (success, memoryId, formattedNote, docId, etc.).
- Type renvoyé:
dict[str,Any]