File size: 1,934 Bytes
7d6d701
9621cc7
7d6d701
1ad0dcf
 
 
 
7d6d701
 
 
9ed9edc
7d6d701
9ed9edc
 
 
6b6cd79
7d6d701
21a5617
7d6d701
 
bef0bbf
341da3b
5f0430e
 
 
 
 
7d6d701
3e7c183
93ffb86
58981a1
 
 
7d6d701
 
 
9ed9edc
 
 
7d6d701
 
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
import gradio as gr
import shutil, openai, os

from langchain.document_loaders.generic import GenericLoader
from langchain.document_loaders.parsers import OpenAIWhisperParser
from langchain.document_loaders.blob_loaders.youtube_audio import YoutubeAudioLoader

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())

#openai.api_key = os.environ["OPENAI_API_KEY"]

def invoke(openai_api_key, youtube_url, prompt):
    openai.api_key = openai_api_key
    url = youtube_url
    save_dir = "docs/youtube/"
    loader = GenericLoader(
        YoutubeAudioLoader([url], save_dir),
        OpenAIWhisperParser()
    )
    docs = loader.load()
    shutil.rmtree(save_dir)
    content = docs[0].page_content
    #####
    #TODO
    #####
    return content

description = """The app demonstrates how to use a <strong>Large Language Model</strong> (LLM) with <strong>Retrieval Augmented Generation</strong> (RAG) on external data. 
                 Enter an OpenAI API key, YouTube URL (external data), and prompt to search the video, analyse its sentiment, summarize it, translate it, etc.\n\n
                 Implementation: <a href='https://www.gradio.app/'>Gradio</a> UI using <a href='https://platform.openai.com/'>OpenAI</a> API 
                 via AI-first toolkit <a href='https://www.langchain.com/'>LangChain</a> with foundation models 
                 <a href='https://openai.com/research/whisper'>Whisper</a> (speech to text) and <a href='https://openai.com/research/gpt-4'>GPT-4</a> (LLM use cases)."""

gr.close_all()
demo = gr.Interface(fn=invoke, 
                    inputs = [gr.Textbox(label = "OpenAI API Key", lines = 1), gr.Textbox(label = "YouTube URL", lines = 1), gr.Textbox(label = "Prompt", lines = 1)],
                    outputs = [gr.Textbox(label = "Completion", lines = 1)],
                    title = "Generative AI - RAG",
                    description = description)
demo.launch()