Spaces:
Runtime error
Runtime error
| 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 | |
| } |