Docfile commited on
Commit
ce14921
·
verified ·
1 Parent(s): 9962d67

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -33
app.py CHANGED
@@ -1,4 +1,4 @@
1
- from flask import Flask,make_response,render_template, request, redirect, url_for, session, jsonify, flash
2
  from datetime import datetime, timedelta
3
  import sqlite3
4
  from urllib.parse import urlparse
@@ -9,7 +9,6 @@ import time
9
  import tempfile
10
  import logging
11
  import re
12
- import psycopg2
13
  from markupsafe import Markup
14
  from gradio_client import Client,handle_file
15
  from functools import wraps
@@ -18,8 +17,7 @@ import google.generativeai as genai
18
  import textwrap
19
  import PIL.Image
20
  from werkzeug.utils import secure_filename
21
- from pytube import YouTube
22
- from psycopg2.extras import RealDictCursor
23
  import redis
24
 
25
 
@@ -28,7 +26,7 @@ logging.basicConfig(level=logging.INFO)
28
 
29
  DATABASE_URL= os.environ.get("DATABASE")
30
 
31
- GOOGLE_API_KEY = os.environ.get("TOKEN")
32
 
33
 
34
 
@@ -57,10 +55,8 @@ safety_settings = [
57
  },
58
  ]
59
 
60
-
61
  genai.configure(api_key=GOOGLE_API_KEY)
62
 
63
-
64
  MAX_CONTENT_LENGTH = 760 * 1024 * 1024 # 16MB max file size
65
 
66
  def create_connection():
@@ -119,19 +115,17 @@ def get_philosophy_course(course_id):
119
  print(f"Erreur lors de la récupération du cours : {e}")
120
  return jsonify({"error": str(e)}), 500
121
 
122
- # Route Flask mise à jour
123
- @app.route('/submit_philo', methods=['POST'])
124
  def submit_philo():
125
- data = request.json
126
- phi_prompt = data.get('question', '').strip()
127
- phi_type = data.get('type', '1') # Type 1 par défaut
128
- course_id = data.get('courseId')
129
-
130
- logging.info(f"Le sujet est: {phi_prompt}")
131
- logging.info(f"Le type est: {phi_type}")
132
-
133
- if not phi_prompt:
134
- return jsonify({"error": "Veuillez saisir un sujet."}), 400
135
 
136
  try:
137
  # Récupération du contenu du cours si un cours est sélectionné
@@ -196,7 +190,6 @@ def submit_philo():
196
  Je veux un travail bien détaillé et complet avec un français raffiné et soutenu.
197
  """
198
 
199
-
200
 
201
 
202
 
@@ -389,7 +382,6 @@ Prise de position :
389
 
390
  La conclusion répond à la question critique posée en introduction, en s'appuyant sur l'ensemble de la réflexion développée.
391
 
392
-
393
  """
394
 
395
  # Ajout du contenu du cours à la prompt si disponible
@@ -398,15 +390,19 @@ La conclusion répond à la question critique posée en introduction, en s'appuy
398
 
399
  prompt = methodologie
400
 
401
- try:
402
- model = genai.GenerativeModel(model_name="models/gemini-2.0-flash-exp", safety_settings=safety_settings)
403
- response = model.generate_content(prompt, request_options={"timeout": 1100})
404
-
405
- dissertation = response.text
406
- return jsonify({"response": dissertation}), 200
407
- except Exception as e:
408
- print(f"Erreur dans la génération de contenu : {e}")
409
- return jsonify({"error": "error"}), 500
 
 
 
 
410
 
411
  except Exception as e:
412
  print(f"Erreur dans submit_philo : {e}")
@@ -460,6 +456,8 @@ def manage_philosophy_courses():
460
  return redirect(url_for('manage_philosophy_courses'))
461
  except Exception as e:
462
  flash(f'Erreur lors de la suppression du cours : {e}', 'danger')
463
- return redirect(url_for('manage_philosophy_courses'))
464
-
465
-
 
 
 
1
+ from flask import Flask,make_response,render_template, request, redirect, url_for, session, jsonify, flash, Response
2
  from datetime import datetime, timedelta
3
  import sqlite3
4
  from urllib.parse import urlparse
 
9
  import tempfile
10
  import logging
11
  import re
 
12
  from markupsafe import Markup
13
  from gradio_client import Client,handle_file
14
  from functools import wraps
 
17
  import textwrap
18
  import PIL.Image
19
  from werkzeug.utils import secure_filename
20
+
 
21
  import redis
22
 
23
 
 
26
 
27
  DATABASE_URL= os.environ.get("DATABASE")
28
 
29
+ GOOGLE_API_KEY = "AIzaSyC_zxN9IHjEAxIoshWPzMfgb9qwMsu5t5Y"
30
 
31
 
32
 
 
55
  },
56
  ]
57
 
 
58
  genai.configure(api_key=GOOGLE_API_KEY)
59
 
 
60
  MAX_CONTENT_LENGTH = 760 * 1024 * 1024 # 16MB max file size
61
 
62
  def create_connection():
 
115
  print(f"Erreur lors de la récupération du cours : {e}")
116
  return jsonify({"error": str(e)}), 500
117
 
118
+ # Route Flask mise à jour pour le streaming
119
+ @app.route('/submit_philo', methods=['GET', 'POST']) # Accepte GET et POST
120
  def submit_philo():
121
+ if request.method == 'POST':
122
+ data = request.json
123
+ else: # request.method == 'GET'
124
+ data_string = request.args.get('data')
125
+ if data_string:
126
+ data = json.loads(data_string)
127
+ else:
128
+ return jsonify({"error": "No data provided"}), 400
 
 
129
 
130
  try:
131
  # Récupération du contenu du cours si un cours est sélectionné
 
190
  Je veux un travail bien détaillé et complet avec un français raffiné et soutenu.
191
  """
192
 
 
193
 
194
 
195
 
 
382
 
383
  La conclusion répond à la question critique posée en introduction, en s'appuyant sur l'ensemble de la réflexion développée.
384
 
 
385
  """
386
 
387
  # Ajout du contenu du cours à la prompt si disponible
 
390
 
391
  prompt = methodologie
392
 
393
+ def generate_stream():
394
+ try:
395
+ model = genai.GenerativeModel(model_name="models/gemini-2.0-flash-exp", safety_settings=safety_settings)
396
+ response = model.generate_content(prompt, stream=True, request_options={"timeout": 1100})
397
+
398
+ for chunk in response:
399
+ yield f"data: {json.dumps({'response': chunk.text})}\n\n"
400
+ time.sleep(0.05) # Ajustez le délai selon les besoins pour la fluidité du streaming
401
+ except Exception as e:
402
+ print(f"Erreur dans la génération de contenu : {e}")
403
+ yield f"data: {json.dumps({'error': 'Erreur lors de la génération'})}\n\n"
404
+
405
+ return Response(generate_stream(), mimetype='text/event-stream')
406
 
407
  except Exception as e:
408
  print(f"Erreur dans submit_philo : {e}")
 
456
  return redirect(url_for('manage_philosophy_courses'))
457
  except Exception as e:
458
  flash(f'Erreur lors de la suppression du cours : {e}', 'danger')
459
+ return redirect(url_for('manage_philosophy_courses'))
460
+
461
+
462
+ if __name__ == '__main__':
463
+ app.run(debug=True)