Docfile commited on
Commit
e968302
·
verified ·
1 Parent(s): 65784c0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -20
app.py CHANGED
@@ -1,5 +1,6 @@
1
  from flask import Flask, render_template, request, jsonify
2
- import google.generativeai as genai
 
3
  import os
4
  from PIL import Image
5
  import tempfile
@@ -8,18 +9,27 @@ app = Flask(__name__)
8
 
9
  # Configuration de l'API Gemini
10
  token = os.environ.get("TOKEN")
11
- genai.configure(api_key=token)
12
-
13
- generation_config = {
14
- "temperature": 1,
15
- "max_output_tokens": 8192,
16
- }
17
-
18
- safety_settings = [
19
- {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
20
- {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
21
- {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
22
- {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
 
 
 
 
 
 
 
 
 
23
  ]
24
 
25
  prompt_tableau = """
@@ -162,19 +172,25 @@ Ainsi, ... (axe 2) est lié (e) à ... (sous-axe 1) et à ... (sous-axe 2).
162
 
163
  Somme toute, ... (titre du texte) organise son sens autour de … (axe 1) et de ... (axe 2). De ces deux centres d’intérêt découlent respectivement, d’une part, … (sous-axe 1 de l'axe 1) et ... (sous-axe 2 de l'axe 1) et, d’autre part, … (sous-axe 1 de l'axe 2) et … (sous-axe 2 de l'axe 2). À travers ce texte, ...(nom de l'auteur) nous ... (opinion personnelle). Une telle optique est perceptible dans la logique de... (nom de l'auteur nous permettant de faire un rapprochement thématique), dans son œuvre ...(titre de l’œuvre), dans lequel il aborde… (bref résumé de l'œuvre en question qui peut être facultatif).
164
  """
165
-
166
- model = genai.GenerativeModel(
167
- model_name="gemini-2.0-flash",
168
- generation_config=generation_config,
169
- safety_settings=safety_settings
170
  )
 
 
 
171
 
172
  def generate_table(image, consignes=""):
173
  """Génère le tableau d'analyse à partir de l'image en intégrant éventuellement des consignes"""
174
  prompt = prompt_tableau
175
  if consignes:
176
  prompt += "\n" + consignes
177
- response = model.generate_content([prompt, image])
 
 
 
 
 
178
  return response.text
179
 
180
  def generate_dissertation(tableau):
@@ -182,7 +198,13 @@ def generate_dissertation(tableau):
182
  prompt = f"""
183
 
184
  {prompt_redaction}.Écris maintenant un rédaction pour ça en suivant l'exercice a trous ; {tableau}"""
185
- response = model.generate_content(prompt)
 
 
 
 
 
 
186
  return response.text
187
 
188
  @app.route('/')
 
1
  from flask import Flask, render_template, request, jsonify
2
+ from google import genai
3
+ from google.genai import types
4
  import os
5
  from PIL import Image
6
  import tempfile
 
9
 
10
  # Configuration de l'API Gemini
11
  token = os.environ.get("TOKEN")
12
+ genai_client = genai.Client(api_key=token)
13
+
14
+
15
+
16
+ SAFETY_SETTINGS = [
17
+ types.SafetySetting(
18
+ category=types.HarmCategory.HARM_CATEGORY_HATE_SPEECH,
19
+ threshold=types.HarmBlockThreshold.BLOCK_NONE,
20
+ ),
21
+ types.SafetySetting(
22
+ category=types.HarmCategory.HARM_CATEGORY_HARASSMENT,
23
+ threshold=types.HarmBlockThreshold.BLOCK_NONE,
24
+ ),
25
+ types.SafetySetting(
26
+ category=types.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
27
+ threshold=types.HarmBlockThreshold.BLOCK_NONE,
28
+ ),
29
+ types.SafetySetting(
30
+ category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
31
+ threshold=types.HarmBlockThreshold.BLOCK_NONE,
32
+ )
33
  ]
34
 
35
  prompt_tableau = """
 
172
 
173
  Somme toute, ... (titre du texte) organise son sens autour de … (axe 1) et de ... (axe 2). De ces deux centres d’intérêt découlent respectivement, d’une part, … (sous-axe 1 de l'axe 1) et ... (sous-axe 2 de l'axe 1) et, d’autre part, … (sous-axe 1 de l'axe 2) et … (sous-axe 2 de l'axe 2). À travers ce texte, ...(nom de l'auteur) nous ... (opinion personnelle). Une telle optique est perceptible dans la logique de... (nom de l'auteur nous permettant de faire un rapprochement thématique), dans son œuvre ...(titre de l’œuvre), dans lequel il aborde… (bref résumé de l'œuvre en question qui peut être facultatif).
174
  """
175
+ generate_config = types.GenerateContentConfig(
176
+ system_instruction=SYSTEM_INSTRUCTION,
177
+ safety_settings=SAFETY_SETTINGS
 
 
178
  )
179
+ model_id="gemini-2.0-flash"
180
+
181
+
182
 
183
  def generate_table(image, consignes=""):
184
  """Génère le tableau d'analyse à partir de l'image en intégrant éventuellement des consignes"""
185
  prompt = prompt_tableau
186
  if consignes:
187
  prompt += "\n" + consignes
188
+ #sresponse = model.generate_content([prompt, image])
189
+ response = client.models.generate_content(
190
+ model=model_id,
191
+ contents=[prompt,image],
192
+ config=generate_config
193
+ )
194
  return response.text
195
 
196
  def generate_dissertation(tableau):
 
198
  prompt = f"""
199
 
200
  {prompt_redaction}.Écris maintenant un rédaction pour ça en suivant l'exercice a trous ; {tableau}"""
201
+ #response = model.generate_content(prompt)
202
+
203
+ response = client.models.generate_content(
204
+ model=model_id,
205
+ contents=promtp,
206
+ config=generate_config)
207
+
208
  return response.text
209
 
210
  @app.route('/')