Docfile commited on
Commit
25460b3
·
verified ·
1 Parent(s): da5e9b0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -7
app.py CHANGED
@@ -5,8 +5,8 @@ import json
5
  from flask import Flask, jsonify, render_template, request
6
  from pydantic import BaseModel, Field
7
  from typing import List, Optional
8
- import psycopg2
9
- from psycopg2.extras import RealDictCursor
10
  from google import genai
11
  from google.genai import types
12
  from utils import load_prompt
@@ -32,13 +32,14 @@ class Dissertation(BaseModel):
32
  parties: List[Partie]
33
  conclusion: str = Field(description="La conclusion complète de la dissertation.")
34
 
35
- # --- Configuration Gemini ---
36
  try:
37
  GOOGLE_API_KEY = os.environ.get("TOKEN")
38
  if not GOOGLE_API_KEY:
39
  logging.warning("La variable d'environnement TOKEN (GOOGLE_API_KEY) n'est pas définie.")
40
  client = None
41
  else:
 
42
  client = genai.Client(api_key=GOOGLE_API_KEY)
43
  except Exception as e:
44
  logging.error(f"Erreur lors de l'initialisation du client GenAI: {e}")
@@ -54,7 +55,8 @@ SAFETY_SETTINGS = [
54
  # --- Route Principale ---
55
  @app.route('/')
56
  def philosophie():
57
- return render_template("philosophie.html")
 
58
 
59
  # --- Route API pour la génération de dissertation ---
60
  @app.route('/api/generate_dissertation', methods=['POST'])
@@ -64,25 +66,40 @@ def generate_dissertation_api():
64
 
65
  data = request.json
66
  sujet = data.get('question', '').strip()
 
 
67
  if not sujet:
68
  return jsonify({"error": "Le champ 'question' est obligatoire."}), 400
 
 
 
69
 
70
  try:
71
- prompt_template = load_prompt('philo_dissertation_json.txt')
 
 
 
 
 
 
 
72
  final_prompt = prompt_template.format(phi_prompt=sujet)
73
 
 
74
  config = types.GenerateContentConfig(
75
  safety_settings=SAFETY_SETTINGS,
76
  response_mime_type="application/json",
77
  response_schema=Dissertation,
78
  )
79
 
 
80
  response = client.models.generate_content(
81
- model="gemini-2.5-flash",
82
  contents=final_prompt,
83
  config=config
84
  )
85
 
 
86
  if response.parsed:
87
  return jsonify(response.parsed.dict())
88
  else:
@@ -94,4 +111,4 @@ def generate_dissertation_api():
94
  return jsonify({"error": f"Une erreur est survenue avec le service IA : {e}"}), 500
95
 
96
  if __name__ == '__main__':
97
- app.run(debug=True, port=5000)
 
5
  from flask import Flask, jsonify, render_template, request
6
  from pydantic import BaseModel, Field
7
  from typing import List, Optional
8
+ # import psycopg2 # La base de données n'est pas utilisée
9
+ # from psycopg2.extras import RealDictCursor
10
  from google import genai
11
  from google.genai import types
12
  from utils import load_prompt
 
32
  parties: List[Partie]
33
  conclusion: str = Field(description="La conclusion complète de la dissertation.")
34
 
35
+ # --- Configuration Gemini (Ancien SDK) ---
36
  try:
37
  GOOGLE_API_KEY = os.environ.get("TOKEN")
38
  if not GOOGLE_API_KEY:
39
  logging.warning("La variable d'environnement TOKEN (GOOGLE_API_KEY) n'est pas définie.")
40
  client = None
41
  else:
42
+ # On utilise genai.Client comme dans votre code original
43
  client = genai.Client(api_key=GOOGLE_API_KEY)
44
  except Exception as e:
45
  logging.error(f"Erreur lors de l'initialisation du client GenAI: {e}")
 
55
  # --- Route Principale ---
56
  @app.route('/')
57
  def philosophie():
58
+ # Assurez-vous que le nom du template correspond à votre fichier HTML
59
+ return render_template("philosophie (13).html")
60
 
61
  # --- Route API pour la génération de dissertation ---
62
  @app.route('/api/generate_dissertation', methods=['POST'])
 
66
 
67
  data = request.json
68
  sujet = data.get('question', '').strip()
69
+ dissertation_type = data.get('type', 'type1').strip() # Récupère le type
70
+
71
  if not sujet:
72
  return jsonify({"error": "Le champ 'question' est obligatoire."}), 400
73
+
74
+ if dissertation_type not in ['type1', 'type2']:
75
+ return jsonify({"error": "Type de méthodologie invalide."}), 400
76
 
77
  try:
78
+ # Sélection dynamique du fichier de prompt
79
+ prompt_filename = f"philo_dissertation_{dissertation_type}.txt"
80
+ prompt_template = load_prompt(prompt_filename)
81
+
82
+ if "Erreur:" in prompt_template:
83
+ logging.error(f"Fichier de prompt non trouvé : {prompt_filename}")
84
+ return jsonify({"error": "Configuration du prompt introuvable pour ce type."}), 500
85
+
86
  final_prompt = prompt_template.format(phi_prompt=sujet)
87
 
88
+ # Configuration de la réponse structurée (comme dans votre code original)
89
  config = types.GenerateContentConfig(
90
  safety_settings=SAFETY_SETTINGS,
91
  response_mime_type="application/json",
92
  response_schema=Dissertation,
93
  )
94
 
95
+ # Appel à l'API avec la syntaxe client.models.generate_content
96
  response = client.models.generate_content(
97
+ model="gemini-2.5-flash", # Modèle performant compatible avec cette syntaxe
98
  contents=final_prompt,
99
  config=config
100
  )
101
 
102
+ # Traitement de la réponse (comme dans votre code original)
103
  if response.parsed:
104
  return jsonify(response.parsed.dict())
105
  else:
 
111
  return jsonify({"error": f"Une erreur est survenue avec le service IA : {e}"}), 500
112
 
113
  if __name__ == '__main__':
114
+ app.run(debug=True, port=5001)