ssboost commited on
Commit
50a70ba
ยท
verified ยท
1 Parent(s): 2d15127

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +99 -61
app.py CHANGED
@@ -4,48 +4,94 @@ import os
4
 
5
  class SimpleBanchanChatbot:
6
  def __init__(self):
7
- # ํ—ˆ๊น…ํŽ˜์ด์Šค ์ŠคํŽ˜์ด์Šค์—์„œ๋Š” secrets์—์„œ API ํ‚ค ๊ฐ€์ ธ์˜ค๊ธฐ
8
- api_key = os.getenv("GEMINI_API_KEY")
9
- if not api_key:
10
- raise ValueError("GEMINI_API_KEY ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค!")
11
-
12
- self.genai_client = genai.Client(api_key=api_key)
13
 
14
- # FAQ ๋ฐ์ดํ„ฐ (์—‘์…€์—์„œ ์ถ”์ถœํ•œ ๋‚ด์šฉ)
15
  self.faq_data = """
16
  ๋ฐ˜์ฐฌ๊ฐ€๊ฒŒ ๊ณ ๊ฐ์„ผํ„ฐ FAQ:
17
 
 
 
 
 
 
 
18
  1. Q: ์ฃผ๋ฌธ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
19
- A: ๋กœ๊ทธ์ธ โ†’ ์ฃผ๋ฌธํ•˜๊ธฐ ํด๋ฆญ โ†’ ์ „์ฒด์ฃผ๋ฌธ/์ผ๋ณ„์ฃผ๋ฌธ ์„ ํƒ โ†’ ๋ฐ˜์ฐฌ ์„ ํƒ(์ตœ์†Œ 26,000์›) โ†’ ๊ตฌ๋งค/์žฅ๋ฐ”๊ตฌ๋‹ˆ โ†’ ๊ฒฐ์ œ(์‹ ์šฉ์นด๋“œ/์ œ๋กœํŽ˜์ด/๋ฌดํ†ต์žฅ)
20
 
21
- 2. Q: ํฌ์ธํŠธ ์‚ฌ์šฉ์ด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
22
- A: ๊ฒฐ์ œ์‹œ ์ฒซ ํŽ˜์ด์ง€์—์„œ ํฌ์ธํŠธ ๊ธˆ์•ก์„ ๋„ฃ๊ณ  ๋ฌดํ†ต์žฅ์ž…๊ธˆ
23
 
24
  3. Q: ๋ฐ˜์ฐฌ ์ถ”๊ฐ€๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
25
  A: ์ฒซ ํŽ˜์ด์ง€์—์„œ ๊ตฌ๋งคํ•˜๊ณ  ์‹ถ์€ ๋ฐ˜์ฐฌ ์„ ํƒ โ†’ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธฐ โ†’ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์ˆ˜๋Ÿ‰ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
26
 
27
- 4. Q: ์นด๋“œ๊ฒฐ์ œ ํ•˜๊ณ  ์‹ถ์€๋ฐ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
28
- A: ๊ฒฐ์ œ์ฐฝ์—์„œ ์‹ ์šฉ์นด๋“œ/์ œ๋กœํŽ˜์ด/๋ฌดํ†ต์žฅ ์ค‘ ์„ ํƒํ•ด์„œ ๊ฒฐ์ œ
 
 
 
 
 
 
 
29
 
30
- 5. Q: ๋ฐฐ์†ก๋น„๋Š” ์–ผ๋งˆ์ธ๊ฐ€์š”?
 
 
 
 
 
 
 
31
  A: ์ƒˆ๋ฒฝ๋ฐฐ์†ก 3,500์›, ํƒ๋ฐฐ๋ฐฐ์†ก 4,000์›
32
 
33
- 6. Q: ์ƒˆ๋ฒฝ๋ฐฐ์†ก์ธ์ง€ ํƒ๋ฐฐ์ธ์ง€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋‚˜์š”?
34
- A: ์ด์šฉ๋ฐฉ๋ฒ•์—์„œ ๋ฐฐ์†ก์ง€๋ฅผ ์ž…๋ ฅํ•˜์‹œ๋ฉด ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
 
 
 
 
 
 
35
 
36
- 7. Q: ํ™˜๋ถˆ์€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋‚˜์š”?
37
- A: ์นด๋“œ๋Š” ์ทจ์†Œ ํ›„ 2-3์ผ, ์ทจ์†Œ๋Š” 2์ผ ์ „์—๋งŒ ๊ฐ€๋Šฅ, ํ•˜๋ฃจ ์ „์—๋Š” ์ด๋ฏธ ์ œ์ž‘๋˜์–ด ์ทจ์†Œ ๋ถˆ๊ฐ€
 
38
 
39
- 8. Q: ๊ณ„์ขŒ๋ฒˆํ˜ธ ํ™•์ธ์€ ์–ด๋””์„œ ํ•˜๋‚˜์š”?
40
- A: ๋ฌดํ†ต์žฅ ๊ฑฐ๋ž˜์‹œ ์ž…๊ธˆ๊ณ„์ขŒ - ํ•˜๋‚˜์€ํ–‰ 12345-00-1234304 ์ฃผ)๊ฒฝ์•„๋„ค
41
 
42
- 9. Q: ์ตœ์ € ์ฃผ๋ฌธ๊ธˆ์•ก์ด ์žˆ๋‚˜์š”?
43
- A: ์ตœ์ €์ฃผ๋ฌธ 25,000์›์ž…๋‹ˆ๋‹ค
44
 
45
- 10. Q: ๋ฐฐ์†ก์€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋‚˜์š”?
46
- A: ์ „๋‚  ํฌ์žฅ โ†’ ๋ฐฐ์†ก์—…์ฒด ๋ƒ‰์žฅ์„ผํ„ฐ 8์‹œ ์ž…๊ณ  โ†’ ๋ถ„๋ฅ˜์ž‘์—… โ†’ ์ƒˆ๋ฒฝ๋ฐฐ์†ก
 
47
 
48
- ๊ณ ๊ฐ์„ผํ„ฐ: 010-8082-0047
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  """
50
 
51
  def chat_stream(self, message, history):
@@ -67,7 +113,7 @@ class SimpleBanchanChatbot:
67
  contents=message,
68
  config=genai.types.GenerateContentConfig(
69
  system_instruction=system_prompt,
70
- temperature=0.1
71
  )
72
  )
73
 
@@ -78,43 +124,35 @@ class SimpleBanchanChatbot:
78
  yield partial_message
79
 
80
  except Exception as e:
81
- yield f"์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ์„ผํ„ฐ(010-8082-0047)๋กœ ์—ฐ๋ฝํ•ด์ฃผ์„ธ์š”."
82
 
83
  # ์ฑ—๋ด‡ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
84
- try:
85
- chatbot = SimpleBanchanChatbot()
86
-
87
- # ๊ทธ๋ผ๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค
88
- demo = gr.ChatInterface(
89
- fn=chatbot.chat_stream,
90
- title="๐Ÿฅข ๋ง›์žˆ๋Š”๋ฐ˜์ฐฌ๊ฐ€๊ฒŒ AI ์ƒ๋‹ด๋ด‡",
91
- description="์ œ๋ฏธ๋‚˜์ด 2.0 ๊ธฐ๋ฐ˜ ๋ฐ˜์ฐฌ๊ฐ€๊ฒŒ ๊ณ ๊ฐ ์ƒ๋‹ด๋ด‡์ž…๋‹ˆ๋‹ค. ๊ถ๊ธˆํ•œ ๊ฒƒ์„ ๋ฌผ์–ด๋ณด์„ธ์š”!",
92
- examples=[
93
- "์ฃผ๋ฌธ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?",
94
- "ํฌ์ธํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?",
95
- "๋ฐฐ์†ก๋น„๊ฐ€ ์–ผ๋งˆ์ธ๊ฐ€์š”?",
96
- "ํ™˜๋ถˆ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ์„ธ์š”",
97
- "์ตœ์†Œ ์ฃผ๋ฌธ๊ธˆ์•ก์ด ์žˆ๋‚˜์š”?"
98
- ],
99
- theme=gr.themes.Soft(),
100
- css="""
101
- .gradio-container {
102
- max-width: 800px !important;
103
- margin: auto !important;
104
- }
105
- """
106
- )
107
-
108
- except Exception as e:
109
- # API ํ‚ค๊ฐ€ ์—†์„ ๋•Œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
110
- def error_message(message, history):
111
- yield "โŒ GEMINI_API_KEY๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ํ•˜์„ธ์š”."
112
-
113
- demo = gr.ChatInterface(
114
- fn=error_message,
115
- title="๐Ÿฅข ์„ค์ • ์˜ค๋ฅ˜",
116
- description="API ํ‚ค ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."
117
- )
118
 
119
  if __name__ == "__main__":
120
- demo.launch()
 
 
 
 
 
4
 
5
  class SimpleBanchanChatbot:
6
  def __init__(self):
7
+ self.genai_client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))
 
 
 
 
 
8
 
9
+ # ์—‘์…€์—์„œ ์ถ”์ถœํ•œ ๋ชจ๋“  FAQ ๋ฐ์ดํ„ฐ
10
  self.faq_data = """
11
  ๋ฐ˜์ฐฌ๊ฐ€๊ฒŒ ๊ณ ๊ฐ์„ผํ„ฐ FAQ:
12
 
13
+ == ๊ธฐ๋ณธ ์ •๋ณด ==
14
+ โ€ข ๊ณ ๊ฐ์„ผํ„ฐ: 010-8082-0047
15
+ โ€ข ์ž…๊ธˆ๊ณ„์ขŒ: ํ•˜๋‚˜์€ํ–‰ 12345-00-1234304 ์ฃผ)๊ฒฝ์•„๋„ค
16
+ โ€ข ์ตœ์†Œ ์ฃผ๋ฌธ๊ธˆ์•ก: 26,000์›
17
+
18
+ == ์ฃผ๋ฌธ ๊ด€๋ จ ==
19
  1. Q: ์ฃผ๋ฌธ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
20
+ A: โ‘  ๋กœ๊ทธ์ธ โ†’ โ‘ก ์ฃผ๋ฌธํ•˜๊ธฐ ํด๋ฆญ โ†’ โ‘ข ์ „์ฒด์ฃผ๋ฌธ ๋˜๋Š” ์ผ๋ณ„์ฃผ๋ฌธ ํด๋ฆญ โ†’ โ‘ฃ ๋“œ์‹œ๊ณ  ์‹ถ์€ ๋ฐ˜์ฐฌ ํด๋ฆญ(์ตœ์†Œ 26,000์›) โ†’ โ‘ค ๊ตฌ๋งค๋ฒ„ํŠผ ๋ฐ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฒ„ํŠผ ํด๋ฆญ โ†’ โ‘ฅ ๊ฒฐ์ œ์ฐฝ์—์„œ ์‹ ์šฉ์นด๋“œ/์ œ๋กœํŽ˜์ด/๋ฌดํ†ต์žฅ ์ค‘ ์„ ํƒํ•˜์—ฌ ๊ฒฐ์ œ
21
 
22
+ 2. Q: ์ฒซ์ฃผ๋ฌธ ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ•ด์š”
23
+ A: ์ฒซ๋ฐฉ๋ฌธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์šฉ๋ฐฉ๋ฒ•๊ณผ ๋ฐฐ์†ก์ง€์—ญ์„ ํ™•์ธ โ†’ ํšŒ์›๊ฐ€์ž… ํ›„ ๋กœ๊ทธ์ธ โ†’ ์ฃผ๋ฌธ์ฐฝ์—์„œ ์›ํ•˜๋Š” ๋ฐ˜์ฐฌ ์„ ํƒ โ†’ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธฐ โ†’ ๊ตฌ๋งค๋ฒ„ํŠผ์œผ๋กœ ๊ฒฐ์ œ
24
 
25
  3. Q: ๋ฐ˜์ฐฌ ์ถ”๊ฐ€๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
26
  A: ์ฒซ ํŽ˜์ด์ง€์—์„œ ๊ตฌ๋งคํ•˜๊ณ  ์‹ถ์€ ๋ฐ˜์ฐฌ ์„ ํƒ โ†’ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธฐ โ†’ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์—์„œ ์ˆ˜๋Ÿ‰ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
27
 
28
+ == ๊ฒฐ์ œ ๊ด€๋ จ ==
29
+ 4. Q: ์นด๋“œ๊ฒฐ์ œ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
30
+ A: ๊ฒฐ์ œ์ฐฝ์—์„œ ์‹ ์šฉ์นด๋“œ/์ œ๋กœํŽ˜์ด/๋ฌดํ†ต์žฅ ์ค‘ ์„ ํƒํ•ด์„œ ๊ฒฐ์ œํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค
31
+
32
+ 5. Q: ํฌ์ธํŠธ ์‚ฌ์šฉ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
33
+ A: ๊ฒฐ์ œ์‹œ ์ฒซ ํŽ˜์ด์ง€์—์„œ ํฌ์ธํŠธ ๊ธˆ์•ก์„ ์ž…๋ ฅํ•˜๊ณ  ๋ฌดํ†ต์žฅ์ž…๊ธˆ์œผ๋กœ ๊ฒฐ์ œ
34
+
35
+ 6. Q: ์„ ๊ฒฐ์ œ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
36
+ A: ์„ ๊ฒฐ์ œ๋Š” 3๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค - ์นด๋“œ์„ ๊ฒฐ์ œ, ์ œ๋กœํŽ˜์ด, ํ˜„๊ธˆ๊ฒฐ์ œ. ์„ ๊ฒฐ์ œ ํ›„ ํ™ˆํŽ˜์ด์ง€ ๊ฒŒ์‹œ๊ธ€์— ๋‚จ๊ธฐ๊ฑฐ๋‚˜ ๊ณ ๊ฐ์„ผํ„ฐ๋กœ ๋ฌธ์ž ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค
37
 
38
+ 7. Q: ๊ณ„์ขŒ๋ฒˆํ˜ธ ํ™•์ธ์€ ์–ด๋””์„œ ํ•˜๋‚˜์š”?
39
+ A: ๋ฌดํ†ต์žฅ ๊ฑฐ๋ž˜์‹œ ์ž…๊ธˆ๊ณ„์ขŒ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ํ•˜๋‚˜์€ํ–‰ 12345-00-1234304 ์ฃผ)๊ฒฝ์•„๋„ค
40
+
41
+ 8. Q: ๊ฒฐ์ œ๊ฐ€ ์•ˆ๋ผ์š”
42
+ A: ์‹ ์šฉ์นด๋“œ ๊ฒฐ์ œ ์•ˆ๋  ์‹œ ๊ณ ๊ฐ์„ผํ„ฐ(010-8082-0047)๋กœ ์—ฐ๋ฝ์ฃผ์„ธ์š”
43
+
44
+ == ๋ฐฐ์†ก ๊ด€๋ จ ==
45
+ 9. Q: ๋ฐฐ์†ก๋น„๋Š” ์–ผ๋งˆ์ธ๊ฐ€์š”?
46
  A: ์ƒˆ๋ฒฝ๋ฐฐ์†ก 3,500์›, ํƒ๋ฐฐ๋ฐฐ์†ก 4,000์›
47
 
48
+ 10. Q: ์ƒˆ๋ฒฝ๋ฐฐ์†ก์ธ์ง€ ํƒ๋ฐฐ์ธ์ง€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•˜๋‚˜์š”?
49
+ A: ์ด์šฉ๋ฐฉ๋ฒ•์—์„œ ๋ฐฐ์†ก์ง€๋ฅผ ์ž…๋ ฅํ•˜์‹œ๋ฉด ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
50
+
51
+ 11. Q: ๋ฐฐ์†ก์€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋‚˜์š”?
52
+ A: ์ „๋‚  ํฌ์žฅ โ†’ ๋ฐฐ์†ก์—…์ฒด ๋ƒ‰์žฅ์„ผํ„ฐ 8์‹œ ์ž…๊ณ  โ†’ ๋ถ„๋ฅ˜ ์ž‘์—… โ†’ ์ƒˆ๋ฒฝ๋ฐฐ์†ก(2-7์‹œ)/ํƒ๋ฐฐ๋ฐฐ์†ก(๋‹ค์Œ๋‚  ํ•˜๋ฃจ ์ค‘)
53
+
54
+ 12. Q: ๋ฐ˜์ฐฌ์ด ์•„์ง ์•ˆ์™”์–ด์š”
55
+ A: ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์†ก์—…์ฒด์— ํ™•์ธ ํ›„ ์—ฐ๋ฝ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค
56
 
57
+ == ์ทจ์†Œ/ํ™˜๋ถˆ ๊ด€๋ จ ==
58
+ 13. Q: ์ทจ์†Œ๋Š” ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?
59
+ A: ์ทจ์†Œ๋Š” 2์ผ ์ „์—๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋ฃจ ์ „์—๋Š” ๋ฐ˜์ฐฌ์ด ์ด๋ฏธ ์ œ์ž‘๋˜์–ด ์ทจ์†Œ๊ฐ€ ์•ˆ๋ฉ๋‹ˆ๋‹ค
60
 
61
+ 14. Q: ํ™˜๋ถˆ์€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋‚˜์š”?
62
+ A: ์นด๋“œ๋Š” ์ทจ์†Œ ํ›„ ํ™˜๋ถˆ๊นŒ์ง€ 2-3์ผ ์†Œ์š”. ์นด๋“œ์ทจ์†Œ๋Š” ๋ฌธ์˜ ๋‚จ๊ธฐ์‹œ๋ฉด ์ ๋ฆฝ๊ธˆ ํฌ์ธํŠธ๊ฐ€ ์นด๋“œ์ทจ์†Œ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค
63
 
64
+ 15. Q: ๋ฐ˜์ฐฌ์ด ์ƒํ•œ ๊ฒƒ ๊ฐ™์•„์š”
65
+ A: ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์†ก๊ณผ์ •์—์„œ ์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ณ„์ขŒํ™˜๋ถˆ/์นด๋“œ์ทจ์†Œ/์ ๋ฆฝ๊ธˆ ์ค‘ ํŽธํ•˜์‹  ๋ฐฉ๋ฒ•์œผ๋กœ ํ™˜๋ถˆํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค
66
 
67
+ == ๋ฉ”๋‰ด/์ƒํ’ˆ ๊ด€๋ จ ==
68
+ 16. Q: ์ •๊ธฐ์‹ ๊ตฌ์„ฑ์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?
69
+ A: ๊ณ ๊ฐ๋‹˜์ด ์„ ํƒํ•˜๊ธฐ ์–ด๋ ค์šด ๋ถ„์„ ์œ„ํ•ด ๋งˆ๋ จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตญ1๊ฐœ + ๋ฐ˜์ฐฌ4๊ฐœ (๋ฉ”์ธ1๊ฐœ, ์„œ๋ธŒ1๊ฐœ, ๋‚˜๋ฌผ ๋ฐ ๋ฐ˜์ฐฌ2๊ฐœ)
70
 
71
+ 17. Q: ๋ฐ˜์ฐฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋Š” ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?
72
+ A: ๋ฐ˜์ฐฌ๋ช…์„ ๋ง์”€ํ•ด์ฃผ์‹œ๋ฉด ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค
73
+
74
+ 18. Q: ๏ฟฝ๏ฟฝ์–‘์„ฑ๋ถ„์„ ์•Œ ์ˆ˜ ์žˆ๋‚˜์š”?
75
+ A: ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜์ฐฌ๋ช…์„ ๋ง์”€ํ•ด์ฃผ์‹œ๋ฉด ์˜์–‘์„ฑ๋ถ„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค
76
+
77
+ 19. Q: ์›์‚ฐ์ง€๋ฅผ ์•Œ๊ณ  ์‹ถ์–ด์š”
78
+ A: ์›์‚ฐ์ง€ํ‘œ๋ฅผ ๋งํฌ๋กœ ์ œ๊ณตํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค
79
+
80
+ == ์ด๋ฒคํŠธ/ํ˜œํƒ ๊ด€๋ จ ==
81
+ 20. Q: ์ด๋ฒคํŠธ๋Š” ์–ด๋””์„œ ๋ณด๋‚˜์š”?
82
+ A: ์ด๋ฒคํŠธ ์ฃผ๋ฌธ์ฐฝ์ด ๋ณ„๋„๋กœ ์žˆ์Šต๋‹ˆ๋‹ค
83
+
84
+ 21. Q: ์†Œ๊ฐœํ•˜๋ฉด ํ˜œํƒ์ด ์žˆ๋‚˜์š”?
85
+ A: ์†Œ๊ฐœํ•ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์†Œ๊ฐœํ•˜์‹  ๋ถ„๊ณผ ์†Œ๊ฐœ๋ฐ›์€ ๋ถ„ ๋ชจ๋‘์—๊ฒŒ ์„œ๋น„์Šค์ฐฌ ๋˜๋Š” ํฌ์ธํŠธ ์ ๋ฆฝ๊ธˆ์œผ๋กœ ํ˜œํƒ์„ ๋“œ๋ฆฝ๋‹ˆ๋‹ค
86
+
87
+ 22. Q: ํ›„๊ธฐ ๋‚จ๊ธฐ๋ฉด ์–ด๋–ค ํ˜œํƒ์ด ์žˆ๋‚˜์š”?
88
+ A: ํ›„๊ธฐ๋ฅผ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด 500ํฌ์ธํŠธ๋ฅผ ์ ๋ฆฝํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค
89
+
90
+ == ๊ธฐํƒ€ ==
91
+ 23. Q: ์ฃผ๋ฌธ ๋ˆ„๋ฝ์ธ ๊ฒƒ ๊ฐ™์•„์š”
92
+ A: ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”
93
+
94
+ ๋ชจ๋“  ๋ฌธ์˜์‚ฌํ•ญ์€ ๊ณ ๊ฐ์„ผํ„ฐ 010-8082-0047๋กœ ์—ฐ๋ฝ์ฃผ์„ธ์š”.
95
  """
96
 
97
  def chat_stream(self, message, history):
 
113
  contents=message,
114
  config=genai.types.GenerateContentConfig(
115
  system_instruction=system_prompt,
116
+ temperature=0.1 # ์ผ๊ด€๋œ ๋‹ต๋ณ€์„ ์œ„ํ•ด ๋‚ฎ๊ฒŒ ์„ค์ •
117
  )
118
  )
119
 
 
124
  yield partial_message
125
 
126
  except Exception as e:
127
+ yield f"์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ์„ผํ„ฐ(010-8082-0047)๋กœ ์—ฐ๋ฝํ•ด์ฃผ์„ธ์š”. ์˜ค๋ฅ˜: {str(e)}"
128
 
129
  # ์ฑ—๋ด‡ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
130
+ chatbot = SimpleBanchanChatbot()
131
+
132
+ # ๊ทธ๋ผ๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค
133
+ demo = gr.ChatInterface(
134
+ fn=chatbot.chat_stream,
135
+ title="๐Ÿฅข ๋ง›์žˆ๋Š”๋ฐ˜์ฐฌ๊ฐ€๊ฒŒ AI ์ƒ๋‹ด๋ด‡",
136
+ description="๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅธ ๋ฐ˜์ฐฌ๊ฐ€๊ฒŒ ์ƒ๋‹ด๋ด‡ (์ œ๋ฏธ๋‚˜์ด 2.0 + FAQ ๋ฐ์ดํ„ฐ)",
137
+ examples=[
138
+ "์ฃผ๋ฌธ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?",
139
+ "ํฌ์ธํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?",
140
+ "๋ฐฐ์†ก๋น„๊ฐ€ ์–ผ๋งˆ์ธ๊ฐ€์š”?",
141
+ "ํ™˜๋ถˆ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ์„ธ์š”",
142
+ "์ตœ์†Œ ์ฃผ๋ฌธ๊ธˆ์•ก์ด ์žˆ๋‚˜์š”?"
143
+ ],
144
+ theme=gr.themes.Soft(),
145
+ css="""
146
+ .gradio-container {
147
+ max-width: 800px !important;
148
+ margin: auto !important;
149
+ }
150
+ """
151
+ )
 
 
 
 
 
 
 
 
 
 
 
 
152
 
153
  if __name__ == "__main__":
154
+ demo.launch(
155
+ server_name="0.0.0.0",
156
+ server_port=7860,
157
+ share=True
158
+ )