vithacocf commited on
Commit
8b900d9
·
verified ·
1 Parent(s): c95d67c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -53
app.py CHANGED
@@ -3,20 +3,13 @@ import tempfile
3
  import json
4
  import re
5
  import gradio as gr
6
- # import google.generativeai as genai # Layton Luan - edit
7
- from google import genai # Layton Luan - edit
8
 
9
- # ==== DEBUG VERSION ====
10
  print("Google Generative AI SDK version:", genai.__version__)
11
 
12
- # ==== API KEY ROTATION ====
13
- # API_KEYS = [
14
- # "AIzaSyAzoMIf_QK4piBlu779vxBo_CnNb6YH2Cc",
15
- # "AIzaSyAyaOfYKS3b4Em0HmTOi0aLjumrXsURi80",
16
- # "AIzaSyAjxoDOuio_Q30ErOk6gDx9S1zQVGDzGkw"
17
- # ]
18
- API_KEYS = ["AIzaSyBAZ1Zm2KCZHlmVKPgVf2Cch0c-0YJfJVg"
19
- ]
20
 
21
  key_index = 0
22
  def get_next_key():
@@ -25,6 +18,7 @@ def get_next_key():
25
  key_index += 1
26
  return key
27
 
 
28
  # ==== JSON EXTRACTION ====
29
  def extract_json(text):
30
  match = re.search(r"```json\s*(.*?)\s*```", text, re.IGNORECASE | re.DOTALL)
@@ -44,6 +38,7 @@ def extract_json(text):
44
  pass
45
  return {"raw_response": text}
46
 
 
47
  # ==== MAIN PROCESS ====
48
  def process_image(image, prompt):
49
  temp_file = None
@@ -53,21 +48,19 @@ def process_image(image, prompt):
53
  print(f"Received image: {type(image)}")
54
  print(f"Received prompt: {prompt}")
55
 
56
- # === API key rotation ===
57
  api_key = get_next_key()
58
 
59
- # Layton Luan - edit
60
- # genai.configure(api_key=api_key)
61
  client = genai.Client(api_key=api_key)
62
 
63
- # === Ensure RAG store exists ===
64
  RAG_STORE_NAME = "default_rag_store"
65
  try:
66
  genai.create_rag_store(name=RAG_STORE_NAME)
67
  except Exception as e:
68
- print(f"(Info) RAG store may already exist: {e}")
69
 
70
- # === Create temp file ===
71
  with tempfile.NamedTemporaryFile(delete=False, suffix=".png") as tmp:
72
  if hasattr(image, "save"):
73
  image.save(tmp.name)
@@ -77,60 +70,47 @@ def process_image(image, prompt):
77
  else:
78
  raise ValueError(f"Unsupported image type: {type(image)}")
79
  temp_file = tmp.name
80
- print(f"Created temp file: {temp_file}")
81
 
82
- # === Upload to Gemini with RAG ===
83
-
84
- # Layton Luan - edit
85
- # uploaded_file = genai.upload_file(
86
- # path=temp_file,
87
- # display_name=os.path.basename(temp_file),
88
- # mime_type="image/png",
89
- # rag_store_name=RAG_STORE_NAME, # ✅ thêm dòng này
90
- # )
91
  uploaded_file = client.files.upload(file=temp_file)
92
- print(f"Uploaded to Gemini RAG store: {uploaded_file.name}")
93
-
94
- # === Create model ===
95
- # Layton Luan - edit
96
- # model = genai.GenerativeModel("gemini-2.5-flash")
97
 
98
- # === Generate content using RAG context ===
 
 
 
 
99
 
100
- # Layton Luan - edit
101
- # response = model.generate_content(
102
- # [prompt],
103
- # request_options={"rag_store_name": RAG_STORE_NAME}, # ✅ cho phép truy vấn dựa theo store
104
- # )
105
- response = client.models.generate_content(
106
- model='gemini-2.0-flash',
107
  contents=[
108
- [prompt],
109
- # request_options={"rag_store_name": RAG_STORE_NAME}, # ✅ cho phép truy vấn dựa theo store
110
- uploaded_file
111
- ]
 
 
112
  )
113
-
114
- print(f"Got response: {response.text[:200]}...")
115
 
116
- result = extract_json(response.text)
117
- return result
 
118
 
119
  except Exception as e:
120
- print(f"Error: {e}")
121
  import traceback; traceback.print_exc()
122
  return {"error": str(e)}
123
 
124
  finally:
125
  if temp_file and os.path.exists(temp_file):
126
  os.remove(temp_file)
127
- print(f"Cleaned temp file: {temp_file}")
128
  if uploaded_file:
129
  try:
130
  genai.delete_file(uploaded_file.name)
131
- print(f"Deleted from Gemini: {uploaded_file.name}")
132
- except Exception as del_err:
133
- print(f"Warning: Could not delete file: {del_err}")
134
 
135
  # ==== GRADIO UI ====
136
  demo = gr.Interface(
 
3
  import json
4
  import re
5
  import gradio as gr
6
+ from google import genai
 
7
 
 
8
  print("Google Generative AI SDK version:", genai.__version__)
9
 
10
+ API_KEYS = [
11
+ "AIzaSyBAZ1Zm2KCZHlmVKPgVf2Cch0c-0YJfJVg"
12
+ ]
 
 
 
 
 
13
 
14
  key_index = 0
15
  def get_next_key():
 
18
  key_index += 1
19
  return key
20
 
21
+
22
  # ==== JSON EXTRACTION ====
23
  def extract_json(text):
24
  match = re.search(r"```json\s*(.*?)\s*```", text, re.IGNORECASE | re.DOTALL)
 
38
  pass
39
  return {"raw_response": text}
40
 
41
+
42
  # ==== MAIN PROCESS ====
43
  def process_image(image, prompt):
44
  temp_file = None
 
48
  print(f"Received image: {type(image)}")
49
  print(f"Received prompt: {prompt}")
50
 
 
51
  api_key = get_next_key()
52
 
53
+ # INIT CLIENT
 
54
  client = genai.Client(api_key=api_key)
55
 
56
+ # Create RAG store
57
  RAG_STORE_NAME = "default_rag_store"
58
  try:
59
  genai.create_rag_store(name=RAG_STORE_NAME)
60
  except Exception as e:
61
+ print("(Info) RAG store exists:", e)
62
 
63
+ # Create temp file
64
  with tempfile.NamedTemporaryFile(delete=False, suffix=".png") as tmp:
65
  if hasattr(image, "save"):
66
  image.save(tmp.name)
 
70
  else:
71
  raise ValueError(f"Unsupported image type: {type(image)}")
72
  temp_file = tmp.name
73
+ print("Temp file:", temp_file)
74
 
75
+ # Upload file
 
 
 
 
 
 
 
 
76
  uploaded_file = client.files.upload(file=temp_file)
77
+ print("Uploaded:", uploaded_file.name)
 
 
 
 
78
 
79
+ # === CREATE MODEL USING genai.GenerativeModel ====
80
+ model = genai.GenerativeModel(
81
+ "gemini-2.0-flash",
82
+ client=client
83
+ )
84
 
85
+ # === GENERATE CONTENT ====
86
+ response = model.generate_content(
 
 
 
 
 
87
  contents=[
88
+ prompt,
89
+ uploaded_file # file reference
90
+ ],
91
+ request_options={
92
+ "temperature": 0.2
93
+ }
94
  )
 
 
95
 
96
+ print("Raw response:", response.text[:200], "...")
97
+
98
+ return extract_json(response.text)
99
 
100
  except Exception as e:
101
+ print("Error:", e)
102
  import traceback; traceback.print_exc()
103
  return {"error": str(e)}
104
 
105
  finally:
106
  if temp_file and os.path.exists(temp_file):
107
  os.remove(temp_file)
 
108
  if uploaded_file:
109
  try:
110
  genai.delete_file(uploaded_file.name)
111
+ except:
112
+ pass
113
+
114
 
115
  # ==== GRADIO UI ====
116
  demo = gr.Interface(