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()