JUNGU commited on
Commit
1b77547
Β·
verified Β·
1 Parent(s): 2692fef

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -27
app.py CHANGED
@@ -2,8 +2,7 @@ import gradio as gr
2
  import google.generativeai as genai
3
  import os
4
 
5
- # --- 1. μ±—λ΄‡μ˜ μ—­ν• (μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ)을 여기에 μ •μ˜ν•©λ‹ˆλ‹€. ---
6
- # μ˜ˆμ‹œ: IT 및 μ½”λ”© μ§ˆλ¬Έμ— μ „λ¬Έμ μœΌλ‘œ λ‹΅λ³€ν•˜λŠ” AI μ–΄μ‹œμŠ€ν„΄νŠΈ
7
  SYSTEM_PROMPT = "λ°œν‘œ λŒ€λ³Έμ„ λ§Œλ“€μ–΄μ£ΌλŠ” μ±—λ΄‡μž…λ‹ˆλ‹€. λ°œν‘œν•  λ‚΄μš©μ„ μž…λ ₯ν•˜λ©΄ 'μ™œλƒν•˜λ©΄ ~이기 λ•Œλ¬Έμž…λ‹ˆλ‹€'둜 λŒ€λ³Έμ„ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€"
8
 
9
  # API ν‚€ μ„€μ •
@@ -12,18 +11,12 @@ if api_key:
12
  genai.configure(api_key=api_key)
13
 
14
  def chat(message, history):
15
- # --- μˆ˜μ • 1: λ“€μ—¬μ“°κΈ° μˆ˜μ • ---
16
- # if λ¬Έ μ•„λž˜μ˜ λͺ¨λ“  μ½”λ“œλŠ” 4μΉΈ λ“€μ—¬μ“°κΈ°κ°€ ν•„μš”ν•©λ‹ˆλ‹€
17
  if not api_key:
18
- return "❌ API ν‚€κ°€ μ„€μ •λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. Hugging Face Spaces의 Settingsμ—μ„œ GEMINI_API_KEYλ₯Ό Secret으둜 μΆ”κ°€ν•˜μ„Έμš”."
19
 
20
- # --- μˆ˜μ • 2: try 블둝 λ“€μ—¬μ“°κΈ° μˆ˜μ • ---
21
- # try 블둝이 if λ¬Έκ³Ό λ™μΌν•œ λ ˆλ²¨μ— μžˆλ„λ‘ μˆ˜μ •
22
  try:
23
- # --- μˆ˜μ • 3: λͺ¨λΈλͺ… λ³€κ²½ ---
24
- # 'gemini-2.0-flash' β†’ 'gemini-1.5-flash'둜 λ³€κ²½ (ν˜„μž¬ μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λΈ)
25
  model = genai.GenerativeModel(
26
- 'gemini-1.5-flash', # μˆ˜μ •: gemini-2.0-flashλŠ” 아직 μ‚¬μš© λΆˆκ°€
27
  system_instruction=SYSTEM_PROMPT
28
  )
29
 
@@ -35,28 +28,59 @@ def chat(message, history):
35
  if assistant:
36
  chat_history.append({"role": "model", "parts": [assistant]})
37
 
38
- # μ±„νŒ… μ„Έμ…˜ μ‹œμž‘
39
  chat_session = model.start_chat(history=chat_history)
40
-
41
- # 응닡 생성
42
  response = chat_session.send_message(message)
43
- return response.text
 
 
 
44
 
45
  except Exception as e:
46
- return f"❌ 였λ₯˜ λ°œμƒ: {str(e)}"
 
47
 
48
- # --- μˆ˜μ • 4: examples 제거 및 type μΆ”κ°€ ---
49
- # examples νŒŒλΌλ―Έν„°λŠ” Gradio 버그λ₯Ό μΌμœΌν‚¬ 수 μžˆμœΌλ―€λ‘œ 제거
50
- # type="messages"λ₯Ό μΆ”κ°€ν•˜μ—¬ κ²½κ³  λ©”μ‹œμ§€ ν•΄κ²°
51
- demo = gr.ChatInterface(
52
- fn=chat,
53
- title="πŸ€– λ…Όλ¦¬μ μœΌλ‘œ λ§ν•˜λŠ” λ°œν‘œλ„μš°λ―Έ Gemini 챗봇",
54
- description="λ…Όλ¦¬μ μœΌλ‘œ λ°œν‘œν•˜λŠ” 방법을 λ„μ™€μ€λ‹ˆλ‹€.",
55
- # examples=["ν•™κΈ‰νšŒμ˜λ•Œ λ§ν•˜λŠ” 방법", "κ΅­μ–΄μ‹œκ°„μ— μ£Όμž₯ν•˜λŠ” 말 ν•˜λŠ” 방법", "μ‚¬νšŒν˜„μƒμ— λŒ€ν•œ 의견"], # 제거
56
- type="messages" # μΆ”κ°€: deprecation κ²½κ³  ν•΄κ²°
57
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
- # --- μˆ˜μ • 5: __name__ μˆ˜μ • ---
60
- # **name** β†’ __name__ (μ–Έλ”μŠ€μ½”μ–΄ 두 κ°œμ”©)
61
  if __name__ == "__main__":
62
  demo.launch()
 
2
  import google.generativeai as genai
3
  import os
4
 
5
+ # μ‹œμŠ€ν…œ ν”„λ‘¬ν”„νŠΈ μ •μ˜
 
6
  SYSTEM_PROMPT = "λ°œν‘œ λŒ€λ³Έμ„ λ§Œλ“€μ–΄μ£ΌλŠ” μ±—λ΄‡μž…λ‹ˆλ‹€. λ°œν‘œν•  λ‚΄μš©μ„ μž…λ ₯ν•˜λ©΄ 'μ™œλƒν•˜λ©΄ ~이기 λ•Œλ¬Έμž…λ‹ˆλ‹€'둜 λŒ€λ³Έμ„ λ§Œλ“€μ–΄μ€λ‹ˆλ‹€"
7
 
8
  # API ν‚€ μ„€μ •
 
11
  genai.configure(api_key=api_key)
12
 
13
  def chat(message, history):
 
 
14
  if not api_key:
15
+ return history + [[message, "❌ API ν‚€κ°€ μ„€μ •λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€."]]
16
 
 
 
17
  try:
 
 
18
  model = genai.GenerativeModel(
19
+ 'gemini-1.5-flash',
20
  system_instruction=SYSTEM_PROMPT
21
  )
22
 
 
28
  if assistant:
29
  chat_history.append({"role": "model", "parts": [assistant]})
30
 
31
+ # μ±„νŒ… μ„Έμ…˜ μ‹œμž‘ 및 응닡 생성
32
  chat_session = model.start_chat(history=chat_history)
 
 
33
  response = chat_session.send_message(message)
34
+
35
+ # νžˆμŠ€ν† λ¦¬μ— μΆ”κ°€
36
+ history.append([message, response.text])
37
+ return history
38
 
39
  except Exception as e:
40
+ history.append([message, f"❌ 였λ₯˜ λ°œμƒ: {str(e)}"])
41
+ return history
42
 
43
+ # Gradio Blocks μΈν„°νŽ˜μ΄μŠ€
44
+ with gr.Blocks() as demo:
45
+ gr.Markdown("""
46
+ # πŸ€– λ…Όλ¦¬μ μœΌλ‘œ λ§ν•˜λŠ” λ°œν‘œλ„μš°λ―Έ Gemini 챗봇
47
+ λ…Όλ¦¬μ μœΌλ‘œ λ°œν‘œν•˜λŠ” 방법을 λ„μ™€μ€λ‹ˆλ‹€.
48
+ """)
49
+
50
+ chatbot = gr.Chatbot()
51
+ msg = gr.Textbox(
52
+ placeholder="λ°œν‘œν•  λ‚΄μš©μ„ μž…λ ₯ν•˜μ„Έμš”...",
53
+ label="λ©”μ‹œμ§€ μž…λ ₯"
54
+ )
55
+
56
+ with gr.Row():
57
+ submit = gr.Button("전솑", variant="primary")
58
+ clear = gr.Button("λŒ€ν™” μ΄ˆκΈ°ν™”")
59
+
60
+ # 예제 μ„Ήμ…˜
61
+ gr.Markdown("### πŸ’‘ 예제 질문")
62
+ with gr.Row():
63
+ ex1 = gr.Button("ν•™κΈ‰νšŒμ˜λ•Œ λ§ν•˜λŠ” 방법", size="sm")
64
+ ex2 = gr.Button("κ΅­μ–΄μ‹œκ°„μ— μ£Όμž₯ν•˜λŠ” 말 ν•˜λŠ” 방법", size="sm")
65
+ ex3 = gr.Button("μ‚¬νšŒν˜„μƒμ— λŒ€ν•œ 의견", size="sm")
66
+
67
+ # 이벀트 ν•Έλ“€λŸ¬
68
+ def respond(message, chat_history):
69
+ if message.strip():
70
+ return chat(message, chat_history), ""
71
+ return chat_history, ""
72
+
73
+ # λ©”μ‹œμ§€ 전솑
74
+ msg.submit(respond, [msg, chatbot], [chatbot, msg])
75
+ submit.click(respond, [msg, chatbot], [chatbot, msg])
76
+
77
+ # λŒ€ν™” μ΄ˆκΈ°ν™”
78
+ clear.click(lambda: [], None, chatbot)
79
+
80
+ # 예제 λ²„νŠΌ 클릭
81
+ ex1.click(lambda h: chat("ν•™κΈ‰νšŒμ˜λ•Œ λ§ν•˜λŠ” 방법", h), [chatbot], [chatbot])
82
+ ex2.click(lambda h: chat("κ΅­μ–΄μ‹œκ°„μ— μ£Όμž₯ν•˜λŠ” 말 ν•˜λŠ” 방법", h), [chatbot], [chatbot])
83
+ ex3.click(lambda h: chat("μ‚¬νšŒν˜„μƒμ— λŒ€ν•œ 의견", h), [chatbot], [chatbot])
84
 
 
 
85
  if __name__ == "__main__":
86
  demo.launch()