from flask import Flask, render_template, request, jsonify, session from google import genai import os from datetime import datetime import uuid app = Flask(__name__) app.secret_key = os.urandom(24) # Requis pour utiliser les sessions Flask # Configuration de l'API Gemini (idéalement à déplacer dans un fichier de configuration) # os.environ["GOOGLE_API_KEY"] = "VOTRE_GEMINI_API_KEY" client = genai.Client(api_key=os.environ.get("GOOGLE_API_KEY", "GEMINI_API_KEY")) @app.route('/') def index(): # Créer un ID de session unique s'il n'existe pas déjà if 'session_id' not in session: session['session_id'] = str(uuid.uuid4()) return render_template('index.html') @app.route('/chat', methods=['POST']) def chat(): data = request.json user_message = data.get('message', '') # Récupérer ou créer une session de chat pour cet utilisateur session_id = session.get('session_id') chat_session = get_or_create_chat_session(session_id) try: # Envoyer le message à Gemini et obtenir la réponse response = chat_session.send_message(user_message) # Formater l'historique pour l'interface history = [] for msg in chat_session.get_history(): history.append({ 'role': msg.role, 'content': msg.parts[0].text, 'timestamp': datetime.now().strftime("%H:%M") }) return jsonify({ 'response': response.text, 'history': history }) except Exception as e: return jsonify({'error': str(e)}), 500 def get_or_create_chat_session(session_id): """ Récupère une session de chat existante ou en crée une nouvelle. Dans une application réelle, vous pourriez stocker cela dans une base de données. """ # Utilisation d'un dictionnaire global pour stocker les sessions (pour cet exemple) # Dans une application réelle, utilisez Redis ou une base de données if not hasattr(app, 'chat_sessions'): app.chat_sessions = {} if session_id not in app.chat_sessions: app.chat_sessions[session_id] = client.chats.create(model="gemini-2.0-flash") return app.chat_sessions[session_id] @app.route('/reset', methods=['POST']) def reset_chat(): """Réinitialise la session de chat actuelle""" session_id = session.get('session_id') if hasattr(app, 'chat_sessions') and session_id in app.chat_sessions: # Créer une nouvelle session app.chat_sessions[session_id] = client.chats.create(model="gemini-2.0-flash") return jsonify({'status': 'success'}) if __name__ == '__main__': app.run(debug=True)