Docfile commited on
Commit
c08e5e6
·
verified ·
1 Parent(s): 6ebdd60

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +109 -107
app.py CHANGED
@@ -1,139 +1,141 @@
1
- import gradio as gr
2
  import google.generativeai as genai
3
-
4
- import os
5
- token=os.environ.get("TOKEN")
6
- e = ""
7
- genai.configure(
8
- api_key=token
 
 
9
  )
10
- generation_config = {
11
- "temperature": 1,
12
- "top_p": 0.95,
13
- "top_k": 64,
14
- "max_output_tokens": 8192,
15
- }
16
-
17
- safety_settings = [
18
- {
19
- "category": "HARM_CATEGORY_HARASSMENT",
20
- "threshold": "BLOCK_NONE"
21
- },
22
- {
23
- "category": "HARM_CATEGORY_HATE_SPEECH",
24
- "threshold": "BLOCK_NONE"
25
- },
26
- {
27
- "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
28
- "threshold": "BLOCK_NONE"
29
- },
30
- {
31
- "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
32
- "threshold": "BLOCK_NONE"
33
- },
34
- ]
35
-
36
- model = genai.GenerativeModel(model_name="gemini-1.5-flash-latest",
37
- generation_config=generation_config,
38
- safety_settings=safety_settings)
39
-
40
 
41
- meto = """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  methodologie du sujet de type 1:
43
 
44
  Pour répondre aux consignes du sujet de type 1, le candidat à l'épreuve d'Art Dramatique doit pouvoir organiser sa production en trois grandes parties autrement dit sous la forme d'une Introduction, un Développement et une Conclusion comme dans toutes les autres disciples. Ainsi, le sujet de type I sollicite chez le candidat ou encore l'apprenant les qualités d'imagination et de créativité.
 
 
45
 
 
 
 
46
  I°) l'Introduction:
47
-
48
  Objectifs :
49
  C'est la première partie d'un travail de rédaction, elle est toujours composée de cinq parties qui sont nécessaire pour son élaboration en Art Dramatique à savoir:
50
-
51
  1°) La phrase introductive: Elle est souvent appelée Amorce ou phrase chapeau, elle débute l'introduction et se construit de plusieurs manières :
52
-
53
  a°) En passant par la définition du concept du théâtre
54
-
55
  b) En passant par la définition du thème dominant du texte
56
-
57
  c) En passant un constat ou une observation
58
-
59
  2°) La présentation du document(le texte): Il s'agit ici de relever le nom de l'auteur, le tire de la pièce de théâtre, la date de publication, la maison d'édition, l'Acte et la scène dans laquelle on a extrait le texte et le genre théâtral.
60
-
61
  3°) Décliner le thème abordé dans le texte : Il s'agit simplement d'identifier ou de relever le thème mise exergue dans le texte..
62
-
63
  4°) Faire un résumé succinct de l'histoire du texte : Il s'agit de dire de manière brève dequoi parle le texte.
64
-
65
  5°) l'Annonce du plan: l'annonce du plan est présenté en deux grandes parties d'abord l'analyse du documentaire (donc le texte) ensuite la rédaction de la mise en scène encore appelée écriture scénique.
66
-
67
-
68
  II°) le Développement:
69
-
70
  C'est la deuxième partie de notre travail de rédaction. Dans cette partie l'élève do t organiser son raisonnement. Le développement en Art Dramatique est composé de deux grandes parties comme indiqué dans l'annonce du plan à savoir:
71
-
72
  1) l'Analyse documentaire : Dans cette partie l'apprenant doit rédiger deux petits paragraphes:
73
-
74
  -la Présentation des personnages: Dans cette partie l'élève doit pouvoir présenter les personnages qui interviennent dans le texte leurs rôles, les rapports qu'ils en retiennent entre eux et leur psychologie.
75
-
76
  NB: Apr��s le premier paragraphe, il faut prévoir une transition avant d'entamer le ceuxième paragraphe.
77
-
78
  -Présentation scénographique: Dans cette partie il est question pour l'élève de présenter tous les éléments scénographiques à savoir les indications qui rendent compte de l'espace et du temps. Pour l'espace, il faut pouvoir situer le lieu de l'action et pour le temps il faut situer le moment où se déroule l'action.
79
-
80
  NB: Il faudra prévoir une transition entre les deux grandes parties du développement.
81
-
82
-
83
  III°) la Conclusion:
84
-
85
  Dans cette dernière partie de la rédaction, il est question de répondre au thème traité dans le texte et ensuite d'ouvrir la réflexion à travers une référence ou une citation en rapport avec le sujet.
86
-
87
-
88
- """
89
-
90
-
91
- mise = """
92
- °) la Rédaction de la mise en scène :
93
-
94
- -C'est la deuxième partie du développement. La rédaction de la mise en scène est un projet personnel élaboré par les élèves, qui comprennent les étapes suivantes :
95
-
96
- *Le choix du genre théâtral
97
-
98
- • Proposer un titre à la scène
99
-
100
- *Présenter le ou les personnages, leurs nouveaux rôles et leur psychologie. *Respecter la structure de l'action dramatique
101
-
102
- * ecrire une scene en décrivant les lieux et les actions des personnages en utilisant le vocabulaire scénique, le présent de narration et le style impersonnel
103
-
104
  """
105
 
106
-
107
-
108
-
109
-
110
- # Fonction pour générer le contenu
111
- def generate_content(image,choix):
112
- global e
113
-
114
-
115
-
116
- if choix == "sans mise en scène.":
117
- pro = f"traite moi ce devoir en respectant scrupuleusement la méthodologie suivante : {meto}"
118
- response = model.generate_content([pro, image])
119
- print(response.text)
120
- e = response.text
121
- elif choix =="mise en scène uniquement":
122
- pre = f"traite moi ce devoir en respectant scrupuleusement la méthodologie suivante.je le veux Sous forme de paragraphe. : {mise}"
123
- response = model.generate_content([pre, image])
124
- print(response.text)
125
- e = response.text
126
  else:
127
- e =" djo"
128
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
 
130
- return e
131
-
132
-
133
- markdown = r"""
134
- {e}
135
- """.format(e=e)
136
- # Interface Gradio
137
- iface = gr.Interface(fn=generate_content, inputs=[gr.Image(type='pil'),gr.Radio(["sans","avec"])] , outputs= gr.Markdown(markdown, latex_delimiters=[{ "left":"$$", "right":"$$", "display": True }]))
 
 
 
 
 
 
 
 
 
 
 
 
 
138
 
139
- iface.launch()
 
 
1
+ import streamlit as st
2
  import google.generativeai as genai
3
+ import os
4
+ from PIL import Image
5
+
6
+ # Configuration de la page Streamlit
7
+ st.set_page_config(
8
+ page_title="Analyse de Textes Dramatiques",
9
+ page_icon="🎭",
10
+ layout="wide"
11
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
+ # Styles CSS personnalisés
14
+ st.markdown("""
15
+ <style>
16
+ .main {
17
+ padding: 2rem;
18
+ }
19
+ .stButton>button {
20
+ width: 100%;
21
+ }
22
+ .reportview-container {
23
+ background: #f0f2f6;
24
+ }
25
+ </style>
26
+ """, unsafe_allow_html=True)
27
+
28
+ # Configuration de l'API Gemini
29
+ def setup_genai():
30
+ token = os.environ.get("TOKEN")
31
+ if not token:
32
+ st.error("Token d'API non trouvé. Veuillez configurer la variable d'environnement TOKEN.")
33
+ st.stop()
34
+
35
+ genai.configure(api_key=token)
36
+ return genai.GenerativeModel(
37
+ model_name="gemini-2.0-flash-exp",
38
+ generation_config={
39
+ "temperature": 1,
40
+ "top_p": 0.95,
41
+ "top_k": 64,
42
+ "max_output_tokens": 8192,
43
+ },
44
+ safety_settings=[
45
+ {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
46
+ {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
47
+ {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
48
+ {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
49
+ ]
50
+ )
51
+
52
+ # Méthodologies
53
+ METHODOLOGIE = """
54
  methodologie du sujet de type 1:
55
 
56
  Pour répondre aux consignes du sujet de type 1, le candidat à l'épreuve d'Art Dramatique doit pouvoir organiser sa production en trois grandes parties autrement dit sous la forme d'une Introduction, un Développement et une Conclusion comme dans toutes les autres disciples. Ainsi, le sujet de type I sollicite chez le candidat ou encore l'apprenant les qualités d'imagination et de créativité.
57
+ [... reste de la méthodologie ...]
58
+ """
59
 
60
+ MISE_EN_SCENE = """
61
+ methodologie du sujet de type 1:
62
+ Pour répondre aux consignes du sujet de type 1, le candidat à l'épreuve d'Art Dramatique doit pouvoir organiser sa production en trois grandes parties autrement dit sous la forme d'une Introduction, un Développement et une Conclusion comme dans toutes les autres disciples. Ainsi, le sujet de type I sollicite chez le candidat ou encore l'apprenant les qualités d'imagination et de créativité.
63
  I°) l'Introduction:
 
64
  Objectifs :
65
  C'est la première partie d'un travail de rédaction, elle est toujours composée de cinq parties qui sont nécessaire pour son élaboration en Art Dramatique à savoir:
 
66
  1°) La phrase introductive: Elle est souvent appelée Amorce ou phrase chapeau, elle débute l'introduction et se construit de plusieurs manières :
 
67
  a°) En passant par la définition du concept du théâtre
 
68
  b) En passant par la définition du thème dominant du texte
 
69
  c) En passant un constat ou une observation
 
70
  2°) La présentation du document(le texte): Il s'agit ici de relever le nom de l'auteur, le tire de la pièce de théâtre, la date de publication, la maison d'édition, l'Acte et la scène dans laquelle on a extrait le texte et le genre théâtral.
 
71
  3°) Décliner le thème abordé dans le texte : Il s'agit simplement d'identifier ou de relever le thème mise exergue dans le texte..
 
72
  4°) Faire un résumé succinct de l'histoire du texte : Il s'agit de dire de manière brève dequoi parle le texte.
 
73
  5°) l'Annonce du plan: l'annonce du plan est présenté en deux grandes parties d'abord l'analyse du documentaire (donc le texte) ensuite la rédaction de la mise en scène encore appelée écriture scénique.
 
 
74
  II°) le Développement:
 
75
  C'est la deuxième partie de notre travail de rédaction. Dans cette partie l'élève do t organiser son raisonnement. Le développement en Art Dramatique est composé de deux grandes parties comme indiqué dans l'annonce du plan à savoir:
 
76
  1) l'Analyse documentaire : Dans cette partie l'apprenant doit rédiger deux petits paragraphes:
 
77
  -la Présentation des personnages: Dans cette partie l'élève doit pouvoir présenter les personnages qui interviennent dans le texte leurs rôles, les rapports qu'ils en retiennent entre eux et leur psychologie.
 
78
  NB: Apr��s le premier paragraphe, il faut prévoir une transition avant d'entamer le ceuxième paragraphe.
 
79
  -Présentation scénographique: Dans cette partie il est question pour l'élève de présenter tous les éléments scénographiques à savoir les indications qui rendent compte de l'espace et du temps. Pour l'espace, il faut pouvoir situer le lieu de l'action et pour le temps il faut situer le moment où se déroule l'action.
 
80
  NB: Il faudra prévoir une transition entre les deux grandes parties du développement.
 
 
81
  III°) la Conclusion:
 
82
  Dans cette dernière partie de la rédaction, il est question de répondre au thème traité dans le texte et ensuite d'ouvrir la réflexion à travers une référence ou une citation en rapport avec le sujet.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  """
84
 
85
+ def generate_analysis(model, image, analysis_type):
86
+ if analysis_type == "Sans mise en scène":
87
+ prompt = f"traite moi ce devoir en respectant scrupuleusement la méthodologie suivante : {METHODOLOGIE}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  else:
89
+ prompt = f"traite moi ce devoir en respectant scrupuleusement la méthodologie suivante. Je le veux sous forme de paragraphe : {MISE_EN_SCENE}"
90
+
91
+ try:
92
+ response = model.generate_content([prompt, image])
93
+ return response.text
94
+ except Exception as e:
95
+ st.error(f"Erreur lors de la génération : {str(e)}")
96
+ return None
97
+
98
+ def main():
99
+ # En-tête de l'application
100
+ st.title("🎭 Analyse de Textes Dramatiques")
101
+ st.write("Analysez vos textes dramatiques avec l'aide de l'IA")
102
+
103
+ # Initialisation du modèle
104
+ model = setup_genai()
105
+
106
+ # Interface utilisateur
107
+ col1, col2 = st.columns([1, 2])
108
+
109
+ with col1:
110
+ st.subheader("Configuration")
111
+ uploaded_file = st.file_uploader("Téléchargez votre image", type=['png', 'jpg', 'jpeg'])
112
+ analysis_type = st.radio(
113
+ "Type d'analyse",
114
+ ["Sans mise en scène", "Mise en scène uniquement"],
115
+ help="Choisissez le type d'analyse que vous souhaitez effectuer"
116
+ )
117
 
118
+ if uploaded_file and st.button("Analyser", key="analyze_btn"):
119
+ with st.spinner("Analyse en cours..."):
120
+ image = Image.open(uploaded_file)
121
+ result = generate_analysis(model, image, analysis_type)
122
+
123
+ if result:
124
+ with col2:
125
+ st.subheader("Résultats de l'analyse")
126
+ st.markdown(result)
127
+
128
+ # Option pour télécharger les résultats
129
+ st.download_button(
130
+ label="📥 Télécharger l'analyse",
131
+ data=result,
132
+ file_name="analyse_dramatique.txt",
133
+ mime="text/plain"
134
+ )
135
+
136
+ # Pied de page
137
+ st.markdown("---")
138
+ st.markdown("Développé avec ❤️ pour les passionnés de théâtre")
139
 
140
+ if __name__ == "__main__":
141
+ main()