Update app.py
Browse files
app.py
CHANGED
@@ -5,8 +5,8 @@ import time
|
|
5 |
import re # Pour la détection d'URL YouTube
|
6 |
from flask import Flask, request, session, jsonify, redirect, url_for, flash, render_template
|
7 |
from dotenv import load_dotenv
|
8 |
-
|
9 |
-
|
10 |
import requests
|
11 |
from werkzeug.utils import secure_filename
|
12 |
import markdown # Pour convertir la réponse Markdown en HTML
|
@@ -55,7 +55,7 @@ try:
|
|
55 |
# Initialise le client pour les opérations sur les fichiers (upload vidéo avec polling)
|
56 |
gemini_client = genai.Client(api_key=gemini_api_key)
|
57 |
# Configure également l'espace de noms global pour GenerativeModel, etc.
|
58 |
-
|
59 |
|
60 |
# Vérifie si les modèles requis sont disponibles
|
61 |
print("Vérification des modèles Gemini disponibles...")
|
@@ -384,15 +384,37 @@ Réponse:"""
|
|
384 |
print(f" Modèle sélectionné: {selected_model_name}")
|
385 |
|
386 |
# Crée l'instance du modèle spécifique pour cette requête
|
387 |
-
active_model =
|
388 |
model_name=selected_model_name,
|
389 |
-
|
390 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
391 |
)
|
392 |
|
393 |
print(f" Envoi de la requête à {selected_model_name} ({len(contents_for_gemini)} messages/tours)...")
|
394 |
# Appel API (non-streamé pour correspondre au code précédent)
|
395 |
-
response = active_model
|
396 |
|
397 |
# --- Traitement de la Réponse ---
|
398 |
response_text_raw = ""
|
|
|
5 |
import re # Pour la détection d'URL YouTube
|
6 |
from flask import Flask, request, session, jsonify, redirect, url_for, flash, render_template
|
7 |
from dotenv import load_dotenv
|
8 |
+
from google import genai
|
9 |
+
from google.genai import types
|
10 |
import requests
|
11 |
from werkzeug.utils import secure_filename
|
12 |
import markdown # Pour convertir la réponse Markdown en HTML
|
|
|
55 |
# Initialise le client pour les opérations sur les fichiers (upload vidéo avec polling)
|
56 |
gemini_client = genai.Client(api_key=gemini_api_key)
|
57 |
# Configure également l'espace de noms global pour GenerativeModel, etc.
|
58 |
+
|
59 |
|
60 |
# Vérifie si les modèles requis sont disponibles
|
61 |
print("Vérification des modèles Gemini disponibles...")
|
|
|
384 |
print(f" Modèle sélectionné: {selected_model_name}")
|
385 |
|
386 |
# Crée l'instance du modèle spécifique pour cette requête
|
387 |
+
active_model = gemini_client.models.generate_content(
|
388 |
model_name=selected_model_name,
|
389 |
+
contents = contents_for_gemini
|
390 |
+
config = types.GenerateContentConfig(
|
391 |
+
system_instruction=SYSTEM_INSTRUCTION,
|
392 |
+
safety_settings=[
|
393 |
+
|
394 |
+
types.SafetySetting(
|
395 |
+
category=types.HarmCategory.HARM_CATEGORY_HATE_SPEECH,
|
396 |
+
threshold=types.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
397 |
+
),
|
398 |
+
types.SafetySetting(
|
399 |
+
category=types.HarmCategory.HARM_CATEGORY_HARASSMENT,
|
400 |
+
threshold=types.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
401 |
+
),
|
402 |
+
types.SafetySetting(
|
403 |
+
category=types.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT,
|
404 |
+
threshold=types.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
405 |
+
),
|
406 |
+
types.SafetySetting(
|
407 |
+
category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT,
|
408 |
+
threshold=types.HarmBlockThreshold.BLOCK_LOW_AND_ABOVE,
|
409 |
+
)
|
410 |
+
]
|
411 |
+
)
|
412 |
+
),
|
413 |
)
|
414 |
|
415 |
print(f" Envoi de la requête à {selected_model_name} ({len(contents_for_gemini)} messages/tours)...")
|
416 |
# Appel API (non-streamé pour correspondre au code précédent)
|
417 |
+
response = active_model
|
418 |
|
419 |
# --- Traitement de la Réponse ---
|
420 |
response_text_raw = ""
|