Update app.py
Browse files
app.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
from flask import Flask, render_template, request, jsonify
|
2 |
-
|
|
|
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.
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
167 |
-
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
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('/')
|