IA / Cortex /neurons /personalization.py
Barouia's picture
Create Cortex/neurons/personalization.py
a1213d6 verified
Raw
History Blame Contribute Delete
2.64 kB
import logging
from typing import Dict, Any
class PersonalizationNeuron:
"""
Neurone de personnalisation - Apprend des préférences de l'utilisateur.
"""
def __init__(self):
self.logger = logging.getLogger("personalization_neuron")
self.user_profiles = {}
async def initialize(self):
self.logger.info("🎭 Initialisation du neurone de personnalisation...")
return True
async def update_user_profile(self, user_id: str, interaction: Dict[str, Any]):
"""
Met à jour le profil de l'utilisateur basé sur l'interaction.
"""
if user_id not in self.user_profiles:
self.user_profiles[user_id] = {
'preferred_topics': [],
'interaction_style': 'neutral',
'knowledge_level': 'beginner'
}
# Mise à jour des préférences
# Logique simplifiée
if 'topic' in interaction:
if interaction['topic'] not in self.user_profiles[user_id]['preferred_topics']:
self.user_profiles[user_id]['preferred_topics'].append(interaction['topic'])
async def personalize_response(self, user_id: str, response: Dict[str, Any]) -> Dict[str, Any]:
"""
Personnalise la réponse en fonction du profil utilisateur.
"""
profile = self.user_profiles.get(user_id, {})
preferred_topics = profile.get('preferred_topics', [])
knowledge_level = profile.get('knowledge_level', 'beginner')
# Ajuster le niveau de détail en fonction du niveau de connaissance
if knowledge_level == 'beginner':
# Rendre la réponse plus simple
response['response'] = await self._simplify_response(response['response'])
elif knowledge_level == 'expert':
# Ajouter plus de détails techniques
response['response'] = await _add_technical_details(response['response'])
# Si la réponse concerne un topic préféré, on le signale
for topic in preferred_topics:
if topic in response['response']:
response['response'] = "🔥 " + response['response']
return response
async def _simplify_response(self, response: str) -> str:
# Simplifie la réponse (logique simplifiée)
# Dans une version future, on utilisera un modèle de langage
return response # Pour l'instant, on retourne la réponse telle quelle
async def _add_technical_details(self, response: str) -> str:
# Ajoute des détails techniques (logique simplifiée)
return response + " (Note technique: ...)"