ll7098ll commited on
Commit
7198cb0
ยท
verified ยท
1 Parent(s): 08cab07

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +153 -25
app.py CHANGED
@@ -1,39 +1,167 @@
 
 
 
 
 
 
1
  import os
2
- import time
3
- import gradio as gr
4
  import google.generativeai as genai
 
5
 
6
- # Google Gemini API ํ‚ค ์„ค์ •
7
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
8
 
9
- # ๋ชจ๋ธ ์„ค์ •
10
  generation_config = {
11
- "temperature": 1,
12
- "top_p": 0.95,
13
- "top_k": 64,
14
- "max_output_tokens": 8192,
15
- "response_mime_type": "text/plain",
16
  }
 
17
  model = genai.GenerativeModel(
18
- model_name="gemini-1.5-pro",
19
- generation_config=generation_config,
20
- system_instruction="์ดˆ๋“ฑํ•™์ƒ์ด ๊ต๊ณผ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ์„ ์ƒ๋‹˜. ๋‹ค์–‘ํ•œ ์˜ˆ์‹œ์™€ ๊ตฌ์ฒด์  ์‚ฌ๋ก€๋ฅผ ๋“ค์–ด์„œ ์„ค๋ช…. ์‚ฌ์ง„์ด๋‚˜ ๋™์˜์ƒ ์ž๋ฃŒ๊ฐ€ ์žˆ์œผ๋ฉด ์ฒจ๋ถ€. ์ถœ์ฒ˜ ํ‘œ์‹œ. ์–ด๋ ค์šด ๋‹จ์–ด๋Š” ๋ณ„๋„๋กœ ์„ค๋ช…ํ•ด์ค˜. ์„ค๋ช…๊ธ€์˜ ๋ถ„๋Ÿ‰์€ 1000~2000์ž ์ •๋„๋กœ ํ•ด์ค˜.",
 
21
  )
22
 
23
- def generate_response(text):
24
- response = model.generate_text(
25
- text=text
26
- )
27
- return response.result
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
- with gr.Blocks() as demo:
30
- gr.Markdown("<div style='font-size: 30px; font-weight: bold;'>์นœ์ ˆํ•œ AI ์„ ์ƒ๋‹˜(Gemini Pro 1.5)</div>")
31
- gr.Markdown("๊ถ๊ธˆํ•œ ๊ฒƒ์€ ๋ฌด์—‡์ด๋“  ๋ฌผ์–ด๋ณด์„ธ์š”. AI ์„ ์ƒ๋‹˜์ด ์นœ์ ˆํ•˜๊ฒŒ ์•Œ๋ ค์ค„ ๊ฑฐ์˜ˆ์š”!")
 
 
 
32
 
33
- Q = gr.Textbox(label="์งˆ๋ฌธ", placeholder="์งˆ๋ฌธ์„ ๋„ฃ์–ด์ฃผ์„ธ์š”.")
34
- btn = gr.Button("์งˆ๋ฌธํ•˜๊ธฐ")
35
- A = gr.TextArea(label="AI ์„ ์ƒ๋‹˜์˜ ์„ค๋ช…", placeholder="AI ์„ ์ƒ๋‹˜์ด ๋‹ต๋ณ€ ์ค‘ ์ž…๋‹ˆ๋‹ค.")
36
 
37
- btn.click(generate_response, inputs=Q, outputs=A)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
- demo.launch()
 
 
1
+ """
2
+ Google AI Python SDK ๋ฐ Gradio ์„ค์น˜
3
+
4
+ $ pip install google-generativeai gradio
5
+ """
6
+
7
  import os
 
 
8
  import google.generativeai as genai
9
+ import gradio as gr
10
 
11
+ # API ํ‚ค ์„ค์ • (์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ด€๋ฆฌ)
12
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
13
 
14
+ # ๋ชจ๋ธ ์ƒ์„ฑ
15
  generation_config = {
16
+ "temperature": 1,
17
+ "top_p": 0.95,
18
+ "top_k": 64,
19
+ "max_output_tokens": 19000,
20
+ "response_mime_type": "text/plain",
21
  }
22
+
23
  model = genai.GenerativeModel(
24
+ model_name="gemini-1.5-pro",
25
+ generation_config=generation_config,
26
+ # safety_settings = ์•ˆ์ „ ์„ค์ • ์กฐ์ •
27
+ # https://ai.google.dev/gemini-api/docs/safety-settings ์ฐธ์กฐ
28
  )
29
 
30
+ def generate_curriculum(subject_name, integrated_subjects, grade, semester, hours):
31
+ """
32
+ ์ž…๋ ฅ๋œ ๊ณผ๋ชฉ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•™๊ต ์ž์œจ ์‹œ๊ฐ„ ๊ต์œก ๊ณผ์ •์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
33
+
34
+ Args:
35
+ subject_name: ๊ณผ๋ชฉ๋ช…
36
+ integrated_subjects: ํŽธ์„ฑ๊ต๊ณผ
37
+ grade: ์ ์šฉ ํ•™๋…„
38
+ semester: ์ ์šฉ ํ•™๊ธฐ
39
+ hours: ์‹œ์ˆ˜
40
+
41
+ Returns:
42
+ ์ƒ์„ฑ๋œ ํ•™๊ต ์ž์œจ ์‹œ๊ฐ„ ๊ต์œก ๊ณผ์ • ๋ฌธ์ž์—ด
43
+ """
44
+ prompt = [
45
+ "ํ•™๊ต์ž์œจ์‹œ๊ฐ„, ๊ต์œก๊ณผ์ • ์„ค๊ณ„ ์ „๋ฌธ๊ฐ€",
46
+ f"input: ๊ณผ๋ชฉ๋ช…: {subject_name}\nํŽธ์„ฑ๊ต๊ณผ: {integrated_subjects}\nํ•™๋…„: {grade}ํ•™๋…„\n ํ•™๊ธฐ: {semester}ํ•™๊ธฐ\n์‹œ์ˆ˜: {hours}์‹œ๊ฐ„",
47
+ f"""
48
+ output:
49
+ ## ํ•™๊ต ์ž์œจ ์‹œ๊ฐ„ ๊ต์œก๊ณผ์ • ์„ค๊ณ„: {subject_name}
50
+
51
+ **1. ๊ณผ๋ชฉ ๊ฐœ์š”**
52
+
53
+ * **๊ณผ๋ชฉ๋ช…**: {subject_name}
54
+ * **ํŽธ์„ฑ ๊ต๊ณผ**: {integrated_subjects}
55
+ * **ํ•™๋…„**: {grade}ํ•™๋…„
56
+ * **ํ•™๊ธฐ**: {semester}ํ•™๊ธฐ
57
+ * **์‹œ์ˆ˜**: {hours}์‹œ๊ฐ„
58
+ * **๊ต๊ณผ์šฉ ๋„์„œ ํ™œ์šฉ ๊ณ„ํš**:
59
+
60
+ **2. ์„ฑ๊ฒฉ ๋ฐ ๋ชฉํ‘œ**
61
+
62
+ * **๊ฐ€. ์„ฑ๊ฒฉ**:
63
+ * **๋‚˜. ๋ชฉํ‘œ**
64
+ *
65
+ *
66
+ *
67
+ *
68
+
69
+ **3. ๋‚ด์šฉ ์ฒด๊ณ„ ๋ฐ ์„ฑ์ทจ ๊ธฐ์ค€**
70
+
71
+ **๊ฐ€. ๋‚ด์šฉ ์ฒด๊ณ„**
72
+
73
+ | ํ•ต์‹ฌ ์•„์ด๋””์–ด | ๋ฒ”์ฃผ | ๋‚ด์šฉ ์š”์†Œ | ๊ด€๋ จ ๊ต๊ณผ |
74
+ |---|---|---|---|
75
+ | | | | |
76
+ | | | | |
77
+ | | | | |
78
+ | | | | |
79
+ | | | | |
80
+
81
+ **๋‚˜. ์„ฑ์ทจ ๊ธฐ์ค€**
82
 
83
+ *
84
+ *
85
+ *
86
+ *
87
+ *
88
+ *
89
 
90
+ **4. ๊ต์ˆ˜ยทํ•™์Šต ๋ฐ ํ‰๊ฐ€**
 
 
91
 
92
+ **๊ฐ€. ๊ต์ˆ˜ยทํ•™์Šต**
93
+
94
+ * **๊ต์ˆ˜ยทํ•™์Šต ๋ฐฉํ–ฅ**
95
+ *
96
+ *
97
+ *
98
+ *
99
+
100
+ * **๊ต์ˆ˜ยทํ•™์Šต ๋ฐฉ๋ฒ• ๋ฐ ์œ ์˜์ **
101
+ *
102
+ *
103
+ *
104
+ *
105
+
106
+
107
+ **๋‚˜. ํ‰๊ฐ€**
108
+
109
+ * **ํ‰๊ฐ€ ๋ฐฉํ–ฅ**
110
+ *
111
+ *
112
+ *
113
+
114
+ * **ํ‰๊ฐ€ ๋ฐฉ๋ฒ•**
115
+ *
116
+ *
117
+ *
118
+ *
119
+
120
+ **5. ์ฐจ์‹œ๋ณ„ ๊ณ„ํš**
121
+
122
+ | ์ฐจ์‹œ | ์ฃผ์ œ | ํ•™์Šต ๋ชฉํ‘œ | ํ™œ๋™ ๋‚ด์šฉ | ํ‰๊ฐ€ |
123
+ |---|---|---|---|---|
124
+ | | | | | |
125
+ | | | | | |
126
+ | | | | | |
127
+ | | | | | |
128
+ | | | | | |
129
+ | | | | | |
130
+ | | | | | |
131
+ | | | | | |
132
+
133
+ **6. ๊ต์ˆ˜ยทํ•™์Šต ์ž๋ฃŒ**
134
+
135
+ *
136
+ *
137
+ *
138
+ *
139
+
140
+ **7. ๊ธฐ๋Œ€ ํšจ๊ณผ**
141
+
142
+ *
143
+ *
144
+ *
145
+ *
146
+ """,
147
+ ]
148
+ response = model.generate_content(prompt)
149
+ return response.text
150
+
151
+ # Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ
152
+ iface = gr.Interface(
153
+ fn=generate_curriculum,
154
+ inputs=[
155
+ gr.inputs.Textbox(lines=1, label="๊ณผ๋ชฉ๋ช…"),
156
+ gr.inputs.Textbox(lines=1, label="ํŽธ์„ฑ๊ต๊ณผ"),
157
+ gr.inputs.Number(label="์ ์šฉ ํ•™๋…„", default=1),
158
+ gr.inputs.Number(label="์ ์šฉ ํ•™๊ธฐ", default=1),
159
+ gr.inputs.Number(label="์‹œ์ˆ˜", default=10),
160
+ ],
161
+ outputs=gr.outputs.Textbox(label="์ƒ์„ฑ๋œ ๊ต์œก ๊ณผ์ •"),
162
+ title="ํ•™๊ต ์ž์œจ ์‹œ๊ฐ„ ์ƒ์„ฑ ์ฑ—๋ด‡",
163
+ description="๊ณผ๋ชฉ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ž์œจ ์‹œ๊ฐ„ ๊ต์œก ๊ณผ์ •์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.",
164
+ )
165
 
166
+ # ์ฑ—๋ด‡ ์‹คํ–‰
167
+ iface.launch()