TSC / app.py
TOUNDE's picture
Update app.py
1a82716 verified
Raw
History Blame Contribute Delete
9.37 kB
import streamlit as st
from streamlit_option_menu import option_menu
import requests
import os
API_TOKEN = os.environ.get("API_TOKEN")
#changement du logo et du titre de mon application en anglais
st.set_page_config(page_title="TSC", page_icon="books", layout="centered", menu_items=None)
col1, col2, col3 = st.columns(3)
xx = col1
ar = col2.image("keyce.jpg", width=180)
yy = col3
# menu horizontal
selected = option_menu(None, ["Home", "Translate", "Summarization", "Chatbot"],
icons=['house', 'globe', "pencil", "chat"],
menu_icon="cast", default_index=0, orientation="horizontal",
styles={
"container": {"padding":"5!important", "background-color":"#000E38", "color":"white"},
"icon": {"color":"#fff", "font-size":"16px"},
"nav-link": {"font-size":"16px", "text-align":"left", "margin":"0px", "--hover-color":"#f9d1ac", "color":"white"},
"nav-link-selected": {"background-color": "#FF9633", "color": "white"},
})
if selected == "Home":
st.subheader("Welcome to our app !!")
st.info(":blue[We are the present of tomorrow! Please like it after use!]")
#Insertion d'une image
st.image("nlp1.png", width=None)
st.write("Hello to everybody! In this Artificial Intelligence app, we offer you a THREE-IN-ONE package. First of all, we've got the (Translate) menu, which lets you do a good job of translating into a few foreign languages, then we've got the (Summary) option, which lets you enter your text in order to summarize it, and finally, as a bonus, we've integrated a chatbot model in the (Chatbot) option, which lets you try out our chatbot, which we're currently perfecting.")
elif selected == 'Translate':
# Choose the translation language
translated_model = {
"english - spanish": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-es",
"english - french": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-fr",
"english - chinese": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-zh",
"english - german": "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-de"
}
languages = st.selectbox("", list(translated_model.keys()))
API_TRANSLATED = translated_model[languages]
col3, col4 = st.columns(2)
text_in = col3.text_area("", height=200, placeholder='type or paste the text you wish to translate.')
#Boutton pour effectuer la traduction
btn_translate = st.button("๐ŸŒ Translate")
if btn_translate:
headers_spanish = {"Authorization": API_TOKEN}
if languages == "english - spanish" and text_in:
def query(payload):
response = requests.post(API_TRANSLATED, headers=headers_spanish, json=payload)
return response.json()
output = query_spanish({"inputs": text_in})
if not output[0]["translation_text"]:
error_message = output[0]["error"]
st.error(f"Le texte n'a pas pu รชtre traduit: {error_message}")
else:
translated_text = output[0]["translation_text"]
col5.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ translated_text +'''</p>''', unsafe_allow_html=True)
# text_out_spanish = col4.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ output_spanish[0] ["translation_text"] +'''</p>''', unsafe_allow_html=True)
st.info(":blue[Please feel fit to like it after use! ๐Ÿ˜‰๐Ÿ™]")
elif languages == "english - french" and text_in:
API_URL_french = "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-fr"
headers_french = {"Authorization": API_TOKEN}
if btn_translate:
def query(payload):
response = requests.post(API_TRANSLATED, headers=headers_french, json=payload)
return response.json()
output = query({"inputs": text_in})
if not output[0]["translation_text"]:
error_message = output[0]["error"]
st.error(f"Le texte n'a pas pu รชtre traduit: {error_message}")
else:
translated_text = output_translate[0]["translation_text"]
col5.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ translated_text +'''</p>''', unsafe_allow_html=True)
# text_out_french = col4.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ output_french[0] ["translation_text"] +'''</p>''', unsafe_allow_html=True)
# st.info(":blue[Please feel fit to like it after use! ๐Ÿ˜‰๐Ÿ™]")
elif languages == 'english - chinese' and text_in:
headers_chinese = {"Authorization": API_TOKEN}
if btn_translate:
def query(payload):
response = requests.post(API_TRANSLATED, headers=headers_chinese, json=payload)
return response.json()
output = query({"inputs": text_in})
if not output[0]["translation_text"]:
error_message = output[0]["error"]
st.error(f"Le texte n'a pas pu รชtre traduit: {error_message}")
else:
translated_text = output[0]["translation_text"]
col5.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ translated_text +'''</p>''', unsafe_allow_html=True)
# text_out_chinese = col4.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ output_chinese[0] ["translation_text"] +'''</p>''', unsafe_allow_html=True)
st.info(":blue[Please feel fit to like it after use! ๐Ÿ˜‰๐Ÿ™]")
elif languages == "english - german" and text_in:
headers_german = {"Authorization": API_TOKEN}
if btn_translate:
def query(payload):
response = requests.post(API_TRANSLATED, headers=headers_german, json=payload)
return response.json()
output = query({"inputs": text_in})
if not output[0]["translation_text"]:
error_message = output[0]["error"]
st.error(f"Le texte n'a pas pu รชtre traduit: {error_message}")
else:
translated_text = output[0]["translation_text"]
col5.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ translated_text +'''</p>''', unsafe_allow_html=True)
# text_out_german = col4.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ output_german[0] ["translation_text"] +'''</p>''', unsafe_allow_html=True)
st.info(":blue[Please feel fit to like it after use! ๐Ÿ˜‰๐Ÿ™]")
elif selected == 'Summarization':
text_sum = st.text_area("", height=250, placeholder='Please type or paste the text you wish to summarise here.')
#Boutton pour effectuer la prรฉdiction
btn_sum = st.button("๐Ÿ“ Summary")
if btn_sum:
if text_sum:
API_URL_summary = "https://api-inference.huggingface.co/models/Falconsai/text_summarization"
headers_summary = {"Authorization": API_TOKEN}
def query(payload):
response = requests.post(API_URL_summary, headers=headers_summary, json=payload)
return response.json()
st.markdown('''<h4 style='text-align:left;color:black;'> Answer </h4>''', unsafe_allow_html=True)
output = query({"inputs": text_sum,})
summary_text = output[0]["summary_text"]
st.success(f"Response: {summary_text}")
# text_out_sum = st.markdown('''<p style='text-align:left;font-size:16px;color:orange;font-weight:bold'>'''+ output_sum[0]["summary_text"] +'''</p>''', unsafe_allow_html=True)
st.info(":blue[Please feel fit to like it after use! ๐Ÿ˜‰๐Ÿ™]")
elif selected == 'Chatbot':
text_chat = st.text_input("Enter your question")
#Boutton pour effectuer le chatbot
btn_chat = st.button("๐Ÿ’ฌ Submit")
API_URL_chatbot = "https://api-inference.huggingface.co/models/tiiuae/falcon-7b-instruct"
headers_chatbot = {"Authorization": API_TOKEN}
if btn_chat:
if text_chat:
def query(payload):
response = requests.post(API_URL_chatbot, headers=headers_chatbot, json=payload)
return response.json()
output = query({"inputs": text_chat,})
generated_text = output[0]["generated_text"]
st.success(f"Response: {generated_text}")
# text_out_chat = st.info(':green['+ output_chat[0]["generated_text"] +']')
st.info(":blue[Please feel fit to like it after use! ๐Ÿ˜‰๐Ÿ™]")
st.markdown('''<br/> <h6 style='text-align:center;color:grey;font-size:11px;'> ยฉ 2024 - TOUNDE ZOGO - All rights reserved </h6>''', unsafe_allow_html=True)
# for key in range(5):
# try:
# text_out = col4.markdown('''<br/> <p style='text-align:left;font-size:16px;'>'''+ output[0]["translation_text"] +'''</p>''', unsafe_allow_html=True)
# except KeyError:
# print("Couldn't find a match for the key:", key)