Rahatara commited on
Commit
575ff46
·
verified ·
1 Parent(s): 5e299d9

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -71
app.py DELETED
@@ -1,71 +0,0 @@
1
- import os
2
- import time
3
- import mimetypes
4
- import google.generativeai as genai
5
- import gradio as gr
6
-
7
- # Configure the Gemini API
8
- genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
9
-
10
- def upload_to_gemini(file_path, mime_type=None):
11
- """Uploads the given file to Gemini, returning the URI for use in chat."""
12
- file = genai.upload_file(file_path, mime_type=mime_type)
13
- print(f"Uploaded file '{file.display_name}' as: {file.uri}")
14
- return file.uri
15
-
16
- def wait_for_files_active(file_uris):
17
- """Ensure all files are processed and ready for use."""
18
- print("Waiting for file processing...")
19
- for uri in file_uris:
20
- while True:
21
- file = genai.get_file(uri)
22
- if file.state.name == "ACTIVE":
23
- print("File ready.")
24
- break
25
- elif file.state.name == "FAILED":
26
- raise Exception(f"File {uri} failed to process")
27
- time.sleep(10)
28
-
29
- def handle_files(files):
30
- """Handle file uploads, process them, and interact with Gemini API."""
31
- # Save uploaded files locally
32
- saved_files = []
33
- for file in files:
34
- local_path = f"/tmp/{file.name}"
35
- with open(local_path, "wb") as f:
36
- f.write(file.read())
37
- saved_files.append((local_path, mimetypes.guess_type(local_path)[0]))
38
-
39
- # Upload files to Gemini and wait for them to be ready
40
- file_uris = [upload_to_gemini(path, mime_type) for path, mime_type in saved_files]
41
- wait_for_files_active(file_uris)
42
-
43
- # Start a chat session with uploaded files
44
- model = genai.GenerativeModel(
45
- model_name="gemini-2.0-flash-exp",
46
- generation_config={
47
- "temperature": 0.4,
48
- "top_p": 0.95,
49
- "top_k": 40,
50
- "max_output_tokens": 8192,
51
- "response_mime_type": "text/plain",
52
- }
53
- )
54
- chat_session = model.start_chat(history=[{"role": "user", "parts": [{"file_uri": uri} for uri in file_uris]}])
55
- response = chat_session.send_message("Describe the contents.")
56
- return response.text
57
-
58
- def gradio_interface():
59
- """Setup Gradio UI for file uploads and processing."""
60
- with gr.Blocks() as app:
61
- with gr.Row():
62
- file_input = gr.File(label="Upload files", file_types=[".pdf", ".png", ".jpg", ".mp3", ".mp4"], multiple=True)
63
- submit_button = gr.Button("Submit")
64
- output = gr.Textbox(label="Response from Gemini")
65
-
66
- submit_button.click(fn=handle_files, inputs=[file_input], outputs=[output])
67
-
68
- return app
69
-
70
- app = gradio_interface()
71
- app.launch()