-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstreamlit_generate_question.py
More file actions
76 lines (60 loc) · 3.21 KB
/
streamlit_generate_question.py
File metadata and controls
76 lines (60 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import streamlit as st
import json
import os
import requests # Import the requests library
from datetime import datetime
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Configuration for Flask API endpoint
FLASK_API_URL = os.getenv("FLASK_API_URL", "http://127.0.0.1:5000/generate_question")
st.set_page_config(page_title="Génération de Questions", layout="wide")
st.title("Génération de Questions")
# Example default texts
DEFAULT_TEXT = """
Dans la cour de l'école, les élèves sont joyeux. Ils jouent en groupes. Certains font de la
corde à sauter. D'autres jouent à cache-cache. On entend des rires partout.
En classe, la maîtresse explique la leçon de mathématiques avec un grand sourire. Elle
écrit des chiffres au tableau. Les enfants l'écoutent avec attention.
Nous prenons nos livres et nos cahiers. Il est temps d'apprendre à faire des additions
et à résoudre des problèmes. La maîtresse nous montre comment faire. Chacun essaie
sur son cahier. Si on a du mal, on peut demander de l'aide. Petit à petit, on devient plus
fort en maths.
"""
# Input fields for question generation
input_text = st.text_area("Texte", value=DEFAULT_TEXT.strip(), height=200, help="Le texte à partir duquel générer une question.")
focus_text = st.text_input("Texte de focalisation (optionnel)", help="Un mot ou une phrase sur laquelle la question doit se concentrer.")
if not os.getenv("GROQ_API_KEY"):
st.warning("Attention : GROQ_API_KEY non définie. La génération pourrait échouer.")
if st.button("Générer"):
if not input_text:
st.error("Le champ 'Texte' est obligatoire.")
else:
try:
st.info(f"Envoi à l'API Flask...")
payload = {
"text": input_text,
"focus_text": focus_text
}
headers = {"Content-Type": "application/json"}
response = requests.post(FLASK_API_URL, json=payload, headers=headers)
response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
result_data = response.json()
st.success("Réponse reçue.")
generated_question = result_data.get('question')
if generated_question:
st.subheader("Question générée")
st.write(generated_question)
st.json(result_data) # Display full JSON response for debugging/details
else:
st.warning("L'API n'a pas retourné de question. Voir la réponse complète ci-dessous.")
st.json(result_data)
except requests.exceptions.ConnectionError as e:
st.error(f"Erreur de connexion à l'API Flask. Vérifiez que le serveur est lancé à {FLASK_API_URL}. Erreur : {e}")
except requests.exceptions.HTTPError as e:
st.error(f"Erreur HTTP de l'API : {e}. Réponse : {response.text}")
except json.JSONDecodeError:
st.error(f"Erreur JSON de l'API. Réponse non valide : {response.text}")
except Exception as e:
st.error(f"Erreur inattendue avec l'API : {e}")
st.exception(e) # Display full traceback in Streamlit