File size: 1,232 Bytes
3e2f324
 
 
 
 
b110be1
3e2f324
19599cb
3e2f324
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18084d4
54a969c
b110be1
3e2f324
 
 
 
 
 
18084d4
3e2f324
 
 
 
 
 
 
 
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
from langchain.llms import HuggingFacePipeline
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline, AutoModelForSeq2SeqLM

from components import caption_chain, tag_chain
from components import pexels, utils
import os
import gradio as gr

model = AutoModelForSeq2SeqLM.from_pretrained("declare-lab/flan-alpaca-gpt4-xl")
tokenizer = AutoTokenizer.from_pretrained("declare-lab/flan-alpaca-gpt4-xl")

pipe = pipeline(
    'text2text-generation',
    model=model,
    tokenizer= tokenizer,
    max_length=120
)

local_llm = HuggingFacePipeline(pipeline=pipe)

llm_chain = caption_chain.chain(llm=local_llm)
sum_llm_chain = tag_chain.chain(llm=local_llm)

pexels_api_key = os.getenv('pexels_api_key')

def pred(query):
    folder_name, sentences = pexels.generate_videos(query, pexel_api_key, 1920, 1080, llm_chain, sum_llm_chain)
    utils.combine_videos(folder_name)
    return {
        'video':folder_name, 
        'captions':sentences.join("\n")
    }

with gr.Blocks() as demo:
    textbox = gr.Textbox(placeholder="Product Name")
    captions = gr.Textbox()
    video = gr.Video()
    btn = gr.Button("Submit")
    btn.click(pred, inputs=textbox, outputs=[captions,video])
    
    

demo.launch()