ll7098ll commited on
Commit
4171b8d
·
verified ·
1 Parent(s): aad1af2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -189
app.py CHANGED
@@ -4,196 +4,52 @@ import time
4
  import google.generativeai as genai
5
  import streamlit as st
6
 
7
- # Google Gemini API 설정
8
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
9
 
10
- # 스타일 설정
11
- st.markdown(
12
- """
13
- <style>
14
- .stApp {
15
- background-color: #f5f5f5; /* 배경색 설정 */
16
- }
17
- .stTextInput>div>div>textarea {
18
- font-size: 16px; /* 텍스트 입력 영역 폰트 크기 조정 */
19
- padding: 10px; /* 텍스트 입력 영역 패딩 추가 */
20
- border-radius: 5px; /* 텍스트 입력 영역 모서리 둥글게 */
21
- }
22
- .stButton>button {
23
- background-color: #007bff; /* 버튼 배경색 설정 */
24
- color: white; /* 버튼 텍스트 색상 설정 */
25
- padding: 10px 20px; /* 버튼 패딩 설정 */
26
- border: none; /* 버튼 테두리 없애기 */
27
- border-radius: 5px; /* 버튼 모서리 둥글게 */
28
- cursor: pointer; /* 마우스 커서 모양 변경 */
29
- }
30
- .stSelectbox>div>div>select {
31
- font-size: 16px; /* 셀렉트 박스 폰트 크기 조정 */
32
- padding: 5px; /* 셀렉트 박스 패딩 추가 */
33
- border-radius: 5px; /* 셀렉트 박스 모서리 둥글게 */
34
- }
35
- .stNumberInput>div>div>input {
36
- font-size: 16px; /* 숫자 입력 영역 폰트 크기 조정 */
37
- padding: 5px; /* 숫자 입력 영역 패딩 추가 */
38
- border-radius: 5px; /* 숫자 입력 영역 모서리 둥글게 */
39
- }
40
- .reportview-container .main .block-container {
41
- padding-top: 2rem; /* 상단 패딩 추가 */
42
- padding-bottom: 2rem; /* 하단 패딩 추가 */
43
- padding-left: 3rem; /* 좌측 패딩 추가 */
44
- padding-right: 3rem; /* 우측 패딩 추가 */
45
- }
46
- </style>
47
- """,
48
- unsafe_allow_html=True,
49
  )
50
 
51
-
52
- def generate_uoi(grade_level, key_concepts, related_concept, uoi_intention):
53
- generation_config = {
54
- "temperature": 0.3,
55
- "top_p": 0.95,
56
- "top_k": 40,
57
- "max_output_tokens": 15000,
58
- "response_mime_type": "text/plain",
59
- }
60
-
61
- model = genai.GenerativeModel(
62
- model_name="gemini-1.5-pro-002",
63
- generation_config=generation_config,
64
- )
65
-
66
- selected_key_concepts = ", ".join(key_concepts)
67
-
68
- # 프롬프트 생성
69
- prompt = f"""
70
- International Baccalaureate 전문가, 교수학습설계 전문가, 개념기반 교육과정 전문가, 개념기반 탐구학습 전문가, 인지심리학자, 사고기능 전문가입니다.
71
- 위 내용의 전문가로서 아래 입력된 핵심개념, 관련개념, UOI 의도를 기반으로, IB PYP UOI를 설계해주세요.
72
- Dick & Caray의 체제적 교수설계를 적용하고, 개념기반 탐구학습 절차에 따라 구체적인 학습 활동과 평가 계획을 포함하여 상세하게 작성되어야 합니다.
73
- 특히, 제시된 학년 수준에 맞는 활동과 내용을 포함해야 합니다
74
-
75
- ## 개념기반 탐구학습 절차
76
- (각 단계별로 학습 활동 및 내용, 예상되는 학생 반응, 교사의 역할 등을 구체적으로 기술해야 합니다.)
77
- 1. 관계맺기(Engage)
78
- • 학생들이 학습 주제에 관심 갖게 하기 (예: 흥미로운 이야기, 시각 자료, 게임 활용)
79
- 학생들의 사전 지식을 이끌어 내고 평가하기 (예: 브레인스토밍, KWL 차트, 질문 활용)
80
- 들이 질문할 수 있도록 유도하고 초기 질문 모으기 (예: 질문 상자, 씽크 페어 쉐어 활용)
81
- • 학습의 목적과 범위 설정하기 (예: 학습 목표 공유, 학습 내용 안내)
82
- 2. 집중기(Focus)
83
- • 학생들이 단원의 주요 개념과 관련 개념을 함께 이해할 수 있도록 하기 (예: 개념 지도, 용어 정의 활동, 전문가 초청 강연)
84
- • “조사하기” 단계에서 더 알아볼 수 있는 관련된 사실적 예를 소개하기 (예: 관련 사진, 동영상, 기사 자료 제시)
85
- 3. 조사하기/연구하기(Investigate)
86
- • 사실적 예와 사례 연구를 더 알아보고 단원 개념과 연결시키기 (예: 실험, 조사, 인터뷰, 현장 학습)
87
- • 교과 내 또는 교과 간의 기능을 습득하기 (예: 읽기, 쓰기, 말하기, 듣기, 토론, 발표)
88
- 4. 조직하기/조직 및 정리하기(Organize)
89
- • 다른 자료와 방법 또는 교과를 사용하여 개념과 생각을 나타내기 (예: 마인드 맵, 포스터, 그림, 글쓰기, 연극, 발표)
90
- • 사실적 그리고 개념적 수준에서 생각을 구성하기 (예: 분류 활동, 비교 분석 활동, 토론, 논술)
91
- 5. ���반화하기(Generalize)
92
- • 사실적 예시 안에서 존재하는 패턴을 알아내고 연결성 찾기 (예: 패턴 찾기 활동, 규칙 만들기 활동, 그래프 활용)
93
- • 전이 가능한 개념적 이해를 명확히 하기 (예: 개념 정리 활동, 요약 활동, 개념 적용 문제 풀이)
94
- 6. 전이하기(Transfer)
95
- • 새로운 상황에 일반화를 적용하기 (예: 실생활 문제 해결, 프로젝트 활동, 역할극)
96
- • 학습에 관한 의미 있는 행동 실천하기 (예: 캠페인 활동, 전시회, 발표회)
97
- 7. 전 과정에서 성찰하기(Reflect)
98
- • 탐구 과정이나 탐구 과정의 마지막에 개별 혹은 그룹으로 평가하기 (예: 자기 평가, 동료 평가, 포트폴리오 평가)
99
- • 학생들이 자신의 학습 과정을 계획하고 통제할 수 있도록 하기 (예: 학습 계획 세우기, 학습 전략 선택하기, 학습 과정 점검하기)
100
-
101
- ## IB PYP 핵심개념 (참고)
102
- (아래 핵심개념들을 참고하여 UOI를 설계할 수 있습니다.)
103
- 1. 형태: 어떤 모습인가? 모든 것이 관찰, 식별, 설명이 가능하며 카테고리로 분류할 수 있는 인식 가능한 특징이 있는 형태를 가진다는 것을 이해합니다. (성질, 구조, 유사점, 차이점, 패턴)
104
- 2. 기능: 어떻게 작용하는가? 모든 것이 조사 가능한 목적, 역할 또는 행동 방식을 가짐을 이해합니다. (행동, 소통, 패턴, 역할, 체제)
105
- 3. 인과 관계: 왜 그런가? 어떤 일도 이유 없이 발생하지 않으며, 모든 일에는 인과 관계가 존재하고 행동에는 결과가 수반된다는 것을 이해합니다. (결과, 순서, 패턴, 영향)
106
- 4. 변화: 어떻게 변화되고 있는가? 변화란 한 상태에서 다른 상태로 이동하는 과정임을 이해합니다. 변화는 보편적이며 불가피합니다. (적응, 성장, 주기, 순서, 변형)
107
- 5. 연결성: 다른 것과 어떻게 연결되어 있는가? 우리가 모든 개별적인 요소의 행동이 다른 것에 영향을 미치는 상호작용 체계의 세상에 살고 있음을 이해합니다. (체제, 관계, 연결망, 항상성, 상호의존)
108
- 6. 관점: 시점이란 무엇인가? 지식이 서로 다른 해석, 이해와 관찰결과로 이어지는 서로 다른 관점에 의해 중재되며, 개인적, 집단적, 문화적 또는 과목별로 세분화된 관점이 존재할 수 있음을 이해합니다. (주관성, 진실, 신념, 의견, 편견)
109
- 7. 책임: 우리의 의무는 무엇인가? 사람들이 자신의 이해, 신념과 가치에 기반해 선택을 하고, 그 선택에 기반한 실천을 통해 변화를 만들 수 있다는 것을 이해합니다. (권리, 시민 의식, 가치, 정의, 주도성)
110
-
111
- ## 입력 내용
112
- 1. 학년: {grade_level}
113
- 2. 핵심개념: {selected_key_concepts}
114
- 3. 관련개념: {related_concept}
115
- 4. UOI 의도: {uoi_intention}
116
-
117
- ## UOI 계획서
118
- (위 내용들을 바탕으로 아래 UOI 계획서를 구체적인 예시와 함께 작성해주세요.)
119
- 1. 중심 아이디어(Central Idea)
120
- (핵심 개념 및 관련 개념을 바탕으로 학생들이 UOI를 통해 배우게 될 핵심적인 내용을 명확하고 간결하게 제시합니다.)
121
- 2. 핵심개념: {selected_key_concepts}
122
- 3. 관련개념: {related_concept}
123
- 4. UOI 의도: {uoi_intention}
124
- 5. 학습자상(Learner profile)
125
- (UOI 설계 내용과 관련된 IB 학습자상을 구체적으로 설명합니다.)
126
- 6. 학습 접근 방법(ATL)
127
- (UOI에서 중점적으로 다루어질 학습 접근 방법을 설명하고, 각 LOI에서 어떻게 적용될지 예시를 들어 설명합니다.)
128
-
129
- 7. LOI 1, 탐구목록 1 (개념기반 탐구학습 절차에 따른 설계)
130
- - 핵심개념 및 관련개념
131
- - LOI 1의 일반화된 지식 (LOI 1을 통해 학생들이 배우게 될 핵심적인 지식을 일반화하여 제시합니다.)
132
- - 관계맺기
133
- - 집중하기
134
- - 조사하기/연구하기
135
- - 조직하기/조직 및 정리하기
136
- - 일반화하기
137
- - 전이하기
138
- - 전 과정에서 성찰하기
139
-
140
- 8. LOI 2, 탐구목록 2 (개념기반 탐구학습 절차에 따른 설계)
141
- - 핵심개념 및 관련개념
142
- - LOI 2의 일반화된 지식 (LOI 2를 통해 학생들이 배우게 될 핵심적인 지식을 일반화하여 제시합니다.)
143
- - 관계맺기
144
- - 집중하기
145
- - 조사하기/연구하기
146
- - 조직하기/조직 및 정리하기
147
- - 일반화하기
148
- - 전이하기
149
- - 전 과정에서 성찰하기
150
-
151
- 9. LOI 3, 탐구목록 3 (개념기반 탐구학��� 절차에 따른 설계)
152
- - 핵심개념 및 관련개념
153
- - LOI 3의 일반화된 지식 (LOI 3를 통해 학생들이 배우게 될 핵심적인 지식을 일반화하여 제시합니다.)
154
- - 관계맺기
155
- - 집중하기
156
- - 조사하기/연구하기
157
- - 조직하기/조직 및 정리하기
158
- - 일반화하기
159
- - 전이하기
160
- - 전 과정에서 성찰하기
161
- 10. 평가 계획 (루브릭)
162
- - 수행과제 (GRASPS)
163
- (Goal, Role, Audience, Situation, Product, Standards & Criteria를 포함하여 한국어로 구체적으로 제시합니다.)
164
- - 평가요소
165
- - 평가기준 루브릭(평가 요소별 상, 중, 하 구체적이고 명확한 기준)
166
- """
167
-
168
- full_text = ""
169
- text_area = st.empty() # st.empty()는 그대로 유지
170
-
171
- try:
172
- response = model.generate_content(prompt, stream=True)
173
- for chunk in response:
174
- full_text += chunk.text
175
- # 여기에 key 값을 추가합니다.
176
- text_area.text_area("UOI 설계", value=full_text, height=500, key=f"uoi_area_{time.time()}") # key 값을 동적으로 생성
177
- time.sleep(0.05)
178
-
179
- except Exception as e:
180
- st.error(f"에러 발생: {str(e)}")
181
-
182
- # Streamlit 인터페이스 설정
183
- st.title("IB PYP UOI 설계 생성기")
184
- st.write("학년, 핵심 개념, 관련 개념, UOI 의도를 입력하면 개념 기반 탐구 학습 절차에 따라 UOI 설계를 생성합니다.")
185
-
186
- # 입력 영역
187
- grade_level = st.selectbox("학년", [
188
- "초등학교 1학년", "초등학교 2학년", "초등학교 3학년", "초등학교 4학년", "초등학교 5학년", "초등학교 6학년"
189
- ])
190
- key_concepts = st.multiselect("핵심 개념(Key Concepts)", [
191
- "형태", "기능", "인과 관계", "변화", "연결성", "관점", "책임"
192
- ])
193
- related_concept = st.text_input("관련 개념(Related Concepts)")
194
- uoi_intention = st.text_area("UOI 의도", height=100)
195
-
196
-
197
- # 버튼
198
- if st.button("UOI 설계 생성"):
199
- generate_uoi(grade_level, key_concepts, related_concept, uoi_intention)
 
4
  import google.generativeai as genai
5
  import streamlit as st
6
 
7
+ # Gemini API 설정
8
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
9
 
10
+ # 모델 설정
11
+ generation_config = {
12
+ "temperature": 0.5,
13
+ "top_p": 0.95,
14
+ "top_k": 40,
15
+ "max_output_tokens": 8192,
16
+ "response_mime_type": "text/plain",
17
+ }
18
+
19
+ model = genai.GenerativeModel(
20
+ model_name="gemini-1.5-pro-002",
21
+ generation_config=generation_config,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  )
23
 
24
+ # Streamlit 앱
25
+ st.title("개념 학습 도우미")
26
+ st.write("개념을 입력하면 결정적/비결정적 속성, 사례, 비사례를 생성합니다.")
27
+
28
+ # 개념 입력
29
+ concept = st.text_input("개념 입력:")
30
+
31
+ # 결과 출력 영역
32
+ output_area = st.empty()
33
+
34
+ # 버튼 클릭 시 개념 학습 내용 생성
35
+ if st.button("생성"):
36
+ if concept:
37
+ prompt = [
38
+ "사회교과 내용 전문가, 과학교과 내용 전문가, 개념학습 전문가",
39
+ "input: 개념",
40
+ "output: 개념의 결정적 속성\n\n개념의 비결정적 속성\n\n개념의 사례 10개\n\n개념의 비사례(매력적인 비사례 - 사례와 비슷해보이지만 비사례인 것) 10개",
41
+ f"input: {concept}",
42
+ "output:", # 출력 시작
43
+ ]
44
+
45
+ full_text = ""
46
+ try:
47
+ response = model.generate_content(prompt, stream=True)
48
+ for chunk in response:
49
+ full_text += chunk.text
50
+ output_area.text_area("개념 학습 내용", value=full_text, height=500, key=f"output_{time.time()}")
51
+ time.sleep(0.05)
52
+ except Exception as e:
53
+ st.error(f"에러 생: {str(e)}")
54
+ else:
55
+ st.warning("개념을 입력세요.")