archivartaunik commited on
Commit
231330b
·
verified ·
1 Parent(s): cae681c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -19
app.py CHANGED
@@ -8,7 +8,7 @@
8
  # - VOCHI_BASE_URL (e.g. https://crm.vochi.by/api)
9
  # - VOCHI_CLIENT_ID (client id string)
10
  # - GOOGLE_API_KEY (Gemini API key)
11
- # 5) (Optional) If you prefer, you can also paste your Gemini key in the UI.
12
  #
13
  # requirements.txt (copy these lines into a separate file):
14
  # -----------------------------------------------------------------------------
@@ -245,7 +245,7 @@ def ui_toggle_custom_prompt(template_key: str):
245
  return gr.update(visible=(template_key == "custom"))
246
 
247
 
248
- def ui_analyze(selected_idx: Optional[int], df: pd.DataFrame, api_key_in: str,
249
  template_key: str, custom_prompt: str, lang_code: str, model_pref: str):
250
  if df is None or df.empty or selected_idx is None:
251
  return "Спачатку атрымаць спіс, выбраць званок і (пры патрэбе) націснуць “🎧 Прайграць”."
@@ -267,9 +267,9 @@ def ui_analyze(selected_idx: Optional[int], df: pd.DataFrame, api_key_in: str,
267
  except Exception as e:
268
  return f"Не атрымалася атрымаць аўдыё для аналізу: {e}"
269
 
270
- api_key = (api_key_in or os.environ.get("GOOGLE_API_KEY", "")).strip()
271
  if not api_key:
272
- return "Увядзіце Gemini API key у полі або дадайце GOOGLE_API_KEY у Secrets Space."
273
 
274
  try:
275
  client = genai.Client(api_key=api_key)
@@ -293,17 +293,9 @@ def ui_analyze(selected_idx: Optional[int], df: pd.DataFrame, api_key_in: str,
293
 
294
  # Call model
295
  try:
296
- resp = client.models.generate_content(
297
- model=model_name,
298
- contents=[uploaded_file, prompt],
299
- system_instruction=sys_inst,
300
- )
301
  text = getattr(resp, "text", None)
302
- if not text:
303
- # Fallback: inline the system instruction
304
- merged = f"[SYSTEM INSTRUCTION: {sys_inst}]\n\n" + prompt
305
- resp = client.models.generate_content(model=model_name, contents=[uploaded_file, merged])
306
- text = getattr(resp, "text", None)
307
  if not text:
308
  return "Аналіз завершаны без тэкставага адказу. Праверце налады мадэлі і фармат файла."
309
  return f"### Вынік аналізу\n\n{text}"
@@ -337,7 +329,7 @@ with gr.Blocks(title="Vochi CRM + Gemini (Gradio)") as demo:
337
  # Vochi CRM → MP3 → Gemini аналіз
338
  *Атрымаць званкі за дзень, прайграць/скачаць MP3 і прааналізаваць званок мадэллю Google Gemini.*
339
 
340
- **Парады бяспекі:** Захоўвайце ключ Gemini у Secrets Space (`GOOGLE_API_KEY`). Калі патрэбна, можна ўвесці яго ніжэй (ключ будзе выкарыстоўвацца толькі ў гэтай сесіі).
341
  """
342
  )
343
 
@@ -355,8 +347,7 @@ with gr.Blocks(title="Vochi CRM + Gemini (Gradio)") as demo:
355
  file_out = gr.File(label="MP3 для сцягвання")
356
  status_fetch = gr.Markdown()
357
 
358
- with gr.Tab("AI Analysis (Gemini)"):
359
- api_key_tb = gr.Textbox(label="Gemini API Key (неабавязкова, калі ў Secrets)", value=os.environ.get("GOOGLE_API_KEY", ""), type="password")
360
  with gr.Row():
361
  tpl_dd = gr.Dropdown(choices=TPL_OPTIONS, value="simple", label="Шаблон")
362
  lang_dd = gr.Dropdown(choices=LANG_OPTIONS, value="default", label="Мова")
@@ -371,7 +362,7 @@ with gr.Blocks(title="Vochi CRM + Gemini (Gradio)") as demo:
371
  tpl_dd.change(ui_toggle_custom_prompt, inputs=[tpl_dd], outputs=[custom_prompt_tb])
372
  analyze_btn.click(
373
  ui_analyze,
374
- inputs=[row_dd, calls_df, api_key_tb, tpl_dd, custom_prompt_tb, lang_dd, model_dd],
375
  outputs=[analysis_md],
376
  )
377
 
@@ -379,4 +370,3 @@ with gr.Blocks(title="Vochi CRM + Gemini (Gradio)") as demo:
379
  if __name__ == "__main__":
380
  # On HF Spaces, just running this file is enough; launch() is fine for local dev, too.
381
  demo.launch()
382
-
 
8
  # - VOCHI_BASE_URL (e.g. https://crm.vochi.by/api)
9
  # - VOCHI_CLIENT_ID (client id string)
10
  # - GOOGLE_API_KEY (Gemini API key)
11
+ # 5) Tokens/keys are NEVER accepted via UI; the app reads ONLY from Space Secrets.
12
  #
13
  # requirements.txt (copy these lines into a separate file):
14
  # -----------------------------------------------------------------------------
 
245
  return gr.update(visible=(template_key == "custom"))
246
 
247
 
248
+ def ui_analyze(selected_idx: Optional[int], df: pd.DataFrame,
249
  template_key: str, custom_prompt: str, lang_code: str, model_pref: str):
250
  if df is None or df.empty or selected_idx is None:
251
  return "Спачатку атрымаць спіс, выбраць званок і (пры патрэбе) націснуць “🎧 Прайграць”."
 
267
  except Exception as e:
268
  return f"Не атрымалася атрымаць аўдыё для аналізу: {e}"
269
 
270
+ api_key = os.environ.get("GOOGLE_API_KEY", "").strip()
271
  if not api_key:
272
+ return "GOOGLE_API_KEY не зададзены ў Secrets Space. Дадай яго ў Settings → Secrets і перазапусці Space."
273
 
274
  try:
275
  client = genai.Client(api_key=api_key)
 
293
 
294
  # Call model
295
  try:
296
+ merged = f"[SYSTEM INSTRUCTION: {sys_inst}]\n\n{prompt}"
297
+ resp = client.models.generate_content(model=model_name, contents=[uploaded_file, merged])
 
 
 
298
  text = getattr(resp, "text", None)
 
 
 
 
 
299
  if not text:
300
  return "Аналіз завершаны без тэкставага адказу. Праверце налады мадэлі і фармат файла."
301
  return f"### Вынік аналізу\n\n{text}"
 
329
  # Vochi CRM → MP3 → Gemini аналіз
330
  *Атрымаць званкі за дзень, прайграць/скачаць MP3 і прааналізаваць званок мадэллю Google Gemini.*
331
 
332
+ **Парады бяспекі:** Ключы і токены прымаюцца ТОЛЬКІ з Secrets Space (`GOOGLE_API_KEY`). Увод праз UI адключаны.
333
  """
334
  )
335
 
 
347
  file_out = gr.File(label="MP3 для сцягвання")
348
  status_fetch = gr.Markdown()
349
 
350
+ with gr.Tab("AI Analysis (Gemini)"):", value=os.environ.get("GOOGLE_API_KEY", ""), type="password")
 
351
  with gr.Row():
352
  tpl_dd = gr.Dropdown(choices=TPL_OPTIONS, value="simple", label="Шаблон")
353
  lang_dd = gr.Dropdown(choices=LANG_OPTIONS, value="default", label="Мова")
 
362
  tpl_dd.change(ui_toggle_custom_prompt, inputs=[tpl_dd], outputs=[custom_prompt_tb])
363
  analyze_btn.click(
364
  ui_analyze,
365
+ inputs=[row_dd, calls_df, tpl_dd, custom_prompt_tb, lang_dd, model_dd],
366
  outputs=[analysis_md],
367
  )
368
 
 
370
  if __name__ == "__main__":
371
  # On HF Spaces, just running this file is enough; launch() is fine for local dev, too.
372
  demo.launch()