import logging import subprocess import sys from typing import Dict, Any class CodeGenerationNeuron: """ Neurone de génération et d'exécution de code. Attention: en production, il faut sandboxer l'exécution (Docker). """ def __init__(self): self.logger = logging.getLogger("code_generation_neuron") async def initialize(self): self.logger.info("💻 Initialisation du neurone de génération de code...") return True async def generate_and_execute(self, problem: str, context: Dict[str, Any]) -> Dict[str, Any]: """ Génère et exécute du code pour résoudre un problème. """ # Génération du code code = await self._generate_code(problem, context) # Exécution du code execution_result = await self._execute_code(code) return { 'generated_code': code, 'execution_result': execution_result } async def _generate_code(self, problem: str, context: Dict[str, Any]) -> str: # Pour l'instant, on génère un code simple basé sur le problème # Dans une version future, on utilisera un modèle de langage if "calcul" in problem.lower(): return "print(2 + 2)" else: return "print('Hello, World!')" async def _execute_code(self, code: str) -> Dict[str, Any]: try: # Exécution dans un processus séparé result = subprocess.run([sys.executable, "-c", code], capture_output=True, text=True, timeout=30) return { 'stdout': result.stdout, 'stderr': result.stderr, 'returncode': result.returncode } except subprocess.TimeoutExpired: return { 'stdout': '', 'stderr': 'Timeout', 'returncode': -1 } except Exception as e: return { 'stdout': '', 'stderr': str(e), 'returncode': -1 }