Mubin1917's picture
Update Jul 25
dd41bc7
raw
history blame
No virus
3.83 kB
import os
import openai
import gradio as gr
from youtube_transcript_api import YouTubeTranscriptApi
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor
from langchain.memory import ConversationBufferWindowMemory
from FC_tool_main import YouTubeAgent, set_temperature
import logging
logging.getLogger().setLevel(logging.ERROR)
import warnings
warnings.filterwarnings("ignore")
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
openai.api_key = os.environ['OPENAI_API_KEY']
class ChatBot:
def __init__(self):
self.youtube_agent = YouTubeAgent()
def chat(self, message, history, temperature):
try:
# Set the temperature using the function from FCnew18thJul.py
set_temperature(temperature)
# Reinitialize the agent to use the new temperature
self.youtube_agent = YouTubeAgent()
response = self.youtube_agent.invoke(message)
return response
except Exception as e:
return f"An error occurred: {str(e)}"
chatbot = ChatBot() # Create an instance of ChatBot
def user_message(message, history):
return "", history + [[message, None]]
def bot_message(history, temperature):
user_message = history[-1][0]
bot_response = chatbot.chat(user_message, history, temperature)
history[-1][1] = bot_response
return history
def use_example(example, text_input):
return example
# Example messages
example_messages = [
"What tools are available for use?",
"What is the following video about? https://www.youtube.com/watch?v=dZxbVGhpEkI",
"Can you summarize this video? https://www.youtube.com/watch?v=hM8unyUM6KA",
"Extract the main points from this video: https://www.youtube.com/watch?v=UF8uR6Z6KLc",
"What are the main challenges discussed in the video? https://www.youtube.com/watch?v=-OSxeoIAs2w&t=4262s",
"What is the speakers name in this video? dZxbVGhpEkI"
]
with gr.Blocks() as demo:
gr.Markdown("""
# Chat with YouTube Videos
This application provides a comprehensive set of tools for analyzing YouTube videos,
extracting information, and answering questions based on video content. It leverages
the LangChain library for natural language processing tasks and the YouTube Transcript
API for fetching video transcripts.
Key Features:
- Main points formatted as youtube comment with clickable timestamps
- Question answering based on video content
Simply enter your question or request along with a YouTube video link, and the AI will process and respond accordingly.
Adjust the temperature slider to control the creativity of the AI's responses.
""")
temperature_slider = gr.Slider(minimum=0, maximum=1, step=0.1, label="Temperature", value=0)
chatbot_interface = gr.Chatbot(show_copy_button=True)
msg = gr.Textbox(label="Message")
with gr.Row():
submit_btn = gr.Button("Submit")
clear_btn = gr.Button("Clear")
gr.Markdown("## Example Messages")
example_btns = [gr.Button(i) for i in example_messages]
submit_btn.click(user_message, [msg, chatbot_interface], [msg, chatbot_interface], queue=False).then(
bot_message, [chatbot_interface, temperature_slider], chatbot_interface
)
msg.submit(user_message, [msg, chatbot_interface], [msg, chatbot_interface], queue=False).then(
bot_message, [chatbot_interface, temperature_slider], chatbot_interface
)
clear_btn.click(lambda: None, None, chatbot_interface, queue=False)
for btn, example in zip(example_btns, example_messages):
btn.click(use_example, inputs=[gr.Textbox(value=example, visible=False)], outputs=msg)
if __name__ == "__main__":
demo.launch()