Spaces:
Runtime error
Runtime error
File size: 2,058 Bytes
b389aae | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 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
} |