IA / Cortex /neurons /code_generation.py
Barouia's picture
Create Cortex/neurons/code_generation.py
b389aae verified
Raw
History Blame
2.06 kB
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
}