ssboost commited on
Commit
d961d8b
ยท
verified ยท
1 Parent(s): 146c30c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -36
app.py CHANGED
@@ -4,7 +4,14 @@ import os
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 = """
@@ -105,16 +112,18 @@ class SimpleBanchanChatbot:
105
  - FAQ์— ์—†๋Š” ๋‚ด์šฉ์€ "์ž์„ธํ•œ ์‚ฌํ•ญ์€ ๊ณ ๊ฐ์„ผํ„ฐ(010-8082-0047)๋กœ ๋ฌธ์˜ํ•ด์ฃผ์„ธ์š”"๋ผ๊ณ  ์•ˆ๋‚ดํ•ด์ฃผ์„ธ์š”
106
  - ๋ฐ˜๋ง๋ณด๋‹ค๋Š” ์กด๋Œ“๋ง์„ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”
107
  - ๊ฐ„๊ฒฐํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋‹ต๋ณ€ํ•ด์ฃผ์„ธ์š”
 
108
  """
109
 
110
  try:
111
- response = self.genai_client.models.generate_content_stream(
112
- model="gemini-2.0-flash-exp",
113
- contents=message,
114
- config=genai.types.GenerateContentConfig(
115
- system_instruction=system_prompt,
116
- temperature=0.1 # ์ผ๊ด€๋œ ๋‹ต๋ณ€์„ ์œ„ํ•ด ๋‚ฎ๊ฒŒ ์„ค์ •
117
- )
 
118
  )
119
 
120
  partial_message = ""
@@ -124,35 +133,46 @@ class SimpleBanchanChatbot:
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
- )
 
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
+ # ์ œ๋ฏธ๋‚˜์ด ํด๋ผ์ด์–ธํŠธ ์„ค์ •
13
+ genai.configure(api_key=api_key)
14
+ self.model = genai.GenerativeModel('gemini-2.0-flash-exp')
15
 
16
  # ์—‘์…€์—์„œ ์ถ”์ถœํ•œ ๋ชจ๋“  FAQ ๋ฐ์ดํ„ฐ
17
  self.faq_data = """
 
112
  - FAQ์— ์—†๋Š” ๋‚ด์šฉ์€ "์ž์„ธํ•œ ์‚ฌํ•ญ์€ ๊ณ ๊ฐ์„ผํ„ฐ(010-8082-0047)๋กœ ๋ฌธ์˜ํ•ด์ฃผ์„ธ์š”"๋ผ๊ณ  ์•ˆ๋‚ดํ•ด์ฃผ์„ธ์š”
113
  - ๋ฐ˜๋ง๋ณด๋‹ค๋Š” ์กด๋Œ“๋ง์„ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”
114
  - ๊ฐ„๊ฒฐํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋‹ต๋ณ€ํ•ด์ฃผ์„ธ์š”
115
+ - ์ธ์‚ฌ๋ง๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๊ฐ์‚ฌ์ธ์‚ฌ๋กœ ๋งˆ๋ฌด๋ฆฌํ•ด์ฃผ์„ธ์š”
116
  """
117
 
118
  try:
119
+ response = self.model.generate_content(
120
+ message,
121
+ generation_config=genai.types.GenerationConfig(
122
+ temperature=0.1,
123
+ max_output_tokens=1000,
124
+ ),
125
+ system_instruction=system_prompt,
126
+ stream=True
127
  )
128
 
129
  partial_message = ""
 
133
  yield partial_message
134
 
135
  except Exception as e:
136
+ yield f"์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ์„ผํ„ฐ(010-8082-0047)๋กœ ์—ฐ๋ฝํ•ด์ฃผ์„ธ์š”."
137
 
138
  # ์ฑ—๋ด‡ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
139
+ try:
140
+ chatbot = SimpleBanchanChatbot()
141
+
142
+ # ๊ทธ๋ผ๋””์˜ค ์ธํ„ฐํŽ˜์ด์Šค
143
+ demo = gr.ChatInterface(
144
+ fn=chatbot.chat_stream,
145
+ title="๐Ÿฅข ๋ง›์žˆ๋Š”๋ฐ˜์ฐฌ๊ฐ€๊ฒŒ AI ์ƒ๋‹ด๋ด‡",
146
+ description="์ œ๋ฏธ๋‚˜์ด 2.0 ๊ธฐ๋ฐ˜ ๋ฐ˜์ฐฌ๊ฐ€๊ฒŒ ๊ณ ๊ฐ ์ƒ๋‹ด๋ด‡์ž…๋‹ˆ๋‹ค. ๊ถ๊ธˆํ•œ ๊ฒƒ์„ ๋ฌผ์–ด๋ณด์„ธ์š”!",
147
+ examples=[
148
+ "์ฃผ๋ฌธ์€ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?",
149
+ "ํฌ์ธํŠธ๋Š” ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?",
150
+ "๋ฐฐ์†ก๋น„๊ฐ€ ์–ผ๋งˆ์ธ๊ฐ€์š”?",
151
+ "ํ™˜๋ถˆ ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ฃผ์„ธ์š”",
152
+ "์ •๊ธฐ์‹ ๊ตฌ์„ฑ์ด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”?",
153
+ "ํ›„๊ธฐ ์“ฐ๋ฉด ํ˜œํƒ์ด ์žˆ๋‚˜์š”?",
154
+ "๋ฐ˜์ฐฌ์ด ์ƒํ•œ ๊ฒƒ ๊ฐ™์•„์š”",
155
+ "์›์‚ฐ์ง€๋ฅผ ์•Œ๊ณ  ์‹ถ์–ด์š”"
156
+ ],
157
+ theme=gr.themes.Soft(),
158
+ css="""
159
+ .gradio-container {
160
+ max-width: 800px !important;
161
+ margin: auto !important;
162
+ }
163
+ """
164
+ )
165
+
166
+ except Exception as e:
167
+ # API ํ‚ค๊ฐ€ ์—†์„ ๋•Œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ
168
+ def error_message(message, history):
169
+ yield "โŒ GEMINI_API_KEY๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ฌธ์˜ํ•˜์„ธ์š”."
170
+
171
+ demo = gr.ChatInterface(
172
+ fn=error_message,
173
+ title="๐Ÿฅข ์„ค์ • ์˜ค๋ฅ˜",
174
+ description="API ํ‚ค ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค."
175
+ )
176
 
177
  if __name__ == "__main__":
178
+ demo.launch()