ll7098ll commited on
Commit
5d5df43
ยท
verified ยท
1 Parent(s): 4885e65

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -77
app.py CHANGED
@@ -1,9 +1,8 @@
 
 
1
  import os
2
  import time
3
 
4
- import google.generativeai as genai
5
- import gradio as gr
6
-
7
  # Google Gemini API ํ‚ค ์„ค์ •
8
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
9
 
@@ -21,43 +20,30 @@ model = genai.GenerativeModel(
21
  generation_config=generation_config,
22
  )
23
 
24
- # ํ”„๋กฌํ”„ํŠธ ์„ค์ •
25
  SYSTEM_PROMPT = """
26
- ๋‹น์‹ ์€ ๊ต์ˆ˜ํ•™์Šต ํ™œ๋™ ์„ค๊ณ„ ์ „๋ฌธ๊ฐ€, ๊ต๊ณผ๊ต์œก ๋‚ด์šฉ ์ „๋ฌธ๊ฐ€, ๊ต์œก๊ณตํ•™์ž์ž…๋‹ˆ๋‹ค.
27
- ์„ ์ƒ๋‹˜๋“ค์ด ํ•™์Šต ์ฃผ์ œ์™€ ์‚ฌ๊ณ  ๋ฃจํ‹ด์„ ์ž…๋ ฅํ•˜๋ฉด, ํ•ด๋‹น ์ฃผ์ œ์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์‚ฌ๊ณ  ๋ฃจํ‹ด ํ™œ๋™ ์˜ˆ์‹œ๋ฅผ ์ƒ์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.
28
- **ํ™œ๋™ ์˜ˆ์‹œ ๊ตฌ์„ฑ ์š”์†Œ:**
29
- 1. ํ•™์Šต ์ฃผ์ œ
30
- 2. ์ ์šฉํ•  ์‚ฌ๊ณ  ๋ฃจํ‹ด ๋ฐ ์‚ฌ๊ณ  ๋ฃจํ‹ด์— ๋Œ€ํ•œ ์„ค๋ช…๋ช…
31
- 3. ํ™œ๋™ ๋ชฉํ‘œ
32
- 4. ํ™œ๋™ ๋‹จ๊ณ„๋ณ„ ์•ˆ๋‚ด
33
- - ๊ฐ ๋‹จ๊ณ„๋ณ„๋กœ ์‚ฌ๊ณ  ๋ฃจํ‹ด์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜๋Š”์ง€ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…
34
- - ์˜ˆ์‹œ ์งˆ๋ฌธ ํฌํ•จ
35
- 5. ํ™œ๋™ ์ค€๋น„๋ฌผ ๋ฐ ๊ธฐ๊ตฌ
36
- 6. ํ™œ๋™์„ ์œ„ํ•œ ์ž๋ฃŒ
37
- - ํ™œ๋™์— ํ•„์š”ํ•œ ์ž๋ฃŒ
38
- - ์ถ”๊ฐ€ ์ถ”์ฒœ ์ž๋ฃŒ
39
- 7. ํ™œ๋™์˜ ์œ ์˜์ 
40
- - ํ•™์ƒ ์ž…์žฅ ์œ ์˜์ 
41
- - ๊ต์‚ฌ ์ž…์žฅ ์œ ์˜์ 
42
- 8. ํ•™์ƒ์—๊ฒŒ ์ œ๊ณตํ•  ํ™œ๋™ ์•ˆ๋‚ด ์ž๋ฃŒ
43
- * ํ™œ๋™ ์•ˆ๋‚ด ์ž๋ฃŒ๋Š” ์ดˆ๋“ฑํ•™์ƒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ด๊ณ , ๋‹จ๊ณ„์ , ๋ช…์‹œ์ ์œผ๋กœ ์•ˆ๋‚ดํ•ด์ฃผ์„ธ์š”.
44
  """
45
 
46
- def generate_thinking_routine_example(topic, thinking_routine):
 
47
  """
48
- ํ•™์Šต ์ฃผ์ œ์™€ ์‚ฌ๊ณ  ๋ฃจํ‹ด์„ ์ž…๋ ฅ๋ฐ›์•„ ํ™œ๋™ ์˜ˆ์‹œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
49
- Args:
50
- topic (str): ํ•™์Šต ์ฃผ์ œ
51
- thinking_routine (str): ์ ์šฉํ•  ์‚ฌ๊ณ  ๋ฃจํ‹ด
52
- Returns:
53
- str: ์ƒ์„ฑ๋œ ํ™œ๋™ ์˜ˆ์‹œ
54
  """
 
55
 
56
  prompt = [
57
  SYSTEM_PROMPT,
58
- f"**ํ•™์Šต ์ฃผ์ œ:** {topic}",
59
- f"**์ ์šฉํ•  ์‚ฌ๊ณ  ๋ฃจํ‹ด:** {thinking_routine}",
60
- "**ํ™œ๋™ ์˜ˆ์‹œ:**",
61
  ]
62
 
63
  response = model.generate_content(prompt, stream=True)
@@ -68,52 +54,21 @@ def generate_thinking_routine_example(topic, thinking_routine):
68
  yield collected_text
69
  time.sleep(0.03)
70
 
71
- # Gradio ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ • - ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด ์ถ”๊ฐ€
 
 
 
 
 
 
 
 
72
  iface = gr.Interface(
73
- fn=generate_thinking_routine_example,
74
- inputs=[
75
- gr.Textbox(lines=2, label="ํ•™์Šต ์ฃผ์ œ ์ž…๋ ฅ"),
76
- gr.Dropdown(
77
- choices=[
78
- "See-Think-Wonder (๋ณด๊ณ -์ƒ๊ฐํ•˜๊ณ -๊ถ๊ธˆํ•ดํ•˜๊ธฐ)",
79
- "Zoom In (ํ™•๋Œ€)",
80
- "Think-Puzzle-Explore (์ƒ๊ฐ-๊ถ๊ธˆ-ํƒ๊ตฌ)",
81
- "Chalk Talk (์นจ๋ฌต ๋Œ€ํ™”)",
82
- "321 Bridge (3-2-1 ๋‹ค๋ฆฌ ์ง“๊ธฐ)",
83
- "Compass Points (๋‚˜์นจ๋ฐ˜)",
84
- "Explanation Game (์„ค๋ช… ๊ฒŒ์ž„)",
85
- "Headlines (ํ—ค๋“œ๋ผ์ธ)",
86
- "CSI: Color, Symbol, Image (์ƒ‰์ƒ, ๊ธฐํ˜ธ, ์ด๋ฏธ์ง€)",
87
- "Generate-Sort-Connect-Elaborate-Concept Maps (๊ฐœ๋…๋„)",
88
- "Connect-Extend-Challenge (์—ฐ๊ฒฐ-ํ™•์žฅ-๋„์ „)",
89
- "The 4 C's (4๊ฐ€์ง€ C)",
90
- "Micro Lab (๋ฏธ๋‹ˆ ์‹คํ—˜)",
91
- "I used to thinkโ€ฆNow I thinkโ€ฆ (์˜ˆ์ „์—” โ€ฆ ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์ง€๊ธˆ์€ โ€ฆ ๋ผ๊ณ  ์ƒ๊ฐํ•ด)",
92
- "What makes you say that? (๋ฌด์—‡ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋‹ˆ?)",
93
- "Circle Viewpoints (๋‹ค์–‘ํ•œ ๊ด€์ )",
94
- "Step Inside (์ž…์žฅ ๋ฐ”๊ฟ” ์ƒ๊ฐํ•˜๊ธฐ)",
95
- "Red Light, Yellow Light, Green Light (๋นจ๊ฐ„๋ถˆ, ๋…ธ๋ž€๋ถˆ, ์ดˆ๋ก๋ถˆ)",
96
- "Claim Support Question (์ฃผ์žฅ-๊ทผ๊ฑฐ-์งˆ๋ฌธ)",
97
- "Tug of War (์ค„๋‹ค๋ฆฌ๊ธฐ)",
98
- "Word-Phrase-Sentence (๋‹จ์–ด-๊ตฌ-๋ฌธ์žฅ)",
99
- "Think Aloud (์‚ฌ๊ณ  ๊ตฌ์ˆ )",
100
- "๊ด€์ฐฐ-๋น„๊ต๋Œ€์กฐ-๋ถ„๋ฅ˜",
101
- "๊ด€์ฐฐํ•˜๊ธฐ",
102
- "๋ฌด๋ฆฌ ์ง“๊ธฐ",
103
- "์˜ˆ์ƒํ•˜๊ธฐ",
104
- "๊ด€๊ณ„๋ง ๊ทธ๋ฆฌ๊ธฐ",
105
- "๋„๊ตฌ ์‚ฌ์šฉ์˜ ๋ฐฉ๋ฒ• ๋ฐ ์ ˆ์ฐจ(์ˆœ์„œ ๋‹จ๊ณ„์ ์œผ๋กœ ๏ฟฝ๏ฟฝ๏ฟฝ์‹œ)"
106
- ],
107
- label="์‚ฌ๊ณ  ๋ฃจํ‹ด ์„ ํƒ"
108
- ),
109
- ],
110
- outputs=gr.Textbox(lines=15, label="์‚ฌ๊ณ  ๋ฃจํ‹ด ํ™œ์šฉ ์˜ˆ์‹œ"),
111
- title="ํ•™์Šต ํ™œ๋™ ์„ค๊ณ„ ๋„์šฐ๋ฏธ: ์‚ฌ๊ณ  ๋ฃจํ‹ด ํ™œ์šฉ ํŽธ",
112
- description="์„ ์ƒ๋‹˜์ด ํ•™์Šต ์ฃผ์ œ์™€ ์‚ฌ๊ณ  ๋ฃจํ‹ด์„ ์„ ํƒํ•˜์‹œ๋ฉด, ํ•ด๋‹น ์ฃผ์ œ์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์‚ฌ๊ณ  ๋ฃจํ‹ด ํ™œ๋™ ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.",
113
- examples=[
114
- ["๊ด‘ํ•ฉ์„ฑ", "See-Think-Wonder (๋ณด๊ณ -์ƒ๊ฐํ•˜๊ณ -๊ถ๊ธˆํ•ดํ•˜๊ธฐ)"],
115
- ["์กฐ์„  ์‹œ๋Œ€์˜ ๊ณผํ•™ ๊ธฐ์ˆ ", "Think-Puzzle-Explore (์ƒ๊ฐ-๊ถ๊ธˆ-ํƒ๊ตฌ)"],
116
- ]
117
  )
118
 
119
  # ์ธํ„ฐํŽ˜์ด์Šค ์‹คํ–‰
 
1
+ import gradio as gr
2
+ import google.generativeai as genai
3
  import os
4
  import time
5
 
 
 
 
6
  # Google Gemini API ํ‚ค ์„ค์ •
7
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
8
 
 
20
  generation_config=generation_config,
21
  )
22
 
23
+ # ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ
24
  SYSTEM_PROMPT = """
25
+ ๋‹น์‹ ์€ ์ฐฝ์˜์ ์ธ ๋ฐœ๋ช…๊ฐ€์ด์ž ๋งˆ์ดํฌ๋กœ๋น„ํŠธ ์ „๋ฌธ๊ฐ€์ž…๋‹ˆ๋‹ค.
26
+ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๋งˆ์ดํฌ๋กœ๋น„ํŠธ ์„ผ์„œ ์กฐํ•ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ,
27
+ ํฅ๋ฏธ๋กญ๊ณ  ์‹ค์šฉ์ ์ธ ๋ฐœ๋ช…ํ’ˆ ์•„์ด๋””์–ด๋ฅผ ์ œ์•ˆํ•ด์ฃผ์„ธ์š”.
28
+
29
+ **์‘๋‹ต ํ˜•์‹:**
30
+
31
+ 1. **๋ฐœ๋ช…ํ’ˆ ์•„์ด๋””์–ด:** (๊ฐ„๋žตํ•œ ์„ค๋ช…)
32
+ 2. **ํ™œ์šฉ ์„ผ์„œ:** (์„ ํƒ๋œ ์„ผ์„œ ๋ชฉ๋ก)
33
+ 3. **์ƒ์„ธ ์„ค๋ช…:** (์•„์ด๋””์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…, ์ž‘๋™ ๋ฐฉ์‹, ํ™œ์šฉ ์˜ˆ์‹œ ํฌํ•จ)
34
+ 4. **์ถ”๊ฐ€ ์ •๋ณด:** (ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒ, ๊ด€๋ จ ํŠœํ† ๋ฆฌ์–ผ ๋งํฌ ๋“ฑ)
 
 
 
 
 
 
 
 
35
  """
36
 
37
+
38
+ def generate_invention_idea(selected_sensors):
39
  """
40
+ ์„ ํƒ๋œ ์„ผ์„œ ์กฐํ•ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐœ๋ช…ํ’ˆ ์•„์ด๋””์–ด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
 
 
 
 
 
41
  """
42
+ sensor_list = ", ".join(selected_sensors)
43
 
44
  prompt = [
45
  SYSTEM_PROMPT,
46
+ f"**์„ ํƒ๋œ ์„ผ์„œ:** {sensor_list}",
 
 
47
  ]
48
 
49
  response = model.generate_content(prompt, stream=True)
 
54
  yield collected_text
55
  time.sleep(0.03)
56
 
57
+
58
+ # ์„ผ์„œ ๋ชฉ๋ก (์ฒดํฌ๋ฐ•์Šค ์˜ต์…˜)
59
+ sensor_options = [
60
+ "๊ฐ€์†๋„ ์„ผ์„œ", "์ž๊ธฐ์žฅ ์„ผ์„œ", "๊ด‘ ์„ผ์„œ", "์˜จ๋„ ์„ผ์„œ", "ํ„ฐ์น˜ ์„ผ์„œ", "๋ฒ„ํŠผ",
61
+ "์ดˆ์ŒํŒŒ ์„ผ์„œ", "ํ† ์–‘ ์ˆ˜๋ถ„ ์„ผ์„œ", "์กฐ๋„ ์„ผ์„œ", "์†Œ๋ฆฌ ์„ผ์„œ", "์˜จ์Šต๋„ ์„ผ์„œ",
62
+ "๊ฐ€์Šค ์„ผ์„œ", "์ ์™ธ์„  ์„ผ์„œ", "์ปฌ๋Ÿฌ ์„ผ์„œ", "GPS ๋ชจ๋“ˆ", "RFID ๋ชจ๋“ˆ"
63
+ ]
64
+
65
+ # Gradio ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •
66
  iface = gr.Interface(
67
+ fn=generate_invention_idea,
68
+ inputs=gr.CheckboxGroup(choices=sensor_options, label="๋งˆ์ดํฌ๋กœ๋น„ํŠธ ์„ผ์„œ ์„ ํƒ"),
69
+ outputs=gr.Textbox(lines=15, label="๋ฐœ๋ช…ํ’ˆ ์•„์ด๋””์–ด"),
70
+ title="๋งˆ์ดํฌ๋กœ๋น„ํŠธ ๋ฐœ๋ช…ํ’ˆ ์•„์ด๋””์–ด ์ƒ์„ฑ๊ธฐ",
71
+ description="์›ํ•˜๋Š” ์„ผ์„œ๋ฅผ ์„ ํƒํ•˜๋ฉด, ๋งˆ์ดํฌ๋กœ๋น„ํŠธ๋ฅผ ํ™œ์šฉํ•œ ๋ฐœ๋ช…ํ’ˆ ์•„์ด๋””์–ด๋ฅผ ์ œ์•ˆํ•ด์ค๋‹ˆ๋‹ค.",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  )
73
 
74
  # ์ธํ„ฐํŽ˜์ด์Šค ์‹คํ–‰