File size: 2,406 Bytes
87f6db4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
63
64
65
66
67
68
69
70
# app.py
from flask import Flask, render_template, request, jsonify
import os
import google.generativeai as genai
import subprocess
from datetime import datetime

app = Flask(__name__)

# Configuration de l'API Gemini
genai.configure(api_key="AIzaSyD1TJ82gJaI9fL239kdsk6d4t-oLL3G2PE")

def initialize_chat():
    model = genai.GenerativeModel(
        model_name='gemini-1.5-pro',
        system_instruction="tu es un générateur de code python. Tu peux utiliser seulement les librairie scapy,nmap,pyshark,loguru,pandas,psutil,celery,ldap3 si besoin.l'interface réseau de ma machine est 'eno1';mon adresse ip est '192.168.251.249'. tu dois générer le code complet pour qu'il puisse être exécuté; rajouter les commandes 'verbose' lors de l'utilisation des outils;ne génère pas de commentaires, de fichiers logs,  ni d'explications"
    )
    return model.start_chat(history=[
        {"role": "user", "parts": "Bonjour"},
        {"role": "model", "parts": "Bonjour, je suis un générateur de code python et je ne génère que du code python"},
    ])

def execute_code(code):
    filename = f"generated_code_{datetime.now().strftime('%Y%m%d_%H%M%S')}.py"
    
    with open(filename, "w") as f:
        f.write(code)
    
    try:
        result = subprocess.run(["python3", filename], capture_output=True, text=True, check=True)
        output = result.stdout
    except subprocess.CalledProcessError as e:
        output = f"Erreur d'exécution:\n{e.stderr}"
    #finally:
        # Nettoyer le fichier temporaire
        #if os.path.exists(filename):
            #os.remove(filename)
            
    return output

@app.route('/')
def home():
    return render_template('index.html')

@app.route('/generate', methods=['POST'])
def generate():
    prompt = request.json.get('prompt')
    
    if not prompt:
        return jsonify({'error': 'Prompt manquant'}), 400
    
    try:
        chat = initialize_chat()
        response = chat.send_message(prompt)
        
        # Nettoyer le code généré
        code = response.text.replace("```python\n", "").replace("```", "")
        
        # Exécuter le code
        output = execute_code(code)
        
        return jsonify({
            'code': code,
            'output': output
        })
    except Exception as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run(debug=True, host="0.0.0.0")