Spaces:
No application file
No application file
# 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 | |
def home(): | |
return render_template('index.html') | |
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") |