tayawelba commited on
Commit
978a82b
1 Parent(s): 0d614f1

Upload 6 files

Browse files
Files changed (6) hide show
  1. .env +1 -0
  2. app.py +244 -0
  3. img/desktop.ini +0 -0
  4. img/image1.jpg +0 -0
  5. img/logo2.png +0 -0
  6. requirements.txt +5 -0
.env ADDED
@@ -0,0 +1 @@
 
 
1
+ TOKEN_HUGGINGFACE = "WuYGuwupwYKhgseUyXxfVEFFPUpajFsueG"
app.py ADDED
@@ -0,0 +1,244 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import requests
3
+ import time
4
+ from streamlit_option_menu import option_menu
5
+ import streamlit.components.v1 as components
6
+ from dotenv import load_dotenv
7
+
8
+ load_dotenv()
9
+
10
+ TOKEN_API = 'Bearer hf_os.getenv("TOKEN_HUGGINGFACE")'
11
+
12
+ #changement du logo et du titre de mon application en anglais
13
+ st.set_page_config(page_title="NLP Outro", page_icon=":brain:", layout="centered", menu_items=None)
14
+
15
+
16
+
17
+ # Créer trois colonnes de largeur égale
18
+ col1, col2, col3 = st.columns(3)
19
+
20
+ # Laisser la première et la troisième colonne vides
21
+ with col1:
22
+ st.write("")
23
+
24
+ # Afficher le logo dans la deuxième colonne
25
+ with col2:
26
+ st.image("img/logo2.png", use_column_width=None)
27
+
28
+ with col3:
29
+ st.write("")
30
+
31
+ selected = option_menu(
32
+ menu_title=None, # required
33
+ options=["Accueil", "Traduction", "Résumer", "Chatbot"], # required
34
+ icons=["house", "translate","journal-text", "chat-dots"], # optional
35
+ menu_icon="cast", # optional
36
+ default_index=0, # optional
37
+ orientation="horizontal",
38
+ )
39
+
40
+ if selected == "Accueil":
41
+ st.title(f"{selected}")
42
+
43
+ # Display home page with app description and logo
44
+ st.header('Bienvenue sur l\'application qui est un outil polyvalent qui combine trois fonctionnalités principales : la traduction, le résumé et le chatbot.')
45
+ st.image('img/image1.jpg', caption='Large Language Model')
46
+ #st.title('Bienvenue sur l\'application de classification d\'images de radiographies pulmonaires')
47
+ #st.markdown("<h1 style='text-align: center;'>Bienvenue sur l'application de classification d'images de radiographies pulmonaires</h1>", unsafe_allow_html=True)
48
+ st.markdown("<h5 style='text-align: justify;'><b>La traduction</b> permet de convertir du texte entre cinq langues : l’anglais, l’allemand, le français, le chinois et l’espagnol. Elle utilise les modèles de Helsinki-NLP, qui sont des modèles de traduction automatique neuronale basés sur le Transformer. Ces modèles sont rapides, précis et capables de gérer des langues morphologiquement riches.</h5>", unsafe_allow_html=True)
49
+ st.markdown("<h5 style='text-align: justify;'><b>Le résumé</b> permet de condenser un texte long en un texte court qui en conserve les informations essentielles. Il utilise le modèle facebook/bart-large-cnn , qui est une variante du modèle T56 adaptée et affinée pour la tâche de résumé de texte. Ce modèle est entraîné sur un ensemble diversifié de documents et de résumés humains, ce qui lui permet de générer des résumés concis et cohérents.</h5>", unsafe_allow_html=True)
50
+ st.markdown("<h5 style='text-align: justify;'><b>Le chatbot</b> permet de dialoguer avec l’application en utilisant un langage naturel. Il utilise le modèle /tiiuae/falcon-7b-instruct, qui est un modèle de génération de texte causal basé sur Falcon-7B et affiné sur un mélange de données de chat et d’instruction. Ce modèle est capable de répondre à des requêtes variées, de suivre des instructions et de créer du contenu imaginatif.</h5>", unsafe_allow_html=True)
51
+ st.markdown("<h5 style='text-align: justify;'>Mon application utilise l’Inference API de Hugging Face pour accéder aux modèles et les exécuter via des requêtes HTTP simples. L’Inference API est un service gratuit et rapide qui permet de tester et d’évaluer plus de 150 000 modèles de machine learning accessibles au public, ou vos propres modèles privés, sur l’infrastructure partagée de Hugging Face.</h5>", unsafe_allow_html=True)
52
+ st.markdown("<h5 style='text-align: justify;'>Mon application est donc un outil puissant et innovant qui exploite les dernières avancées de l’intelligence artificielle pour offrir des services de traduction, de résumé et de chatbot de haute qualité.</h5>", unsafe_allow_html=True)
53
+
54
+
55
+ components.html(
56
+ """
57
+ <div style="position: fixed; bottom: 0; left: 0; right: 0; text-align: center; font-size: 15px; color: gray;">
58
+ Tous droits réservés © Décembre 2023 Tayawelba Dawaï Hesed
59
+ </div>
60
+ """,
61
+ height=50
62
+ )
63
+
64
+ if selected == "Traduction":
65
+ # CODE TRANSLATE
66
+ st.title(f"{selected}")
67
+ st.markdown("Cette partie vous offre la possibilité de traduire vos **paragraphes** et vos **phrases**.")
68
+
69
+ headers = {"Authorization": TOKEN_API}
70
+
71
+ # Choose the translation language from Hugging Face
72
+ translation_languages = {
73
+ "English to German": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-de",
74
+ "German to English": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-de-en",
75
+ "English to French": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-fr",
76
+ "French to English": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-fr-en",
77
+ "English to Spanish": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-es",
78
+ "Spanish to English": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-es-en",
79
+ "English to Chinese": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-zh",
80
+ "Chinese to English": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-zh-en",
81
+ # Add more language pairs as needed
82
+ }
83
+
84
+ selected_translation = st.selectbox("Sélectionner les langues", list(translation_languages.keys()))
85
+
86
+
87
+ # Load the translation pipeline
88
+ API_TRANSLATE=translation_languages[selected_translation]
89
+
90
+ # User input for translation
91
+ translate_input = st.text_area("Entrer le texte à traduire:", "")
92
+
93
+ # Display loading indicator
94
+ if st.button("Traduire"):
95
+ with st.spinner("traduction..."):
96
+ # Simulate translation delay for demonstration
97
+ time.sleep(2)
98
+ if translate_input:
99
+ # Perform translation
100
+ def main_translate(payload):
101
+ response = requests.post(API_TRANSLATE, headers=headers, json=payload)
102
+ return response.json()
103
+
104
+ output_translate = main_translate({
105
+ "inputs": translate_input
106
+ })
107
+
108
+ if not output_translate[0]["translation_text"]:
109
+ error_message = output_translate[0]["error"]
110
+ st.error(f"Le texte n'a pas pu être traduit: {error_message}")
111
+ else:
112
+ translated_text = output_translate[0]["translation_text"]
113
+ st.success(f"Le texte tratuit: {translated_text}")
114
+
115
+ #st.write("**TRADUCTION** is : {}".format(output[0]["translation_text"]))
116
+
117
+
118
+ else:
119
+ st.warning("Veuillez saisir le texte à traduire.")
120
+
121
+
122
+ # Clear button to reset input and result
123
+ if st.button("Nettoyer"):
124
+ translate_input = ""
125
+ st.success("Le champ est nettoyé.")
126
+ st.empty() # Clear previous results if any
127
+
128
+ #END FOR TRANSLATE CODE
129
+ if selected == "Résumer":
130
+ #CODE SUMMARIZE
131
+ st.title(f"{selected}")
132
+
133
+ st.markdown("Cette partie vous offre la possibilité de **Résumer** vos **paragraphes** et vos **phrases**.")
134
+
135
+ headers = {"Authorization": TOKEN_API}
136
+
137
+ # Load the
138
+ API_SUMMARY = "https://api-inference.huggingface.co/models/facebook/bart-large-cnn"
139
+
140
+ # User input for translation
141
+ summary_input = st.text_area("Entrer le texte à Résumer:", "")
142
+ if st.button("Résumer"):
143
+ with st.spinner("Résume..."):
144
+ # Simulate translation delay for demonstration
145
+ time.sleep(2)
146
+ if summary_input:
147
+ def main1(payload):
148
+ response = requests.post(API_SUMMARY, headers=headers, json=payload)
149
+ return response.json()
150
+
151
+ output_summary = main1({"inputs": summary_input})
152
+ summary_text = output_summary[0]["summary_text"]
153
+ st.success(f"Résumé: {summary_text}")
154
+ else:
155
+ st.warning("Veuillez saisir le texte à résumer.")
156
+ # Clear button to reset input and result
157
+ if st.button("Nettoyer"):
158
+ summary_input = ""
159
+ st.success("Le champ est nettoyé.")
160
+ st.empty() # Clear previous results if any
161
+
162
+
163
+ #END CODE SUMMARIZE
164
+ if selected == "Chatbot":
165
+ # CODE TRANSLATE
166
+ st.title(f"{selected}")
167
+ st.markdown("Cette partie vous offre la possibilité de me poser vos **questions**.")
168
+
169
+ headers = {"Authorization": TOKEN_API}
170
+
171
+ # Choose the translation language from Hugging Face
172
+ translation_models = {
173
+ "English": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-fr",
174
+ "French": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-fr-en",
175
+ }
176
+ selected_translation = st.selectbox("Sélectionner une langue", list(translation_models.keys()))
177
+ # Load the
178
+ API_URL = "https://api-inference.huggingface.co/models/tiiuae/falcon-7b-instruct"
179
+
180
+ # User input for translation
181
+ user_input = st.text_area("Pose se moi une question :", "")
182
+
183
+ if (selected_translation=="French"):
184
+ API_URL_1 = "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-fr-en"
185
+ API_URL_2 = "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-fr"
186
+ # Display loading indicator
187
+ if st.button("Recherche"):
188
+ with st.spinner("Rechercher..."):
189
+ # Simulate translation delay for demonstration
190
+ time.sleep(2)
191
+ if user_input:
192
+ def main(payload):
193
+ response = requests.post(API_URL_1, headers=headers, json=payload)
194
+ return response.json()
195
+
196
+ output = main({"inputs": user_input})
197
+ text2 = output[0]["translation_text"]
198
+
199
+ if text2:
200
+ def main1(payload):
201
+ response = requests.post(API_URL, headers=headers, json=payload)
202
+ return response.json()
203
+
204
+ output = main1({"inputs": text2})
205
+ text3 = output[0]["generated_text"]
206
+
207
+ if text3:
208
+ def main(payload):
209
+ response = requests.post(API_URL_2, headers=headers, json=payload)
210
+ return response.json()
211
+
212
+ output = main({"inputs": text3})
213
+ generated_text = output[0]["translation_text"]
214
+ st.success(f"Réponse: {generated_text}")
215
+ else:
216
+ st.warning("Veuillez saisir une question.")
217
+
218
+ else :
219
+ # Display loading indicator
220
+ if st.button("Research"):
221
+ with st.spinner("Researching..."):
222
+ # Simulate translation delay for demonstration
223
+ time.sleep(2)
224
+ if user_input:
225
+ # Perform translation
226
+ def main(payload):
227
+ response = requests.post(API_URL, headers=headers, json=payload)
228
+ return response.json()
229
+
230
+ output = main({
231
+ "inputs": user_input
232
+ })
233
+ generated_text = output[0]["generated_text"]
234
+ st.success(f"Response: {generated_text}")
235
+ else:
236
+ st.warning("Please enter a question.")
237
+
238
+ # Clear button to reset input and result
239
+ if st.button("Nettoyer"):
240
+ user_input = ""
241
+ st.success("Le champ est nettoyé.")
242
+ st.empty() # Clear previous results if any
243
+
244
+ # END CODE TRANSLATE
img/desktop.ini ADDED
Binary file (246 Bytes). View file
 
img/image1.jpg ADDED
img/logo2.png ADDED
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ requests==2.31.0
2
+ streamlit==1.29.0
3
+ streamlit_elements==0.1.0
4
+ streamlit_option_menu==0.3.12
5
+ python-dotenv==1.0.0