Spaces:
Runtime error
Runtime error
# -*- coding: utf-8 -*- | |
"""export_gradio_spaces.ipynb | |
Automatically generated by Colaboratory. | |
Original file is located at | |
https://colab.research.google.com/drive/1mI9gAr_Vtpl2mZsoZoRc56muGboXdsMi | |
# Chargement du modèle GPT-2 entrainé | |
""" | |
#import pip | |
import subprocess | |
import sys | |
def install(package): | |
subprocess.check_call([sys.executable, "-m", "pip", "install", package]) | |
install("typing-extensions") | |
install("gradio") | |
install("keras_nlp") | |
import os | |
from tensorflow import keras | |
import keras_nlp | |
#from google.colab import drive | |
import time | |
import re | |
#os.environ["KERAS_BACKEND"] = "tensorflow" # or "tensorflow" or "torch" | |
#keras.mixed_precision.set_global_policy("mixed_float16") | |
#preprocessor = keras_nlp.models.GPT2CausalLMPreprocessor.from_preset( | |
# "gpt2_medium_en", | |
# sequence_length=128, | |
#) | |
#gpt2_lm = keras_nlp.models.GPT2CausalLM.from_preset( | |
# "gpt2_medium_en", preprocessor=preprocessor | |
#) | |
#drive.mount('/content/drive', force_remount=True) | |
# GPT2 Base 1 epochs | |
#checkpoint_path = "./aloqas_model_checkpoints/cp.ckpt" | |
# GPT2 Base 3 epochs | |
#checkpoint_path = "./aloqas_model_checkpoints_gpt2base_3_epochs/cp.ckpt" | |
# GPT2 Base 3 epochs | |
#checkpoint_path = "./aloqas_model_checkpoints_gpt2medium_3_epochs/cp.ckpt" | |
#gpt2_lm.load_weights(checkpoint_path) | |
gpt2_lm = keras.models.load_model("aloqas_model_keras_gpt2medium_3epochs/aloqas_model_gpt2medium_3_epochs.keras") | |
"""# Chargement et configuration de gradio""" | |
""" | |
def generate_text(prompt): | |
return gpt2_lm.generate(prompt, max_length=100) | |
""" | |
# Expérimental | |
def format_text(text, to_remove): | |
# Function to format generated text | |
# - removes the prompt from the answer | |
# - removes unnecessary space chars before punctuation | |
# - capitalize the first letter of each sentence | |
text = text.replace(to_remove, '') | |
text = re.sub(r' +,', ',', text) # comma | |
text = re.sub(r' +\.', '.', text) # full stop | |
text = '. '.join(sentence.strip().capitalize() for sentence in text.split('.')) | |
return text | |
# Expérimental | |
def generate_text(prompt): | |
output = gpt2_lm.generate(prompt, max_length=150) | |
formatted_output = format_text(output, prompt) | |
print("=====================================") | |
print(f"DEBUG - GPT-2 Output : {output}\n") | |
print(f"DEBUG - Formatted GPT-2 Output : {formatted_output}") | |
return formatted_output | |
# CSS styles | |
css = """ | |
@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap') | |
body, html { | |
height: 100%; | |
margin: 0; | |
font-family : 'Poppins', sans-serif; | |
# font-family: 'Arial', sans-serif; | |
} | |
:root{ | |
--body-background-fill: none !important; | |
} | |
body,html { | |
background-color: #131722; /* Dark background color */ | |
color: #ffffff; | |
} | |
/* Container for the entire chat interface */ | |
#chat-interface { | |
display: flex; | |
flex-direction: column; | |
max-width: 80%; /* Ensure maximum width */ | |
height: 100vh; | |
justify-content: space-between; | |
margin: 0 auto; /* Center the chat interface */ | |
} | |
/* Container for the chat messages */ | |
#chat-messages { | |
flex-grow: 1; | |
overflow-y: auto; | |
background: none; | |
border: 1px solid #627385 !important; | |
max-height: 25%; | |
} | |
/* Styling for the chatbot bubble messages */ | |
.gr-chatbot .chatbubble { | |
max-width: 85%; | |
margin-bottom: 12px; | |
border-radius: 16px; | |
padding: 12px 16px; | |
position: relative; | |
font-size: 1rem; | |
} | |
.gr-chatbot .chatbubble:before { | |
content: ''; | |
position: absolute; | |
width: 0; | |
height: 0; | |
border-style: solid; | |
} | |
/* Chatbot message bubble */ | |
.gr-chatbot .bot .chatbubble { | |
background-color: #2d3e55; /* Darker bubble background */ | |
} | |
/* User message bubble */ | |
.gr-chatbot .user .chatbubble { | |
background-color: #4CAF50; /* Green bubble background */ | |
} | |
/* Input area styling */ | |
#input-area { | |
display: flex; | |
align-items: center; | |
padding: 20px; | |
} | |
/* Text input field styling */ | |
#input-area .gr-textbox { | |
flex: 1; | |
margin-right: 12px; | |
padding: 12px 16px; | |
border: 5px solid #627385; | |
border-radius: 16px; | |
font-size: 1rem; | |
} | |
/* Send button styling */ | |
#input-area button { | |
padding: 12px 20px; | |
background-color: #4CAF50; /* Green button color */ | |
border: none; | |
border-radius: 16px; | |
cursor: pointer; | |
font-size: 1rem; | |
color: #fff; | |
} | |
/* Suggestion buttons styling */ | |
.suggestion-btn { | |
background-color: #2d3e55; /* Dark button color */ | |
color: #ffffff; | |
padding: 10px 50px; | |
margin: 5px; | |
border: 2px solid #627385; | |
border-radius: 20px; | |
cursor: pointer; | |
font-size: 14px; | |
display: inline-block; | |
} | |
/* Suggestions container */ | |
#suggestions { | |
padding: 20px; | |
} | |
/* Style the avatar images if needed */ | |
.gr-chatbot .gr-chatbot-avatar-image { | |
border-radius: 50%; | |
} | |
/* Style for the chatbot avatar */ | |
.gr-chatbot .bot .gr-chatbot-avatar-image { | |
background-image: url('/content/drive/MyDrive/img/ALOQAS logo.png'); | |
} | |
/* Style for the user avatar */ | |
.gr-chatbot .user .gr-chatbot-avatar-image { | |
background-image: url('/content/drive/MyDrive/img/pp discord copie.png'); | |
} | |
/* Additional CSS for layout adjustments */ | |
#header { | |
display: flex; | |
flex-direction: column; | |
max-width: 100%; /* Ensure maximum width */ | |
gap: 20px; | |
justify-content: center; | |
align-items: center; | |
margin: 0 auto; /* Center the chat interface */ | |
} | |
#main-title { | |
font-size: 2.5em; | |
margin-bottom: 0.5em; | |
color: #ffffff; | |
} | |
#sub-title { | |
font-size: 1.5em; | |
margin-bottom: 1em; | |
color: #ffffff; | |
} | |
/* Adjust the chat interface to not grow beyond its container */ | |
#chat-interface { | |
flex: 1; | |
overflow: auto; /* Add scrolling to the chat interface if needed */ | |
} | |
.logo { | |
width: 150px; /* Width of the logo */ | |
height: 150px; /* Height of the logo, should be equal to width for a perfect circle */ | |
background-image: url('https://github.com/LucasAguetai/ALOQAS/blob/main/Ressources/Gif%20Aloqas%20Logo.gif?raw=true'); | |
background-size: cover; /* Cover the entire area of the div without stretching */ | |
background-position: center; /* Center the background image within the div */ | |
border-radius: 50%; /* This will make it circular */ | |
display: inline-block; /* Allows the div to be inline with text and other inline elements */ | |
margin-bottom: 1em; /* Space below the logo */ | |
} | |
.message{ | |
max-width: 50% !important; | |
} | |
.pending{ | |
max-width: 100% !important; | |
} | |
#input-area > *{ | |
padding: 0px; | |
border: 3px solid #627385; | |
} | |
#input-area > * > *{ | |
padding: 0px; | |
background-color: #091E37 !important; | |
} | |
#input-area > * * { | |
border-radius: 0px !important; | |
} | |
.dark{ | |
--background-fill-primary: #091E37 !important; | |
} | |
.send{ | |
max-width: 10px; | |
background-color: #627385 !important; | |
} | |
""" | |
import gradio as gr | |
theme = gr.themes.Base(primary_hue="slate") | |
suggestion = [ | |
"What are the latest advancements in cancer research ?", | |
"What is the impact of diet on heart disease according to recent studies ?", | |
"What are the usual causes of lung diseases ?" | |
] | |
def respond(message, chat_history): | |
response = generate_text(message) | |
chat_history.append((message,response+".")) | |
return "",chat_history | |
def suggestion1(chat_history): | |
response = generate_text(suggestion[0]) | |
chat_history.append((suggestion[0], response+".")) | |
return chat_history | |
def suggestion2(chat_history): | |
response = generate_text(suggestion[1]) | |
chat_history.append((suggestion[1], response+".")) | |
return chat_history | |
def suggestion3(chat_history): | |
response = generate_text(suggestion[2]) | |
chat_history.append((suggestion[2], response+".")) | |
return chat_history | |
""" | |
chat_history.append((None, suggestion[2])) | |
chat_history.append((response, None)) | |
""" | |
user_profile_image = "https://huggingface.co/spaces/ALOQAS/aloqas-gradio/resolve/main/img/user.png" | |
bot_profile_image = "https://huggingface.co/spaces/ALOQAS/aloqas-gradio/resolve/main/img/bot.png" | |
#theme=theme, css=css | |
with gr.Blocks(theme=theme, css=css) as demo: # Suppression de 'css=css' si 'css' n'est pas défini | |
gr.Markdown(""" | |
<div id='header'> | |
<h1 id='main-title'>ALOQAS</h1> | |
<div class='logo'></div> | |
</div> | |
""") | |
with gr.Column(elem_id="chat-interface"): | |
chat = gr.Chatbot( | |
elem_id="chat-messages", | |
show_label=False, | |
avatar_images=[user_profile_image,bot_profile_image], | |
value=[[None,"Hi there ! I'm ALOQAS, a chatbot trained on over 119.000 PubMed scientific papers. Ask me anything about medicine or scientific research !"]] | |
) | |
with gr.Row(elem_id="suggestions"): | |
sugg1 = gr.Button(suggestion[0], elem_classes="suggestion-btn").click( | |
suggestion1, inputs=[chat], outputs=[chat] | |
) | |
sugg2 = gr.Button(suggestion[1], elem_classes="suggestion-btn").click( | |
suggestion2, inputs=[chat], outputs=[chat] | |
) | |
sugg3 = gr.Button(suggestion[2], elem_classes="suggestion-btn").click( | |
suggestion3, inputs=[chat], outputs=[chat] | |
) | |
with gr.Row(elem_id="input-area"): | |
text_input = gr.Textbox(placeholder="Type a question, a sentence or keywords to ALOQAS...", show_label=False) | |
text_input.submit(respond, inputs=[text_input, chat], outputs=[text_input,chat]) | |
demo.launch(share=False) |