File size: 2,759 Bytes
b33089c
2eae17f
2b89dc1
 
 
b33089c
 
3d48fe6
2b89dc1
 
 
 
 
 
 
 
 
 
9ed131e
2502582
9e41a60
2502582
9ed131e
b33089c
2b89dc1
8fd5a3e
 
2b89dc1
b33089c
2b89dc1
b33089c
2b89dc1
 
 
 
 
b33089c
 
 
989332e
 
b33089c
2b89dc1
b33089c
471d274
b33089c
 
 
 
b54fbdc
de997fa
 
 
b33089c
 
 
 
 
de997fa
2b89dc1
 
b33089c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import os 
import time
import gradio as gr
import logging
from youtube_transcript_api import YouTubeTranscriptApi
from langchain.docstore.document import Document
from langchain_groq import ChatGroq
import chatops 

logger = logging.getLogger(__name__)

DEVICE = 'cpu'
MAX_NEW_TOKENS = 4096
DEFAULT_TEMPERATURE = 0.1
DEFAULT_MAX_NEW_TOKENS = 2048
MAX_INPUT_TOKEN_LENGTH = 4000
DEFAULT_CHAR_LENGTH = 1000

EXAMPLES = ["https://www.youtube.com/watch?v=aircAruvnKk&ab_channel=3Blue1Brown",
            "https://www.youtube.com/watch?v=Ilg3gGewQ5U",
            "https://www.youtube.com/watch?v=WUvTyaaNkzM"
            ]

llm = None

def clear_chat():
    return []

def youtube_link_dataloader(video_link,max_video_length=1000):
    video_text = ""
    meta_data = {"source": f"{video_link}"} 
    video_id = video_link.split("watch?v=")[1].split("&")[0]
    srt = YouTubeTranscriptApi.get_transcript(video_id)
    for text_data in srt:
        video_text = video_text + " " + text_data.get("text")
    if len(video_text) > max_video_length:
        video_text = video_text[0:max_video_length]
    document = [Document(page_content= video_text, metadata= meta_data)]
    return document


def youtube_chat(temperature=0.1,max_tokens=1096,API_key=None,llm_service='mistralai/Mistral-7B-v0.1',youtube_link=None,char_length=2000):
    
    document  = youtube_link_dataloader(link=youtube_link,char_length=char_length)
    print("docuemt:",document)
    
    if  llm_service== 'mistralai/Mistral-7B-v0.1':
        llm = chatops.get_hugging_face_model(
                            model_id="mistralai/Mistral-7B-v0.1",
                            API_key=API_key,
                            temperature=temperature,
                            max_tokens=max_tokens
                            )
    elif llm_service == 'OpenAI':
        llm = chatops.get_openai_chat_model(API_key=API_key)
    elif llm_service == 'llama':
        os.environ["GROQ_API_KEY"] = API_key
        llm = ChatGroq(model="llama3-8b-8192")

    return "Youtube link Processing completed ..."

iface = gr.Interface(
    fn = youtube_chat,
    inputs = [
        gr.Slider(0.01, 0.1, value=0.01, step=0.01 , label="temperature", info="Choose between 0.01 to 0.1"),
        gr.Slider(512,MAX_INPUT_TOKEN_LENGTH,value=1024,step=512,label="max new tokens",info='Max new tokens'),
        gr.Textbox(label="Add API key", type="password"),
        gr.Dropdown(['mistralai/Mistral-7B-v0.1','llama3-8b-8192'],label='Large Language Model',info='LLM Service'),
        gr.Textbox(label='You tube link'),
        gr.Slider(1000,5000,label="Video link Length in seconds",info="Length of video in seconds")
    ],
    outputs="text",
    description ="Summarize your You tube link ",
)

iface.launch()