JUNGU commited on
Commit
35e0b37
Β·
verified Β·
1 Parent(s): 3271c7b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -28
app.py CHANGED
@@ -1,11 +1,11 @@
1
  import gradio as gr
2
- import google.generativeai as genai
3
  import os
4
 
5
  # 디버깅: ν™˜κ²½λ³€μˆ˜ 확인
6
  print("=== ν™˜κ²½λ³€μˆ˜ 디버깅 ===")
7
- print(f"GEMINI_API_KEY 쑴재 μ—¬λΆ€: {'GEMINI_API_KEY' in os.environ}")
8
- api_key = os.environ.get("GEMINI_API_KEY")
9
  if api_key:
10
  print(f"API ν‚€ 길이: {len(api_key)}")
11
  print(f"API ν‚€ μ‹œμž‘: {api_key[:10]}...")
@@ -21,63 +21,78 @@ SYSTEM_PROMPT = "λ°œν‘œ λŒ€λ³Έμ„ λ§Œλ“€μ–΄μ£ΌλŠ” μ±—λ΄‡μž…λ‹ˆλ‹€. λ°œν‘œν•  λ‚΄
21
 
22
  def chat(message, history):
23
  # API ν‚€ λ‹€μ‹œ 확인
24
- api_key = os.environ.get("GEMINI_API_KEY")
25
 
26
  if not api_key:
27
  return f"""❌ API ν‚€κ°€ μ„€μ •λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
28
-
29
  **ν•΄κ²° 방법:**
30
  1. Hugging Face Space의 βš™οΈ Settings νƒ­μœΌλ‘œ 이동
31
  2. 'Repository secrets' μ„Ήμ…˜ μ°ΎκΈ°
32
  3. 'New secret' λ²„νŠΌ 클릭
33
- 4. Name: `GEMINI_API_KEY` (μ •ν™•νžˆ μ΄λ ‡κ²Œ μž…λ ₯)
34
- 5. Value: λ‹Ήμ‹ μ˜ Gemini API ν‚€ λΆ™μ—¬λ„£κΈ°
35
  6. 'Save' 클릭
36
  7. Spaceλ₯Ό μž¬μ‹œμž‘ (Settings β†’ Factory reboot)
37
-
38
  ν˜„μž¬ μƒνƒœ: API ν‚€κ°€ {'있음' if api_key else 'μ—†μŒ'}
39
  """
40
 
41
  try:
42
- # API μ„€μ •
43
- genai.configure(api_key=api_key)
44
-
45
- model = genai.GenerativeModel(
46
- 'gemini-1.5-flash',
47
- system_instruction=SYSTEM_PROMPT
48
  )
49
 
50
- # λŒ€ν™” 기둝 λ³€ν™˜
51
- chat_history = []
 
 
52
  for human, assistant in history:
53
  if human:
54
- chat_history.append({"role": "user", "parts": [human]})
55
  if assistant:
56
- chat_history.append({"role": "model", "parts": [assistant]})
57
 
58
- # μ±„νŒ… μ„Έμ…˜ μ‹œμž‘
59
- chat_session = model.start_chat(history=chat_history)
60
 
61
- # 응닡 생성
62
- response = chat_session.send_message(message)
63
- return response.text
 
 
 
 
 
64
 
65
  except Exception as e:
66
  error_msg = str(e)
67
- if "API_KEY_INVALID" in error_msg:
68
- return "❌ API ν‚€κ°€ μœ νš¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ˜¬λ°”λ₯Έ Gemini API 킀인지 ν™•μΈν•˜μ„Έμš”."
 
 
69
  else:
70
  return f"❌ 였λ₯˜ λ°œμƒ: {error_msg}"
71
 
72
  # Gradio μΈν„°νŽ˜μ΄μŠ€
73
  demo = gr.ChatInterface(
74
  fn=chat,
75
- title="πŸ€– λ…Όλ¦¬μ μœΌλ‘œ λ§ν•˜λŠ” λ°œν‘œλ„μš°λ―Έ Gemini 챗봇",
76
  description=f"""λ…Όλ¦¬μ μœΌλ‘œ λ°œν‘œν•˜λŠ” 방법을 λ„μ™€μ€λ‹ˆλ‹€.
77
 
78
  **μƒνƒœ**: API ν‚€κ°€ {'βœ… 섀정됨' if api_key else '❌ μ„€μ •λ˜μ§€ μ•ŠμŒ'}
79
- [API ν‚€ λ°›κΈ°](https://aistudio.google.com/app/apikey)
80
- """
 
 
 
 
 
 
 
 
 
 
81
  )
82
 
83
  if __name__ == "__main__":
 
1
  import gradio as gr
2
+ from openai import OpenAI
3
  import os
4
 
5
  # 디버깅: ν™˜κ²½λ³€μˆ˜ 확인
6
  print("=== ν™˜κ²½λ³€μˆ˜ 디버깅 ===")
7
+ print(f"UPSTAGE_API_KEY 쑴재 μ—¬λΆ€: {'UPSTAGE_API_KEY' in os.environ}")
8
+ api_key = os.environ.get("UPSTAGE_API_KEY")
9
  if api_key:
10
  print(f"API ν‚€ 길이: {len(api_key)}")
11
  print(f"API ν‚€ μ‹œμž‘: {api_key[:10]}...")
 
21
 
22
  def chat(message, history):
23
  # API ν‚€ λ‹€μ‹œ 확인
24
+ api_key = os.environ.get("UPSTAGE_API_KEY")
25
 
26
  if not api_key:
27
  return f"""❌ API ν‚€κ°€ μ„€μ •λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
 
28
  **ν•΄κ²° 방법:**
29
  1. Hugging Face Space의 βš™οΈ Settings νƒ­μœΌλ‘œ 이동
30
  2. 'Repository secrets' μ„Ήμ…˜ μ°ΎκΈ°
31
  3. 'New secret' λ²„νŠΌ 클릭
32
+ 4. Name: `UPSTAGE_API_KEY` (μ •ν™•νžˆ μ΄λ ‡κ²Œ μž…λ ₯)
33
+ 5. Value: λ‹Ήμ‹ μ˜ Upstage API ν‚€ λΆ™μ—¬λ„£κΈ° (up_으둜 μ‹œμž‘)
34
  6. 'Save' 클릭
35
  7. Spaceλ₯Ό μž¬μ‹œμž‘ (Settings β†’ Factory reboot)
 
36
  ν˜„μž¬ μƒνƒœ: API ν‚€κ°€ {'있음' if api_key else 'μ—†μŒ'}
37
  """
38
 
39
  try:
40
+ # Solar API ν΄λΌμ΄μ–ΈνŠΈ μ„€μ •
41
+ client = OpenAI(
42
+ api_key=api_key,
43
+ base_url="https://api.upstage.ai/v1"
 
 
44
  )
45
 
46
+ # λŒ€ν™” 기둝 λ³€ν™˜ - Solar APIλŠ” OpenAI ν˜•μ‹ μ‚¬μš©
47
+ messages = [{"role": "system", "content": SYSTEM_PROMPT}]
48
+
49
+ # 이전 λŒ€ν™” 기둝 μΆ”κ°€
50
  for human, assistant in history:
51
  if human:
52
+ messages.append({"role": "user", "content": human})
53
  if assistant:
54
+ messages.append({"role": "assistant", "content": assistant})
55
 
56
+ # ν˜„μž¬ λ©”μ‹œμ§€ μΆ”κ°€
57
+ messages.append({"role": "user", "content": message})
58
 
59
+ # Solar API 호좜
60
+ response = client.chat.completions.create(
61
+ model="solar-pro", # solar-pro λ˜λŠ” solar-mini μ‚¬μš© κ°€λŠ₯
62
+ messages=messages,
63
+ stream=False # stream=True둜 ν•˜λ©΄ μ‹€μ‹œκ°„ 슀트리밍 κ°€λŠ₯
64
+ )
65
+
66
+ return response.choices[0].message.content
67
 
68
  except Exception as e:
69
  error_msg = str(e)
70
+ if "401" in error_msg or "Unauthorized" in error_msg:
71
+ return "❌ API ν‚€κ°€ μœ νš¨ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ˜¬λ°”λ₯Έ Upstage API 킀인지 ν™•μΈν•˜μ„Έμš”. (up_둜 μ‹œμž‘ν•΄μ•Ό 함)"
72
+ elif "quota" in error_msg.lower() or "limit" in error_msg.lower():
73
+ return "❌ API μ‚¬μš©λŸ‰ ν•œλ„λ₯Ό μ΄ˆκ³Όν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜μ€‘μ— λ‹€μ‹œ μ‹œλ„ν•˜κ±°λ‚˜ μš”κΈˆμ œλ₯Ό ν™•μΈν•˜μ„Έμš”."
74
  else:
75
  return f"❌ 였λ₯˜ λ°œμƒ: {error_msg}"
76
 
77
  # Gradio μΈν„°νŽ˜μ΄μŠ€
78
  demo = gr.ChatInterface(
79
  fn=chat,
80
+ title="πŸ€– λ…Όλ¦¬μ μœΌλ‘œ λ§ν•˜λŠ” λ°œν‘œλ„μš°λ―Έ Solar 챗봇",
81
  description=f"""λ…Όλ¦¬μ μœΌλ‘œ λ°œν‘œν•˜λŠ” 방법을 λ„μ™€μ€λ‹ˆλ‹€.
82
 
83
  **μƒνƒœ**: API ν‚€κ°€ {'βœ… 섀정됨' if api_key else '❌ μ„€μ •λ˜μ§€ μ•ŠμŒ'}
84
+
85
+ **μ‚¬μš© λͺ¨λΈ**: Solar Pro (Upstage AI)
86
+ [API ν‚€ λ°›κΈ°](https://console.upstage.ai/)
87
+
88
+ πŸ’‘ **AI Initiative ν”„λ‘œκ·Έλž¨ μ°Έμ—¬μžλΌλ©΄ solar-proλ₯Ό 무료둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€!**
89
+ [AI Initiative μ‹ μ²­ν•˜κΈ°](https://www.upstage.ai/events/ai-initiative-2025-ko)
90
+ """,
91
+ examples=[
92
+ "인곡지λŠ₯의 λ―Έλž˜μ— λŒ€ν•΄ λ°œν‘œ λŒ€λ³Έμ„ λ§Œλ“€μ–΄μ£Όμ„Έμš”",
93
+ "ν™˜κ²½ 보호의 μ€‘μš”μ„±μ— λŒ€ν•œ λ°œν‘œλ¬Έμ„ μž‘μ„±ν•΄μ£Όμ„Έμš”",
94
+ "νŒ€μ›Œν¬μ˜ μ€‘μš”μ„±μ„ κ°•μ‘°ν•˜λŠ” λ°œν‘œ 자료λ₯Ό λ§Œλ“€μ–΄μ£Όμ„Έμš”"
95
+ ]
96
  )
97
 
98
  if __name__ == "__main__":