|
import gradio as gr |
|
import google.generativeai as genai |
|
|
|
|
|
import os |
|
token=os.environ.get("TOKEN") |
|
genai.configure(api_key=token) |
|
|
|
safety_settings = [ |
|
{ |
|
"category": "HARM_CATEGORY_HARASSMENT", |
|
"threshold": "BLOCK_NONE", |
|
}, |
|
{ |
|
"category": "HARM_CATEGORY_HATE_SPEECH", |
|
"threshold": "BLOCK_NONE", |
|
}, |
|
{ |
|
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", |
|
"threshold": "BLOCK_NONE", |
|
}, |
|
{ |
|
"category": "HARM_CATEGORY_DANGEROUS_CONTENT", |
|
"threshold": "BLOCK_NONE", |
|
}, |
|
] |
|
|
|
def describe_video(pp,video_file): |
|
try: |
|
|
|
print(f"Uploading file...") |
|
|
|
url ="https://youtu.be/zfV-IOn7ouI?si=GWn8WyWLUe178L--" |
|
uploaded_video = genai.upload_file(path=url) |
|
|
|
print(f"Completed upload: {uploaded_video.uri}") |
|
|
|
import time |
|
|
|
while uploaded_video.state.name == "PROCESSING": |
|
print("Waiting for video to be processed.") |
|
time.sleep(10) |
|
uploaded_video = genai.get_file(uploaded_video.name) |
|
|
|
if uploaded_video.state.name == "FAILED": |
|
raise ValueError(uploaded_video.state.name) |
|
print(f"Video processing complete: " + uploaded_video.uri) |
|
|
|
prompt = pp |
|
|
|
|
|
model = genai.GenerativeModel(model_name="models/gemini-1.5-flash-latest",safety_settings=safety_settings) |
|
|
|
print("Making LLM inference request...") |
|
response = model.generate_content( |
|
[prompt, uploaded_video], request_options={"timeout": 600} |
|
) |
|
print(response.text) |
|
|
|
genai.delete_file(uploaded_video.name) |
|
print(f"Deleted file {uploaded_video.uri}") |
|
|
|
return response.text |
|
except Exception as e: |
|
return f"An error occurred: {e}" |
|
|
|
|
|
|
|
iface = gr.Interface( |
|
fn=describe_video, |
|
inputs=[gr.Textbox(label="Question:", lines=3) ,gr.Video()], |
|
outputs=gr.Textbox(), |
|
title="y Video.", |
|
description="Pose des questions sur la vidéo et obtient une réponse.", |
|
) |
|
|
|
|
|
iface.launch() |