ll7098ll commited on
Commit
737dfe4
Β·
verified Β·
1 Parent(s): dfdb93a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +65 -49
app.py CHANGED
@@ -2,7 +2,9 @@ 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"])
@@ -21,104 +23,118 @@ model = genai.GenerativeModel(
21
  generation_config=generation_config,
22
  )
23
 
24
- # ν”„λ‘¬ν”„νŠΈ μ„€μ •
25
  SYSTEM_PROMPT = """
26
- 주제: [여기에 ν•™μŠ΅ λ‚΄μš©μ΄λ‚˜ 주제λ₯Ό μž…λ ₯ν•˜μ„Έμš”. 예: κ΄‘ν•©μ„±, 쀑λ ₯, λ₯΄λ„€μƒμŠ€, 민주주의 λ“±]
27
- λŒ€μƒ ν•™λ…„: [학년을 λͺ…μ‹œν•˜μ„Έμš”. 예: μ΄ˆλ“± 3ν•™λ…„, 쀑등 2ν•™λ…„, κ³ λ“± 1ν•™λ…„]
28
- μ„±μ·¨κΈ°μ€€: [ν•΄λ‹Ή μ£Όμ œμ™€ κ΄€λ ¨λœ 성취기쀀을 μž…λ ₯ν•˜μ„Έμš”. 예: λΉ›κ³Ό 그림자의 관계λ₯Ό μ„€λͺ…ν•˜κ³ , 그림자의 크기와 λͺ¨μ–‘ λ³€ν™”λ₯Ό μ˜ˆμΈ‘ν•  수 μžˆλ‹€.]
29
 
30
- μœ„ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ **핡심 아이디어 이해λ₯Ό λͺ©ν‘œλ‘œ ν•˜λŠ”** μ΄ˆλ“±ν•™κ΅ μˆ˜μ€€μ— μ ν•©ν•œ κ°œλ… 기반 탐ꡬ ν•™μŠ΅ 과정을 섀계해 μ£Όμ„Έμš”. λ‹€μŒ ꡬ성 μš”μ†Œμ— 따라 μƒμ„Έν•˜κ³  μ²΄κ³„μ μœΌλ‘œ μ„€λͺ…ν•΄μ•Ό ν•©λ‹ˆλ‹€. 각 ꡬ성 μš”μ†ŒλŠ” μ„œλ‘œ μ—°κ²°λ˜κ³  유기적으둜 κ΅¬μ„±λ˜μ–΄μ•Ό ν•˜λ©°, ν•™μƒλ“€μ˜ ν₯미와 μ°Έμ—¬λ₯Ό μœ λ„ν•  수 μžˆλŠ” 창의적이고 ν˜μ‹ μ μΈ ν™œλ™λ“€μ„ μ œμ‹œν•΄μ•Ό ν•©λ‹ˆλ‹€. 특히, λͺ¨λ“  탐ꡬ ν™œλ™μ€ 학생듀이 슀슀둜 핡심 아이디어λ₯Ό λ°œκ²¬ν•˜κ³  깊이 있게 이해할 수 μžˆλ„λ‘ μ„€κ³„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μŠ€νŠΈλžœλ“œ(Strand)λŠ” λ‹¨μ›μ˜ μ†Œμ£Όμ œμ™€ κ°™μœΌλ©°, 각 μŠ€νŠΈλžœλ“œλŠ” μ—¬λŸ¬ μ°¨μ‹œμ˜ μˆ˜μ—…μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. μ°¨μ‹œλ³„ ν™œλ™ λ‚΄μš©κΉŒμ§€ μƒμ„Ένžˆ κΈ°μˆ ν•΄ μ£Όμ„Έμš”. 전체적인 흐름은 "관계맺기 - μ§‘μ€‘ν•˜κΈ° - μ‘°μ‚¬ν•˜κΈ° - 쑰직 및 μ •λ¦¬ν•˜κΈ° - μΌλ°˜ν™” - 전이 - μ„±μ°°ν•˜κΈ°"의 μˆœμ„œλ₯Ό 따라야 ν•©λ‹ˆλ‹€. λͺ¨λ“  탐ꡬ ν™œλ™κ³Ό ν‰κ°€λŠ” 1번 ν•­λͺ©μ—μ„œ μ œμ‹œλ˜λŠ” 핡심 μ•„μ΄λ””μ–΄μ˜ 이해λ₯Ό μ΄‰μ§„ν•˜λŠ” λ°©ν–₯으둜 μ„€κ³„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
31
 
32
- **1. 핡심 아이디어 (Key Ideas & Generalizations):**
33
  * 이 주제λ₯Ό κ΄€μ°°ν•˜λŠ” κ°€μž₯ μ€‘μš”ν•œ 관점(Conceptual Lens)은 무엇인가?
34
- * 이 주제λ₯Ό 톡해 학생듀이 이해해야 ν•  κ°€μž₯ μ€‘μš”ν•œ 아이디어(Key Ideas)λŠ” 무엇인가? 2-3개의 λ¬Έμž₯으둜 λͺ…ν™•ν•˜κ²Œ κΈ°μˆ ν•˜μ„Έμš”. **이 핡심 μ•„μ΄λ””μ–΄λŠ” 이후 λͺ¨λ“  탐ꡬ ν™œλ™ 및 ν‰κ°€μ˜ 쀑심 λͺ©ν‘œκ°€ λ©λ‹ˆλ‹€.**
35
  * μœ„ 아이디어듀을 λ’·λ°›μΉ¨ν•˜λŠ” μΌλ°˜ν™”λœ 지식(Generalizations)을 3-5개의 λ¬Έμž₯으둜 μ„€λͺ…ν•˜μ„Έμš”.
36
  * 성취기쀀에 λŒ€ν•œ 맀크둜 κ°œλ…(κ°œλ…μ  렌즈), 마이크둜 κ°œλ…(κ΅κ³Όκ°œλ…)을 μ œμ‹œν•˜κ³ , μΌλ°˜ν™”(κ°œλ…μ  이해)와 μ–΄λ–»κ²Œ μ—°κ²°λ˜λŠ”μ§€ μ„€λͺ…ν•˜μ„Έμš”.
37
 
38
- **2. μ§€μ‹μ˜ λ²”μ£Ό (Knowledge Categories - λ¦° μ—λ¦­μŠ¨μ˜ λΆ„λ₯˜ κΈ°μ€€):**
39
  * **사싀 (Facts):** *핡심 아이디어와 κ΄€λ ¨λœ* μ€‘μš”ν•œ 사싀듀을 μ΅œμ†Œ 10개 이상 λ‚˜μ—΄ν•˜μ„Έμš”.
40
  * **κ°œλ… (Concepts):** *핡심 아이디어λ₯Ό μ΄ν•΄ν•˜λŠ” 데 ν•„μš”ν•œ* 핡심 κ°œλ…λ“€μ„ μ •μ˜ν•˜κ³ , 각 κ°œλ…μ— λŒ€ν•œ μ˜ˆμ‹œλ₯Ό μ œμ‹œν•˜μ„Έμš”. μ΅œμ†Œ 3개 이상 μ œμ‹œν•˜μ„Έμš”.
41
  * **μΌλ°˜ν™” (Generalizations):** *핡심 아이디어λ₯Ό λ’·λ°›μΉ¨ν•˜λŠ”* κ°œλ…λ“€ μ‚¬μ΄μ˜ 관계λ₯Ό μ„€λͺ…ν•˜λŠ” μΌλ°˜ν™”λœ μ§„μˆ μ„ μ΅œμ†Œ 3개 이상 μ œμ‹œν•˜μ„Έμš”.
42
  * **원리 (Principles):** *핡심 아이디어와 κ΄€λ ¨λœ* μΌλ°˜ν™”λ₯Ό λ’·λ°›μΉ¨ν•˜λŠ” ���학적 원리 λ˜λŠ” 이둠듀을 μ„€λͺ…ν•˜μ„Έμš”. μ΅œμ†Œ 2개 이상 μ œμ‹œν•˜μ„Έμš”.
43
 
44
- **3. κ°œλ…κΈ°λ°˜ 탐ꡬ ν•™μŠ΅ κ³Όμ • 섀계:** *μ•žμ„œ μ œμ‹œλœ 핡심 아이디어, μΌλ°˜ν™”, 지식 λ²”μ£Όλ₯Ό 기반으둜 λ‹€μŒ 단계에 따라 탐ꡬ ν•™μŠ΅ 과정을 μ„€κ³„ν•˜μ„Έμš”. λͺ¨λ“  ν™œλ™μ€ 학생듀이 핡심 아이디어λ₯Ό μ΄ν•΄ν•˜λ„λ‘ λ•λŠ” 데 μ΄ˆμ μ„ λ§žμΆ°μ•Ό ν•©λ‹ˆλ‹€.*
45
 
46
- **(1) 관계 λ§ΊκΈ° (Engaging):**
47
  * *핡심 아이디어에 λŒ€ν•œ ν₯미와 ν˜ΈκΈ°μ‹¬μ„ μœ λ°œν•˜κ³ * ν•™μƒλ“€μ˜ 지적, μ •μ„œμ  μˆ˜μ—… μ°Έμ—¬λ₯Ό μœ λ„ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: ν₯미둜운 이야기, μ‹œκ° 자료, κ²Œμž„ λ“±)
48
  * ν•™μƒλ“€μ˜ 사전 지식을 ν™œμ„±ν™”ν•˜κ³  *핡심 아이디어와 κ΄€λ ¨λœ* 탐ꡬ μ§ˆλ¬Έμ„ μœ λ„ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: λΈŒλ ˆμΈμŠ€ν† λ°, λ§ˆμΈλ“œλ§΅, μ§ˆμ˜μ‘λ‹΅ λ“±)
49
 
50
- **(2) μ§‘μ€‘ν•˜κΈ° (Focusing):**
51
  * ꡐ과 κ°œλ…μ„ λͺ…ν™•ν•˜κ²Œ μ œμ‹œν•˜κ³  κ΄€λ ¨λœ 사싀적 예λ₯Ό 2-3개 μ†Œκ°œν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: κ°•μ˜, μ„€λͺ…, μ‹œλ²” μ‹€ν—˜ λ“±)
52
 
53
- **(3) μ‘°μ‚¬ν•˜κΈ° (Investigating):**
54
  * κ°œλ… κ΄€λ ¨ 사둀듀을 μ‘°μ‚¬ν•˜κ³  νƒκ΅¬ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: μ‹€ν—˜, κ΄€μ°°, 쑰사, ν† λ‘ , 자료 뢄석 λ“±)
55
  * 좔가적인 사둀 μ œμ‹œλ₯Ό 톡해 κ°œλ… 이해λ₯Ό ν™•μž₯ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”.
56
 
57
- **(4) 쑰직 및 μ •λ¦¬ν•˜κΈ° (Organizing and Sorting):**
58
  * 사싀적, κ°œλ…μ  μˆ˜μ€€μ—μ„œ 생각을 κ΅¬μ„±ν•˜κ³  μ •λ¦¬ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: ν‘œ λ§Œλ“€κΈ°, κ·Έλž˜ν”„ 그리기, κ°œλ… 지도 μž‘μ„± λ“±)
59
  * λ‹€μ–‘ν•œ μžλ£Œμ™€ 방법, ꡐ과λ₯Ό ν™œμš©ν•˜μ—¬ κ°œλ…κ³Ό 생각을 λ‚˜νƒ€λ‚΄λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: κ·Έλ¦Ό 그리기, κΈ€μ“°κΈ°, λ°œν‘œ, λͺ¨ν˜• λ§Œλ“€κΈ° λ“±)
60
 
61
- **(5) μΌλ°˜ν™”ν•˜κΈ° (Generalizing):**
62
  * 사싀적 μ˜ˆμ‹œμ—μ„œ νŒ¨ν„΄μ„ λ°œκ²¬ν•˜κ³  연결성을 μ°Ύμ•„ μΌλ°˜ν™”λ₯Ό λ„μΆœν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: λ²€ λ‹€μ΄μ–΄κ·Έλž¨, 귀납적 μΆ”λ‘  ν™œλ™ λ“±)
63
  * μΌλ°˜ν™”λ₯Ό λͺ…λ£Œν™”ν•˜κ³  λ‹€λ“¬λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”.
64
 
65
- **(6) μ „μ΄ν•˜κΈ° (Transferring):**
66
  * μΌλ°˜ν™”μ˜ μœ νš¨μ„±μ„ κ²€μ¦ν•˜κ³  μ •λ‹Ήν™”ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”.
67
  * μƒˆλ‘œμš΄ 상황에 μΌλ°˜ν™”λ₯Ό μ μš©ν•˜κ³ , ν•™μŠ΅μ— λŒ€ν•΄ 의미 μžˆλŠ” 행동을 μ·¨ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: 문제 ν•΄κ²°, μ˜μ‚¬ κ²°μ •, 창의적 μ‚°μΆœλ¬Ό μ œμž‘ λ“±)
68
  * 예츑 및 가정을 ν˜•μ„±ν•˜κΈ° μœ„ν•΄ κ²½ν—˜κ³Ό 이해λ₯Ό ν™œμš©ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”.
69
 
70
- **(7) μ„±μ°°ν•˜κΈ° (Reflecting):**
71
  * ν•™μŠ΅ μ£Όμ²΄λ‘œμ„œ μžμ‹ μ„ μΈμ‹ν•˜κ³  ν•™μŠ΅ 과정을 κ³„νšν•˜κ³  ν†΅μ œν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: ν•™μŠ΅ κ³„νš μ„Έμš°κΈ°, ν•™μŠ΅ 일지 μž‘μ„± λ“±)
72
  * μžμ‹ μ˜ ν•™μŠ΅ 과정을 ν‰κ°€ν•˜κ³  κ°œμ„ ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: 자기 평가, λ™λ£Œ 평가, ν”Όλ“œλ°± ν™œμš© λ“±)
73
 
74
 
75
- **4. 평가 κ³„νš 및 μˆ˜ν–‰κ³Όμ œ(GRASPS), 평가 루브릭(상, 쀑, ν•˜ 평어):**
76
  * 각 μŠ€νŠΈλžœλ“œ 및 핡심 κ°œλ…μ— λŒ€ν•œ ν•™μƒλ“€μ˜ 이해도λ₯Ό 평가할 수 μžˆλŠ” 평가 방법 및 λ£¨λΈŒλ¦­μ„ μ œμ‹œν•˜μ„Έμš”. (κ΄€μ°°, λ°œν‘œ, 포트폴리였, 자기 평가, λ™λ£Œ 평가, ν€΄μ¦ˆ, μ‹œν—˜, μˆ˜ν–‰ 과제 λ“±)
77
  * λ£¨λΈŒλ¦­μ€ 상, 쀑, ν•˜μ— λŒ€ν•œ ꡬ체적인 평가 κΈ°μ€€κ³Ό 각 μˆ˜μ€€μ— ν•΄λ‹Ήν•˜λŠ” ν•™μƒμ˜ μž‘μ—… λ˜λŠ” μˆ˜ν–‰ μ˜ˆμ‹œλ₯Ό 포함해야 ν•©λ‹ˆλ‹€.
78
  * ν‰κ°€λŠ” λ‹¨μˆœνžˆ 지식 μ•”κΈ° μ—¬λΆ€λ₯Ό λ¬»λŠ” 것이 μ•„λ‹ˆλΌ, ν•™μƒλ“€μ˜ 탐ꡬ κ³Όμ •, 사고λ ₯, 문제 ν•΄κ²° λŠ₯λ ₯, ν˜‘λ ₯적 νƒœλ„, κ°œλ…μ  이해, μΌλ°˜ν™” λ„μΆœ λŠ₯λ ₯, 전이 λŠ₯λ ₯ 등을 μ’…ν•©μ μœΌλ‘œ 평가해야 ν•©λ‹ˆλ‹€.
79
  * GRASPS(Goal, Role, Audience, Situation, Product/Performance, Standards) μš”μ†Œλ₯Ό ν™œμš©ν•˜μ—¬ μˆ˜ν–‰ 과제λ₯Ό μ„€κ³„ν•˜μ„Έμš”.
80
 
81
- **5. ν•™μƒμ˜ 탐ꡬλ₯Ό μœ„ν•œ 팁:**
82
  * 학생듀이 핡심 κ°œλ…μ„ 깊이 있게 μ΄ν•΄ν•˜κ³  μ—°κ²°ν•˜λ©°, μΌλ°˜ν™”λ₯Ό λ„μΆœν•˜κ³  μ μš©ν•  수 μžˆλ„λ‘ λ•λŠ” 효과적인 ꡐ수 μ „λž΅μ€ 무엇인가?
83
  * μ˜€κ°œλ…μ„ μ˜ˆλ°©ν•˜κ³  ν•΄κ²°ν•˜λŠ” 방법은 무엇인가?
84
  * ν•™μƒλ“€μ˜ λ‹€μ–‘ν•œ ν•™μŠ΅ μŠ€νƒ€μΌκ³Ό μš”κ΅¬λ₯Ό μΆ©μ‘±ν•˜λŠ” 방법은 무엇인가?
85
  * 핡심 κ°œλ…κ³Ό κ΄€λ ¨λœ μ‹€μƒν™œ 사둀λ₯Ό μ œμ‹œν•˜μ—¬ ν•™μŠ΅μ˜ μ˜λ―Έμ™€ 관련성을 λ†’μ΄λŠ” λ°©μ•ˆμ„ μ œμ‹œν•˜μ„Έμš”. λ©€ν‹°λ―Έλ””μ–΄, μ‹œκ° 자료, κ²Œμž„, ν˜‘λ ₯ ν•™μŠ΅ λ“± λ‹€μ–‘ν•œ κ΅μˆ˜λ²•μ„ ν™œμš©ν•˜λŠ” λ°©μ•ˆμ„ μ œμ‹œν•˜μ„Έμš”.
86
  """
87
 
88
- def generate_curriculum(topic, grade, achievement_standard): # 인풋 μΆ”κ°€
89
- """
90
- 주제, ν•™λ…„, 성취기쀀을 μž…λ ₯λ°›μ•„ κ°œλ…κΈ°λ°˜ νƒκ΅¬ν•™μŠ΅μ„ μƒμ„±ν•©λ‹ˆλ‹€.
91
- """
92
 
93
  prompt = [
94
  SYSTEM_PROMPT,
95
- f"**주제:** {topic}", # 주제 μΆ”κ°€
96
- f"**λŒ€μƒ ν•™λ…„:** {grade}", # ν•™λ…„ μΆ”κ°€
97
- f"**μ„±μ·¨κΈ°μ€€:** {achievement_standard}",
98
- "**κ°œλ…κΈ°λ°˜ νƒκ΅¬ν•™μŠ΅:**",
99
  ]
100
 
101
- response = model.generate_content(prompt, stream=True)
102
- collected_text = ""
103
- for token in response:
104
- chunk = token.text
105
- collected_text += chunk
106
- yield collected_text
107
- time.sleep(0.03)
108
-
109
-
110
- # Gradio μΈν„°νŽ˜μ΄μŠ€ μ„€μ • (인풋 μΆ”κ°€)
111
- iface = gr.Interface(
112
- fn=generate_curriculum,
113
- inputs=[
114
- gr.Textbox(lines=1, label="주제 μž…λ ₯"), # 주제 μž…λ ₯ ν…μŠ€νŠΈλ°•μŠ€
115
- gr.Textbox(lines=1, label="λŒ€μƒ ν•™λ…„ μž…λ ₯ (예: μ΄ˆλ“± 3ν•™λ…„)"), # ν•™λ…„ μž…λ ₯ ν…μŠ€νŠΈλ°•μŠ€
116
- gr.Textbox(lines=3, label="μ„±μ·¨κΈ°μ€€ μž…λ ₯"),
117
- ],
118
- outputs=gr.Textbox(lines=10, label="κ°œλ…κΈ°λ°˜ νƒκ΅¬ν•™μŠ΅"),
119
- title="κ°œλ…κΈ°λ°˜ νƒκ΅¬ν•™μŠ΅ 섀계 λ„μš°λ―Έ",
120
- description="μ΄ˆλ“±ν•™κ΅ κ΅μœ‘κ³Όμ •μ— λ§žλŠ” κ°œλ…κΈ°λ°˜ νƒκ΅¬ν•™μŠ΅μ„ μƒμ„±ν•©λ‹ˆλ‹€.",
121
  )
122
 
123
- # μΈν„°νŽ˜μ΄μŠ€ μ‹€ν–‰
124
- iface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  import time
3
 
4
  import google.generativeai as genai
5
+ import streamlit as st
6
+ from streamlit_extras.colored_header import colored_header
7
+ from streamlit_extras.add_vertical_space import add_vertical_space
8
 
9
  # Google Gemini API ν‚€ μ„€μ •
10
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
 
23
  generation_config=generation_config,
24
  )
25
 
26
+ # ν”„λ‘¬ν”„νŠΈ μ„€μ • (ν•™λ…„, μ„±μ·¨κΈ°μ€€ 기반)
27
  SYSTEM_PROMPT = """
28
+ λŒ€μƒ ν•™λ…„: [학년을 λͺ…μ‹œν•˜μ„Έμš”. 예: μ΄ˆλ“± 3ν•™λ…„]
29
+ μ„±μ·¨κΈ°μ€€ 및 μ£Όμš” λ‚΄μš©: [ν•΄λ‹Ή ν•™λ…„κ³Ό κ΄€λ ¨λœ μ„±μ·¨κΈ°μ€€ 및 μ£Όμš” λ‚΄μš©μ„ μž…λ ₯ν•˜μ„Έμš”.]
 
30
 
31
+ μœ„ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ 핡심 아이디어 이해λ₯Ό λͺ©ν‘œλ‘œ ν•˜λŠ” μ΄ˆλ“±ν•™κ΅ μˆ˜μ€€μ— μ ν•©ν•œ κ°œλ… 기반 κ΅μœ‘κ³Όμ •μ„ 섀계해 μ£Όμ„Έμš”. λ‹€μŒ ꡬ성 μš”μ†Œμ— 따라 μƒμ„Έν•˜κ³  μ²΄κ³„μ μœΌλ‘œ μ„€λͺ…ν•΄μ•Ό ν•©λ‹ˆλ‹€. 각 ꡬ성 μš”μ†ŒλŠ” μ„œλ‘œ μ—°κ²°λ˜κ³  유기적으둜 κ΅¬μ„±λ˜μ–΄μ•Ό ν•˜λ©°, ν•™μƒλ“€μ˜ ν₯미와 μ°Έμ—¬λ₯Ό μœ λ„ν•  수 μžˆλŠ” 창의적이고 ν˜μ‹ μ μΈ ν™œλ™λ“€μ„ μ œμ‹œν•΄μ•Ό ν•©λ‹ˆλ‹€. 특히, λͺ¨λ“  ν™œλ™μ€ 학생듀이 슀슀둜 핡심 아이디어λ₯Ό λ°œκ²¬ν•˜κ³  깊이 있게 이해할 수 μžˆλ„λ‘ μ„€κ³„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μŠ€νŠΈλžœλ“œ(Strand)λŠ” λ‹¨μ›μ˜ μ†Œμ£Όμ œμ™€ κ°™μœΌλ©°, 각 μŠ€νŠΈλžœλ“œλŠ” μ—¬λŸ¬ μ°¨μ‹œμ˜ μˆ˜μ—…μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. μ°¨μ‹œλ³„ ν™œλ™ λ‚΄μš©κΉŒμ§€ μƒμ„Ένžˆ κΈ°μˆ ν•΄ μ£Όμ„Έμš”. 전체적인 흐름은 "관계맺기 - μ§‘μ€‘ν•˜κΈ° - μ‘°μ‚¬ν•˜κΈ° - 쑰직 및 μ •λ¦¬ν•˜κΈ° - μΌλ°˜ν™” - 전이 - μ„±μ°°ν•˜κΈ°"의 μˆœμ„œλ₯Ό 따라야 ν•©λ‹ˆλ‹€. λͺ¨λ“  ν™œλ™κ³Ό ν‰κ°€λŠ” 1번 ν•­λͺ©μ—μ„œ μ œμ‹œλ˜λŠ” 핡심 μ•„μ΄λ””μ–΄μ˜ 이해λ₯Ό μ΄‰μ§„ν•˜λŠ” λ°©ν–₯으둜 μ„€κ³„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
32
 
33
+ 1. 핡심 아이디어 (Key Ideas & Generalizations):
34
  * 이 주제λ₯Ό κ΄€μ°°ν•˜λŠ” κ°€μž₯ μ€‘μš”ν•œ 관점(Conceptual Lens)은 무엇인가?
35
+ * 이 주제λ₯Ό 톡해 학생듀이 이해해야 ν•  κ°€μž₯ μ€‘μš”ν•œ 아이디어(Key Ideas)λŠ” 무엇인가? 2-3개의 λ¬Έμž₯으둜 λͺ…ν™•ν•˜κ²Œ κΈ°μˆ ν•˜μ„Έμš”. **이 핡심 μ•„μ΄λ””μ–΄λŠ” 이후 λͺ¨λ“  탐ꡬ ν™œλ™ 및 ν‰κ°€μ˜ 쀑심 λͺ©ν‘œκ°€ λ©λ‹ˆλ‹€.**
36
  * μœ„ 아이디어듀을 λ’·λ°›μΉ¨ν•˜λŠ” μΌλ°˜ν™”λœ 지식(Generalizations)을 3-5개의 λ¬Έμž₯으둜 μ„€λͺ…ν•˜μ„Έμš”.
37
  * 성취기쀀에 λŒ€ν•œ 맀크둜 κ°œλ…(κ°œλ…μ  렌즈), 마이크둜 κ°œλ…(κ΅κ³Όκ°œλ…)을 μ œμ‹œν•˜κ³ , μΌλ°˜ν™”(κ°œλ…μ  이해)와 μ–΄λ–»κ²Œ μ—°κ²°λ˜λŠ”μ§€ μ„€λͺ…ν•˜μ„Έμš”.
38
 
39
+ 2. μ§€μ‹μ˜ λ²”μ£Ό (Knowledge Categories - λ¦° μ—λ¦­μŠ¨μ˜ λΆ„λ₯˜ κΈ°μ€€):
40
  * **사싀 (Facts):** *핡심 아이디어와 κ΄€λ ¨λœ* μ€‘μš”ν•œ 사싀듀을 μ΅œμ†Œ 10개 이상 λ‚˜μ—΄ν•˜μ„Έμš”.
41
  * **κ°œλ… (Concepts):** *핡심 아이디어λ₯Ό μ΄ν•΄ν•˜λŠ” 데 ν•„μš”ν•œ* 핡심 κ°œλ…λ“€μ„ μ •μ˜ν•˜κ³ , 각 κ°œλ…μ— λŒ€ν•œ μ˜ˆμ‹œλ₯Ό μ œμ‹œν•˜μ„Έμš”. μ΅œμ†Œ 3개 이상 μ œμ‹œν•˜μ„Έμš”.
42
  * **μΌλ°˜ν™” (Generalizations):** *핡심 아이디어λ₯Ό λ’·λ°›μΉ¨ν•˜λŠ”* κ°œλ…λ“€ μ‚¬μ΄μ˜ 관계λ₯Ό μ„€λͺ…ν•˜λŠ” μΌλ°˜ν™”λœ μ§„μˆ μ„ μ΅œμ†Œ 3개 이상 μ œμ‹œν•˜μ„Έμš”.
43
  * **원리 (Principles):** *핡심 아이디어와 κ΄€λ ¨λœ* μΌλ°˜ν™”λ₯Ό λ’·λ°›μΉ¨ν•˜λŠ” ���학적 원리 λ˜λŠ” 이둠듀을 μ„€λͺ…ν•˜μ„Έμš”. μ΅œμ†Œ 2개 이상 μ œμ‹œν•˜μ„Έμš”.
44
 
45
+ 3. κ°œλ…κΈ°λ°˜ 탐ꡬ ν•™μŠ΅ κ³Όμ • 섀계: *μ•žμ„œ μ œμ‹œλœ 핡심 아이디어, μΌλ°˜ν™”, 지식 λ²”μ£Όλ₯Ό 기반으둜 λ‹€μŒ 단계에 따라 탐ꡬ ν•™μŠ΅ 과정을 μ„€κ³„ν•˜μ„Έμš”. λͺ¨λ“  ν™œλ™μ€ 학생듀이 핡심 아이디어λ₯Ό μ΄ν•΄ν•˜λ„λ‘ λ•λŠ” 데 μ΄ˆμ μ„ λ§žμΆ°μ•Ό ν•©λ‹ˆλ‹€.*
46
 
47
+ (1) 관계 λ§ΊκΈ° (Engaging):
48
  * *핡심 아이디어에 λŒ€ν•œ ν₯미와 ν˜ΈκΈ°μ‹¬μ„ μœ λ°œν•˜κ³ * ν•™μƒλ“€μ˜ 지적, μ •μ„œμ  μˆ˜μ—… μ°Έμ—¬λ₯Ό μœ λ„ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: ν₯미둜운 이야기, μ‹œκ° 자료, κ²Œμž„ λ“±)
49
  * ν•™μƒλ“€μ˜ 사전 지식을 ν™œμ„±ν™”ν•˜κ³  *핡심 아이디어와 κ΄€λ ¨λœ* 탐ꡬ μ§ˆλ¬Έμ„ μœ λ„ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: λΈŒλ ˆμΈμŠ€ν† λ°, λ§ˆμΈλ“œλ§΅, μ§ˆμ˜μ‘λ‹΅ λ“±)
50
 
51
+ (2) μ§‘μ€‘ν•˜κΈ° (Focusing):
52
  * ꡐ과 κ°œλ…μ„ λͺ…ν™•ν•˜κ²Œ μ œμ‹œν•˜κ³  κ΄€λ ¨λœ 사싀적 예λ₯Ό 2-3개 μ†Œκ°œν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: κ°•μ˜, μ„€λͺ…, μ‹œλ²” μ‹€ν—˜ λ“±)
53
 
54
+ (3) μ‘°μ‚¬ν•˜κΈ° (Investigating):
55
  * κ°œλ… κ΄€λ ¨ 사둀듀을 μ‘°μ‚¬ν•˜κ³  νƒκ΅¬ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: μ‹€ν—˜, κ΄€μ°°, 쑰사, ν† λ‘ , 자료 뢄석 λ“±)
56
  * 좔가적인 사둀 μ œμ‹œλ₯Ό 톡해 κ°œλ… 이해λ₯Ό ν™•μž₯ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”.
57
 
58
+ (4) 쑰직 및 μ •λ¦¬ν•˜κΈ° (Organizing and Sorting):
59
  * 사싀적, κ°œλ…μ  μˆ˜μ€€μ—μ„œ 생각을 κ΅¬μ„±ν•˜κ³  μ •λ¦¬ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: ν‘œ λ§Œλ“€κΈ°, κ·Έλž˜ν”„ 그리기, κ°œλ… 지도 μž‘μ„± λ“±)
60
  * λ‹€μ–‘ν•œ μžλ£Œμ™€ 방법, ꡐ과λ₯Ό ν™œμš©ν•˜μ—¬ κ°œλ…κ³Ό 생각을 λ‚˜νƒ€λ‚΄λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: κ·Έλ¦Ό 그리기, κΈ€μ“°κΈ°, λ°œν‘œ, λͺ¨ν˜• λ§Œλ“€κΈ° λ“±)
61
 
62
+ (5) μΌλ°˜ν™”ν•˜κΈ° (Generalizing):
63
  * 사싀적 μ˜ˆμ‹œμ—μ„œ νŒ¨ν„΄μ„ λ°œκ²¬ν•˜κ³  연결성을 μ°Ύμ•„ μΌλ°˜ν™”λ₯Ό λ„μΆœν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: λ²€ λ‹€μ΄μ–΄κ·Έλž¨, 귀납적 μΆ”λ‘  ν™œλ™ λ“±)
64
  * μΌλ°˜ν™”λ₯Ό λͺ…λ£Œν™”ν•˜κ³  λ‹€λ“¬λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”.
65
 
66
+ (6) μ „μ΄ν•˜κΈ° (Transferring):
67
  * μΌλ°˜ν™”μ˜ μœ νš¨μ„±μ„ κ²€μ¦ν•˜κ³  μ •λ‹Ήν™”ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”.
68
  * μƒˆλ‘œμš΄ 상황에 μΌλ°˜ν™”λ₯Ό μ μš©ν•˜κ³ , ν•™μŠ΅μ— λŒ€ν•΄ 의미 μžˆλŠ” 행동을 μ·¨ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: 문제 ν•΄κ²°, μ˜μ‚¬ κ²°μ •, 창의적 μ‚°μΆœλ¬Ό μ œμž‘ λ“±)
69
  * 예츑 및 가정을 ν˜•μ„±ν•˜κΈ° μœ„ν•΄ κ²½ν—˜κ³Ό 이해λ₯Ό ν™œμš©ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”.
70
 
71
+ (7) μ„±μ°°ν•˜κΈ° (Reflecting):
72
  * ν•™μŠ΅ μ£Όμ²΄λ‘œμ„œ μžμ‹ μ„ μΈμ‹ν•˜κ³  ν•™μŠ΅ 과정을 κ³„νšν•˜κ³  ν†΅μ œν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: ν•™μŠ΅ κ³„νš μ„Έμš°κΈ°, ν•™μŠ΅ 일지 μž‘μ„± λ“±)
73
  * μžμ‹ μ˜ ν•™μŠ΅ 과정을 ν‰κ°€ν•˜κ³  κ°œμ„ ν•˜λŠ” ν™œλ™μ„ μ œμ‹œν•˜μ„Έμš”. (예: 자기 평가, λ™λ£Œ 평가, ν”Όλ“œλ°± ν™œμš© λ“±)
74
 
75
 
76
+ 4. 평가 κ³„νš 및 μˆ˜ν–‰κ³Όμ œ(GRASPS), 평가 루브릭(상, 쀑, ν•˜ 평어):
77
  * 각 μŠ€νŠΈλžœλ“œ 및 핡심 κ°œλ…μ— λŒ€ν•œ ν•™μƒλ“€μ˜ 이해도λ₯Ό 평가할 수 μžˆλŠ” 평가 방법 및 λ£¨λΈŒλ¦­μ„ μ œμ‹œν•˜μ„Έμš”. (κ΄€μ°°, λ°œν‘œ, 포트폴리였, 자기 평가, λ™λ£Œ 평가, ν€΄μ¦ˆ, μ‹œν—˜, μˆ˜ν–‰ 과제 λ“±)
78
  * λ£¨λΈŒλ¦­μ€ 상, 쀑, ν•˜μ— λŒ€ν•œ ꡬ체적인 평가 κΈ°μ€€κ³Ό 각 μˆ˜μ€€μ— ν•΄λ‹Ήν•˜λŠ” ν•™μƒμ˜ μž‘μ—… λ˜λŠ” μˆ˜ν–‰ μ˜ˆμ‹œλ₯Ό 포함해야 ν•©λ‹ˆλ‹€.
79
  * ν‰κ°€λŠ” λ‹¨μˆœνžˆ 지식 μ•”κΈ° μ—¬λΆ€λ₯Ό λ¬»λŠ” 것이 μ•„λ‹ˆλΌ, ν•™μƒλ“€μ˜ 탐ꡬ κ³Όμ •, 사고λ ₯, 문제 ν•΄κ²° λŠ₯λ ₯, ν˜‘λ ₯적 νƒœλ„, κ°œλ…μ  이해, μΌλ°˜ν™” λ„μΆœ λŠ₯λ ₯, 전이 λŠ₯λ ₯ 등을 μ’…ν•©μ μœΌλ‘œ 평가해야 ν•©λ‹ˆλ‹€.
80
  * GRASPS(Goal, Role, Audience, Situation, Product/Performance, Standards) μš”μ†Œλ₯Ό ν™œμš©ν•˜μ—¬ μˆ˜ν–‰ 과제λ₯Ό μ„€κ³„ν•˜μ„Έμš”.
81
 
82
+ 5. ν•™μƒμ˜ 탐ꡬλ₯Ό μœ„ν•œ 팁:
83
  * 학생듀이 핡심 κ°œλ…μ„ 깊이 있게 μ΄ν•΄ν•˜κ³  μ—°κ²°ν•˜λ©°, μΌλ°˜ν™”λ₯Ό λ„μΆœν•˜κ³  μ μš©ν•  수 μžˆλ„λ‘ λ•λŠ” 효과적인 ꡐ수 μ „λž΅μ€ 무엇인가?
84
  * μ˜€κ°œλ…μ„ μ˜ˆλ°©ν•˜κ³  ν•΄κ²°ν•˜λŠ” 방법은 무엇인가?
85
  * ν•™μƒλ“€μ˜ λ‹€μ–‘ν•œ ν•™μŠ΅ μŠ€νƒ€μΌκ³Ό μš”κ΅¬λ₯Ό μΆ©μ‘±ν•˜λŠ” 방법은 무엇인가?
86
  * 핡심 κ°œλ…κ³Ό κ΄€λ ¨λœ μ‹€μƒν™œ 사둀λ₯Ό μ œμ‹œν•˜μ—¬ ν•™μŠ΅μ˜ μ˜λ―Έμ™€ 관련성을 λ†’μ΄λŠ” λ°©μ•ˆμ„ μ œμ‹œν•˜μ„Έμš”. λ©€ν‹°λ―Έλ””μ–΄, μ‹œκ° 자료, κ²Œμž„, ν˜‘λ ₯ ν•™μŠ΅ λ“± λ‹€μ–‘ν•œ κ΅μˆ˜λ²•μ„ ν™œμš©ν•˜λŠ” λ°©μ•ˆμ„ μ œμ‹œν•˜μ„Έμš”.
87
  """
88
 
89
+ def generate_curriculum(grade, achievement_standard):
90
+ """ν•™λ…„κ³Ό 성취기쀀을 μž…λ ₯λ°›μ•„ κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ •μ„ μƒμ„±ν•©λ‹ˆλ‹€."""
 
 
91
 
92
  prompt = [
93
  SYSTEM_PROMPT,
94
+ f"**λŒ€μƒ ν•™λ…„:** {grade}",
95
+ f"**μ„±μ·¨κΈ°μ€€ 및 μ£Όμš” λ‚΄μš©:** {achievement_standard}",
96
+ "**κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ •:**",
 
97
  ]
98
 
99
+ full_text = ""
100
+ output_area = st.empty()
101
+
102
+ try:
103
+ response = model.generate_content(prompt, stream=True)
104
+ for chunk in response:
105
+ full_text += chunk.text
106
+ output_area.text_area("κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ •", value=full_text, height=600)
107
+ except Exception as e:
108
+ st.error(f"μ—λŸ¬ λ°œμƒ: {str(e)}")
109
+ return ""
110
+
111
+ return full_text
112
+
113
+
114
+ # Streamlit μΈν„°νŽ˜μ΄μŠ€ (이전 μ½”λ“œμ™€ 동일)
115
+ colored_header(
116
+ label="κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ • 섀계 λ„μš°λ―Έ",
117
+ description="μ΄ˆλ“±ν•™κ΅ κ΅μœ‘κ³Όμ •μ— λ§žλŠ” κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ •μ„ μƒμ„±ν•©λ‹ˆλ‹€.",
118
+ color_name="blue-70",
119
  )
120
 
121
+ add_vertical_space(1)
122
+
123
+ with st.sidebar.expander("μž…λ ₯ μ„€μ •", expanded=True):
124
+ grade_options = [f"μ΄ˆλ“±ν•™κ΅ {i}ν•™λ…„" for i in range(1, 7)]
125
+ grade_selected = st.selectbox("ν•™λ…„ 선택", grade_options, index=0)
126
+ grade = grade_selected # μ„ νƒλœ ν•™λ…„ λ¬Έμžμ—΄ κ·ΈλŒ€λ‘œ μ‚¬μš©
127
+
128
+ achievement_standard = st.text_area("μ„±μ·¨κΈ°μ€€ 및 μ£Όμš” λ‚΄μš© μž…λ ₯", height=200)
129
+
130
+ generate_button = st.button("κ΅μœ‘κ³Όμ • 생성")
131
+
132
+ if generate_button and achievement_standard:
133
+ result = generate_curriculum(grade, achievement_standard)
134
+ st.session_state.generated_curriculum = result
135
+ elif generate_button and not achievement_standard:
136
+ st.warning("μ„±μ·¨κΈ°μ€€ 및 μ£Όμš” λ‚΄μš©μ„ μž…λ ₯ν•˜μ„Έμš”.")
137
+
138
+ output_area = st.empty()
139
+ if "generated_curriculum" in st.session_state and st.session_state.generated_curriculum:
140
+ output_area.text_area("κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ •", value=st.session_state.generated_curriculum, height=600)