Spaces:
Runtime error
Runtime error
import os | |
from typing import List | |
import gradio as gr | |
from qa.manager import YoutubeQA | |
DESCRIPTION = """ | |
<h1> <center> 🤗 Hello. This App will help you do questions on youtube videos.</center> </h1> | |
<h4> | |
Follow these steps to use 😉: | |
</h4> | |
<ol> | |
<li>Set your OpenAI Key</li> | |
<li>Set your Youtube URL</li> | |
<li>Ask!</li> | |
</ol> | |
""" | |
qa = YoutubeQA() | |
def change_chat_mode(radio: str): | |
if radio == "conversational": | |
qa.change_chat_mode(radio) | |
def set_openai_key(key: str): | |
os.environ["OPENAI_API_KEY"] = key | |
# Set status field to Not Ready | |
return gr.update(lines=1, value="Not Ready 🥴") | |
def instanciate_retriver(url: str): | |
qa.load_model() | |
qa.load_vector_store(url) | |
qa.load_retriever() | |
# Set status field to Ready | |
return gr.update(lines=1, value="Ready 😎") | |
def respond(message: str, chat_history: List[str]): | |
bot_message = qa.run(message) | |
chat_history.append((message, bot_message)) | |
return "", chat_history | |
with gr.Blocks() as app: | |
gr.Markdown(DESCRIPTION) | |
with gr.Tab("QA"): | |
status = gr.Textbox(label="🤔 Vector DB Status:", interactive=False) | |
chatbot = gr.Chatbot(label="🤖 Bot Answer:") | |
question = gr.Textbox(label="🕵️♀️ Question:", placeholder="Write your question here and press enter") | |
clear = gr.Button("Clear") | |
question.submit(respond, [question, chatbot], [question, chatbot]) | |
clear.click(lambda: None, None, chatbot, queue=False) | |
with gr.Tab("Youtube URL"): | |
url = gr.Textbox(label="🎞️ URL:", lines=1, placeholder="Set your Youtube URL here...") | |
url_button = gr.Button("Set URL") | |
with gr.Tab("OpenAI Key"): | |
key = gr.Textbox(label="🔑 Key:", type="password", placeholder="Set your OpenAI Key here...") | |
key_button = gr.Button("Set Key") | |
with gr.Tab("Chat Mode (optional)"): | |
radio = gr.Radio( | |
["normal", "conversational"], | |
label="If conversational, history is kept in prompt", | |
value="normal" | |
) | |
radio.change(fn=change_chat_mode, inputs=radio, outputs=None) | |
with gr.Accordion("Click me. About this App"): | |
gr.Markdown("") | |
gr.Markdown("[](https://vilsonrodrigues.medium.com/chattube-chat-with-youtube-video-46a0bfc0a2e9)") | |
gr.Markdown("[](https://github.com/vilsonrodrigues/youtube-retrieval-qa)") | |
url_button.click(instanciate_retriver, inputs=url, outputs=status) | |
key_button.click(set_openai_key, inputs=key, outputs=status) | |
app.launch() |