benjamin5607 commited on
Commit
9972204
Β·
verified Β·
1 Parent(s): 0945ccb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -39
app.py CHANGED
@@ -2,57 +2,50 @@ import gradio as gr
2
  import google.generativeai as genai
3
  import edge_tts
4
  import os
5
- import re
6
 
7
  # 1. ꡬ글 API μ„€μ •
8
  GENAI_KEY = os.getenv("GEMINI_KEY")
9
  genai.configure(api_key=GENAI_KEY)
10
 
11
  # ==========================================
12
- # πŸ•΅οΈβ€β™‚οΈ [μƒμ‘΄μž 탐색] μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λΈ μžλ™ μ°ΎκΈ°
13
  # ==========================================
14
- def get_alive_model():
15
- print("πŸ“‘ ꡬ글 μ„œλ²„μ— 생쑴 λͺ¨λΈμ„ λ¬Έμ˜ν•©λ‹ˆλ‹€...")
16
- available_models = []
 
 
 
 
 
 
 
 
17
 
18
  try:
19
- # ꡬ글에 μžˆλŠ” λͺ¨λ“  λͺ¨λΈ 리슀트λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€.
20
- for m in genai.list_models():
21
- if 'generateContent' in m.supported_generation_methods:
22
- available_models.append(m.name)
23
 
24
- print(f"πŸ“‹ 발견된 λͺ¨λΈλ“€: {available_models}")
25
-
26
- # μš°μ„ μˆœμœ„: μ΅œμ‹  ν”Œλž˜μ‹œ -> ν”„λ‘œ -> λ ˆκ±°μ‹œ μˆœμ„œλ‘œ μ°ΎκΈ°
27
- # (λ¦¬λ”λ‹˜μ΄ λ§μ”€ν•˜μ‹  2.5, 3.0이 μžˆλ‹€λ©΄ μ—¬κΈ°μ„œ κ±Έλ¦½λ‹ˆλ‹€!)
28
- priority_keywords = [
29
- "gemini-2.0-flash",
30
- "gemini-1.5-flash",
31
- "gemini-1.5-pro",
32
- "gemini-pro"
33
- ]
34
-
35
- for keyword in priority_keywords:
36
- for model_name in available_models:
37
- if keyword in model_name:
38
- print(f"βœ… 생쑴 확인! [{model_name}] λͺ¨λΈμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.")
39
- return genai.GenerativeModel(model_name)
40
 
41
- # λ§Œμ•½ μš°μ„ μˆœμœ„μ— μ—†μœΌλ©΄, λͺ©λ‘μ˜ 첫 번째 gemini λͺ¨λΈμ„ μ”λ‹ˆλ‹€.
42
- fallback = [m for m in available_models if "gemini" in m][0]
43
- print(f"⚠️ μš°μ„ μˆœμœ„ λͺ¨λΈ μ—†μŒ. λŒ€μ²΄ λͺ¨λΈ [{fallback}] μ‚¬μš©.")
44
- return genai.GenerativeModel(fallback)
45
 
46
  except Exception as e:
47
- print(f"❌ λͺ¨λΈ 탐색 μ‹€νŒ¨: {str(e)}")
48
- # μ΅œν›„μ˜ μˆ˜λ‹¨: κ·Έλƒ₯ λ¬Έμžμ—΄λ‘œ 박아버리기 (Legacy)
49
- return genai.GenerativeModel("gemini-pro")
50
 
51
- # μ„œλ²„ 켜질 λ•Œ λ”± ν•œ 번 μ‹€ν–‰ν•΄μ„œ λͺ¨λΈμ„ ν™•μ •ν•©λ‹ˆλ‹€.
52
- model = get_alive_model()
53
 
54
  # ==========================================
55
- # 2. 멀버 데이터 (λ³€κ²½ μ—†μŒ)
56
  # ==========================================
57
  MEMBERS = {
58
  "μ„œμœ€ (Korea)": {
@@ -107,12 +100,11 @@ async def band_consulting(user_input, member_name):
107
  chat_prompt = f"{member['prompt']}\n\nUser's Error/Worry: {user_input}\nResponse:"
108
 
109
  try:
110
- # ν™•μ •λœ λͺ¨λΈλ‘œ 생성 μ‹œλ„
111
  response = model.generate_content(chat_prompt)
112
  ai_text = response.text
113
  except Exception as e:
114
- # λͺ¨λΈμ΄ μžˆμ–΄λ„ Quota(ν•œλ„) μ—λŸ¬κ°€ λ‚  수 있음 -> μ—λŸ¬ λ©”μ‹œμ§€ λ°˜ν™˜
115
- return f"Error (Gemini): λͺ¨λΈ μ—°κ²° μ‹€νŒ¨.\n{str(e)}", None
116
 
117
  try:
118
  output_file = f"/tmp/{member_name}_reply.mp3"
@@ -128,7 +120,7 @@ async def band_consulting(user_input, member_name):
128
 
129
  # Blocks UI
130
  with gr.Blocks() as demo:
131
- gr.Markdown("# Error 404 Band API Server (Auto-Discovery Mode)")
132
  with gr.Row():
133
  inp_text = gr.Textbox(label="κ³ λ―Ό μž…λ ₯")
134
  inp_member = gr.Dropdown(choices=list(MEMBERS.keys()), label="멀버 선택", value="μ„œμœ€ (Korea)")
 
2
  import google.generativeai as genai
3
  import edge_tts
4
  import os
 
5
 
6
  # 1. ꡬ글 API μ„€μ •
7
  GENAI_KEY = os.getenv("GEMINI_KEY")
8
  genai.configure(api_key=GENAI_KEY)
9
 
10
  # ==========================================
11
+ # πŸ•΅οΈβ€β™‚οΈ [κ²Έμ†ν•œ 탐색기] 무료둜 ν™•μ‹€ν•œ λͺ¨λΈλ§Œ μ°ΎκΈ°
12
  # ==========================================
13
+ def get_safe_model():
14
+ print("πŸ“‘ 무료둜 μ‚¬μš© κ°€λŠ₯ν•œ μ•ˆμ „ν•œ λͺ¨λΈμ„ μ°ΎμŠ΅λ‹ˆλ‹€...")
15
+
16
+ # μš°λ¦¬κ°€ μ›ν•˜λŠ” '무료 λŒ€μž₯' λͺ¨λΈλ“€ (μˆœμ„œκ°€ μ€‘μš”ν•©λ‹ˆλ‹€!)
17
+ # 2.0은 μ—λŸ¬κ°€ λ‚˜λ‹ˆκΉŒ μ•„μ˜ˆ λ¦¬μŠ€νŠΈμ—μ„œ λΊμŠ΅λ‹ˆλ‹€.
18
+ target_models = [
19
+ "gemini-1.5-flash", # 1μˆœμœ„: κ°€μž₯ λΉ λ₯΄κ³  μ•ˆμ •μ 
20
+ "gemini-1.5-flash-latest", # 2μˆœμœ„: μ΅œμ‹  별λͺ…
21
+ "gemini-1.5-pro", # 3μˆœμœ„: μ„±λŠ₯ μ’‹μŒ (쑰금 느림)
22
+ "gemini-pro" # 4μˆœμœ„: ꡬ관이 λͺ…κ΄€
23
+ ]
24
 
25
  try:
26
+ # ꡬ글에 μžˆλŠ” 전체 λͺ©λ‘μ„ κ°€μ Έμ˜΅λ‹ˆλ‹€.
27
+ available_models = [m.name for m in genai.list_models()]
 
 
28
 
29
+ for target in target_models:
30
+ # 이름이 μ •ν™•νžˆ μΌμΉ˜ν•˜κ±°λ‚˜, 경둜(models/) ν¬ν•¨ν•΄μ„œ μΌμΉ˜ν•˜λŠ”μ§€ 확인
31
+ if target in available_models or f"models/{target}" in available_models:
32
+ print(f"βœ… μ•ˆμ „ν•œ λͺ¨λΈ 확보! [{target}] λͺ¨λΈμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.")
33
+ return genai.GenerativeModel(target)
 
 
 
 
 
 
 
 
 
 
 
34
 
35
+ # λ§Œμ•½ μœ„ λͺ©λ‘μ— λ‹€ μ—†μœΌλ©΄? (그럴 리 μ—†μ§€λ§Œ)
36
+ print("⚠️ νƒ€κ²Ÿ λͺ¨λΈ μ—†μŒ. κ°•μ œλ‘œ 'gemini-1.5-flash' μ‹œλ„.")
37
+ return genai.GenerativeModel("gemini-1.5-flash")
 
38
 
39
  except Exception as e:
40
+ print(f"❌ 탐색 쀑 μ—λŸ¬: {str(e)}")
41
+ # μ—λŸ¬λ‚˜λ©΄ 무쑰건 이걸둜 κ³ μ •
42
+ return genai.GenerativeModel("gemini-1.5-flash")
43
 
44
+ # μ„œλ²„ 켜질 λ•Œ λͺ¨λΈ ν™•μ •
45
+ model = get_safe_model()
46
 
47
  # ==========================================
48
+ # 2. 멀버 데이터 (κ·ΈλŒ€λ‘œ)
49
  # ==========================================
50
  MEMBERS = {
51
  "μ„œμœ€ (Korea)": {
 
100
  chat_prompt = f"{member['prompt']}\n\nUser's Error/Worry: {user_input}\nResponse:"
101
 
102
  try:
103
+ # μ•ˆμ „ν•˜κ²Œ ν™•λ³΄λœ λͺ¨λΈλ‘œ 생성
104
  response = model.generate_content(chat_prompt)
105
  ai_text = response.text
106
  except Exception as e:
107
+ return f"Error (Gemini): λͺ¨λΈ 생성 μ‹€νŒ¨.\n{str(e)}", None
 
108
 
109
  try:
110
  output_file = f"/tmp/{member_name}_reply.mp3"
 
120
 
121
  # Blocks UI
122
  with gr.Blocks() as demo:
123
+ gr.Markdown("# Error 404 Band API Server (Safe Mode)")
124
  with gr.Row():
125
  inp_text = gr.Textbox(label="κ³ λ―Ό μž…λ ₯")
126
  inp_member = gr.Dropdown(choices=list(MEMBERS.keys()), label="멀버 선택", value="μ„œμœ€ (Korea)")