Spaces:
Runtime error
Runtime error
import gradio as gr | |
import os | |
from gcp import download_credentials | |
from utils import make_invisible, make_visible, create_folders | |
from backend_functions import get_answer, init_greeting, export_dataframe | |
from dotenv import load_dotenv | |
load_dotenv() | |
download_credentials() | |
create_folders() | |
with gr.Blocks() as main_app: | |
with gr.Tab('Chatbot'): | |
user_id = gr.State('') # id used to find the chat into the database | |
with gr.Column(): | |
with gr.Row(): | |
chat = gr.Chatbot(label="Chatbot Crunchyroll") | |
output_video = gr.Video(interactive=False, label='Video', autoplay=True, height=400) | |
with gr.Column(): | |
with gr.Row(): | |
options_audio = gr.Radio(["XTTS", "Elevenlabs"], value="Elevenlabs", label="Audio Generation") | |
options_prompt = gr.Radio(["Default", "Custom"], value="Default", label="Prompts") | |
output_audio = gr.Audio(interactive=False, label='Audio', autoplay=False) | |
messages = gr.State([]) | |
with gr.Row(): | |
text = gr.Textbox(label='Write your question') | |
with gr.Column(): | |
with gr.Row(): | |
button_text = gr.Button(value='Submit text') | |
clear_button = gr.ClearButton([chat, messages]) | |
with gr.Tab('Prompts'): | |
general_prompt = gr.Text( | |
placeholder='Ingrese el prompt general del bot', label='General prompt' | |
) | |
standalone_prompt = gr.Text( | |
placeholder='Ingrese el prompt usado para encontrar el contexto', label='Standalone prompt' | |
) | |
_ = gr.Markdown( | |
"```\n" | |
"Recuerde dejar estos formatos en los prompts: \n" | |
"----------------------- General --------------------------\n" | |
"=========\n" | |
"Contexto:\n" | |
"CONTEXTO\n" | |
"=========\n" | |
"\n" | |
"----------------------- Standalone -----------------------\n" | |
"You are a standalone question-maker. Given the following chat history and follow-up message, rephrase " | |
"the follow-up phrase to be a standalone question (sometimes the follow-up is not a question, so create " | |
"a standalone phrase), in spanish. In the standalone message you must include all the information at the " | |
"moment that is known about the customer, all the important nouns and what they are looking for. In cases " | |
"where you think is usefully, include what is the best recommendation for the customer. To give you " | |
"context, the conversation is about (INGRESE INFORMACIÓN DE LA MARCA, EL NOMBRE Y DE MANERA MUY GENERAL " | |
"QUE ES LO QUE VENDE).\n" | |
"There might be moments when there isn't a question in those cases return a standalone phrase: for example " | |
"if the user says 'hola' (or something similar) then the output would be 'el usuario está saludando', or " | |
"if the user says 'gracias' or 'es muy util' (or something similar) then the output would be a phrase " | |
"showing that the user is grateful and what they are grateful for, or if the user say 'si' then it would " | |
"be a phrase encapsulating the relationship to its previous question or phrase.\n" | |
"Your response cannot be more than 100 words.\n" | |
"Chat History:\n" | |
"\n" | |
"HISTORY\n" | |
"Follow-up message: QUESTION\n" | |
"Standalone message:\n", line_breaks=True | |
) | |
with gr.Tab('Times'): | |
columns = ["User Message", "Chatbot Response", "Standalone Question", "Create Embedding", "Query Pinecone", | |
"Context Prompt", "Final Response GPT", "Create Clean Message", "Create Audio", "Create Video", "Final Time"] | |
table_times = gr.DataFrame(headers=columns, visible=False, interactive=False) | |
with gr.Column(): | |
with gr.Row(visible=False) as row_export_csv: | |
export_button = gr.Button(value="Export CSV") | |
csv = gr.File(interactive=False, visible=False) | |
text.submit( | |
fn=get_answer, | |
inputs=[text, chat, messages, output_audio, output_video, table_times, options_audio, options_prompt, general_prompt, standalone_prompt], | |
outputs=[chat, output_audio, output_video, table_times] | |
).then( | |
lambda: None, None, [text] | |
).then( | |
fn=make_visible, | |
inputs=None, | |
outputs=row_export_csv | |
) | |
button_text.click( | |
fn=get_answer, | |
inputs=[text, chat, messages, output_audio, output_video, table_times, options_audio, options_prompt, general_prompt, standalone_prompt], | |
outputs=[chat, output_audio, output_video, table_times] | |
).then( | |
lambda: None, None, [text] | |
).then( | |
fn=make_visible, | |
inputs=None, | |
outputs=row_export_csv | |
) | |
export_button.click( | |
fn=export_dataframe, | |
inputs=table_times, | |
outputs=csv | |
) | |
main_app.load(init_greeting, inputs=[chat, messages], outputs=[chat, messages]) | |
main_app.launch(debug=True, auth=(os.environ.get('SPACE_USERNAME'), os.environ.get('SPACE_PASSWORD'))) |