concept / app.py
ll7098ll's picture
Update app.py
883b943 verified
import os
import time
import streamlit as st
import google.generativeai as genai
from streamlit_extras.colored_header import colored_header
from streamlit_extras.add_vertical_space import add_vertical_space
import markdown
# Google Gemini API ν‚€ μ„€μ •
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
# λͺ¨λΈ μ„€μ •
generation_config = {
"temperature": 0.7,
"top_p": 0.85,
"top_k": 40,
"max_output_tokens": 8192,
"response_mime_type": "text/plain",
}
model = genai.GenerativeModel(
model_name="gemini-2.0-flash-thinking-exp-01-21",
generation_config=generation_config,
)
SYSTEM_PROMPT = """
λŒ€μƒ ν•™λ…„: {grade}
μ„±μ·¨κΈ°μ€€ 및 μ£Όμš” λ‚΄μš©: {achievement_standard}
μœ„ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ 핡심 아이디어 이해λ₯Ό λͺ©ν‘œλ‘œ ν•˜λŠ” {grade} μˆ˜μ€€μ— μ ν•©ν•œ κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ •μ„ 섀계해 μ£Όμ„Έμš”. λ‹€μŒ ꡬ성 μš”μ†Œμ— 따라 μƒμ„Έν•˜κ³  μ²΄κ³„μ μœΌλ‘œ μ„€λͺ…ν•΄μ•Ό ν•©λ‹ˆλ‹€.
각 ꡬ성 μš”μ†ŒλŠ” μ„œλ‘œ μ—°κ²°λ˜κ³  유기적으둜 κ΅¬μ„±λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. ꡬ체적인 μ˜ˆμ‹œλ₯Ό ν¬ν•¨ν•˜μ—¬ μ„€λͺ…ν•˜κ³ , ν•™μƒλ“€μ˜ ν₯미와 μ°Έμ—¬λ₯Ό μœ λ„ν•  수 μžˆλŠ” 창의적이고 ν˜μ‹ μ μΈ ν™œλ™λ“€μ„ μ œμ‹œν•΄ μ£Όμ„Έμš”.
특히, 탐ꡬ ν™œλ™μ„ 톡해 학생듀이 슀슀둜 μΌλ°˜ν™”λ₯Ό λ„μΆœν•˜κ³  핡심 κ°œλ…μ„ 깊이 있게 이해할 수 μžˆλ„λ‘ 섀계해야 ν•©λ‹ˆλ‹€.
λ¨Όμ € μŠ€νŠΈλžœλ“œλ₯Ό 2~3개둜 μ„€μ •ν•˜μ„Έμš”.μŠ€νŠΈλžœλ“œ(Strand)λŠ” λ‹¨μ›μ˜ μ†Œμ£Όμ œμ™€ κ°™μœΌλ©°, 각 μŠ€νŠΈλžœλ“œλŠ” μ—¬λŸ¬ μ°¨μ‹œμ˜ μˆ˜μ—…μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.
μ°¨μ‹œλ³„ ν™œλ™ λ‚΄μš©κΉŒμ§€ μƒμ„Ένžˆ κΈ°μˆ ν•΄ μ£Όμ„Έμš”.
1. 핡심 아이디어 (Key Ideas & Generalizations):
이 주제λ₯Ό κ΄€μ°°ν•˜λŠ” κ°€μž₯ μ€‘μš”ν•œ 관점(Conceptual Lens)은 무엇인가?
이 주제λ₯Ό 톡해 학생듀이 이해해야 ν•  κ°€μž₯ μ€‘μš”ν•œ 아이디어(Key Ideas)λŠ” 무엇인가? 2-3개의 λ¬Έμž₯으둜 λͺ…ν™•ν•˜κ²Œ κΈ°μˆ ν•˜μ„Έμš”.
μœ„ 아이디어듀을 λ’·λ°›μΉ¨ν•˜λŠ” μΌλ°˜ν™”λœ 지식(Generalizations)을 3-5개의 λ¬Έμž₯으둜 μ„€λͺ…ν•˜μ„Έμš”.
2. 맀크둜 κ°œλ… (Macro Concepts) 및 마이크둜 κ°œλ… (Micro Concepts):
이 주제λ₯Ό μ΄ν•΄ν•˜λŠ” 데 ν•„μš”ν•œ 큰 ν‹€μ˜ κ°œλ…(맀크둜 κ°œλ…, Conceptual Lens)은 무엇인가?
이 μ£Όμ œμ™€ κ΄€λ ¨λœ ꡬ체적인 ꡐ과 κ°œλ…(마이크둜 κ°œλ…, Subject-Specific Concepts)은 무엇인가?
맀크둜 κ°œλ…κ³Ό 마이크둜 κ°œλ… μ‚¬μ΄μ˜ 관계λ₯Ό μ–΄λ–»κ²Œ μ„€λͺ…ν•  것인가? ꡬ체적인 μ˜ˆμ‹œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ„€λͺ…ν•˜μ„Έμš”.
3. μ§€μ‹μ˜ λ²”μ£Ό (Knowledge Categories - λ¦° μ—λ¦­μŠ¨μ˜ λΆ„λ₯˜ κΈ°μ€€):
사싀 (Facts): 이 μ£Όμ œμ™€ κ΄€λ ¨λœ μ€‘μš”ν•œ 사싀듀을 μ΅œμ†Œ 10개 이상 λ‚˜μ—΄ν•˜μ„Έμš”.
κ°œλ… (Concepts): 이 주제λ₯Ό μ΄ν•΄ν•˜λŠ” 데 ν•„μš”ν•œ 핡심 κ°œλ…λ“€μ„ μ •μ˜ν•˜κ³ , 각 κ°œλ…μ— λŒ€ν•œ μ˜ˆμ‹œλ₯Ό μ œμ‹œν•˜μ„Έμš”. μ΅œμ†Œ 3개 이상 μ œμ‹œν•˜μ„Έμš”.
μΌλ°˜ν™” (Generalizations): κ°œλ…λ“€ μ‚¬μ΄μ˜ 관계λ₯Ό μ„€λͺ…ν•˜λŠ” μΌλ°˜ν™”λœ μ§„μˆ μ„ μ΅œμ†Œ 3개 이상 μ œμ‹œν•˜μ„Έμš”.
원리 (Principles): μΌλ°˜ν™”λ₯Ό λ’·λ°›μΉ¨ν•˜λŠ” 과학적 원리 λ˜λŠ” 이둠듀을 μ„€λͺ…ν•˜μ„Έμš”. μ΅œμ†Œ 2개 이상 μ œμ‹œν•˜μ„Έμš”.
4. 탐ꡬ 질문 (Inquiry Questions):
ν•™μƒλ“€μ˜ 탐ꡬλ₯Ό μžκ·Ήν•˜κ³  핡심 κ°œλ… 및 μΌλ°˜ν™”λ‘œ μœ λ„ν•  수 μžˆλŠ” 탐ꡬ μ§ˆλ¬Έλ“€μ„ 5개 이상 μ œμ‹œν•˜μ„Έμš”. μ§ˆλ¬Έμ€ ꡬ체적이고 탐ꡬ κ°€λŠ₯ν•΄μ•Ό ν•˜λ©°, λ‹€μ–‘ν•œ μˆ˜μ€€μ˜ 사고λ₯Ό μš”κ΅¬ν•΄μ•Ό ν•©λ‹ˆλ‹€. 각 질문이 μ–΄λ–€ 핡심 κ°œλ…κ³Ό μ—°κ²°λ˜λŠ”μ§€ λͺ…μ‹œν•˜μ„Έμš”.
5. ν•™μŠ΅ ν™œλ™ (Learning Activities):
이 주제λ₯Ό κ°€λ₯΄μΉ˜κΈ° μœ„ν•œ μ£Όμš” ν•™μŠ΅ μ˜μ—­(μŠ€νŠΈλžœλ“œ, Strand)은 무엇인가? 각 μŠ€νŠΈλžœλ“œλŠ” μ—¬λŸ¬ μ°¨μ‹œμ˜ μˆ˜μ—…μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.
각 μŠ€νŠΈλžœλ“œμ˜ ν•™μŠ΅ λͺ©ν‘œλ₯Ό λͺ…ν™•ν•˜κ²Œ μ œμ‹œν•˜κ³ , ν•΄λ‹Ή λͺ©ν‘œλ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•œ μ°¨μ‹œλ³„ ν•™μŠ΅ ν™œλ™μ„ ꡬ체적으둜 μ„€κ³„ν•˜μ„Έμš”. (예: ν† λ‘ , 쑰사, μ‹€ν—˜, ν”„λ‘œμ νŠΈ, κ²Œμž„, ν˜‘λ ₯ ν•™μŠ΅ λ“±)
각 ν™œλ™μ—μ„œ 학생듀이 μ–΄λ–€ κ°œλ…μ„ νƒκ΅¬ν•˜κ³  μ–΄λ–€ κΈ°λŠ₯을 κ°œλ°œν•  수 μžˆλŠ”μ§€, 그리고 μ–΄λ–»κ²Œ μΌλ°˜ν™”λ₯Ό λ„μΆœν•  수 μžˆλ„λ‘ μœ λ„ν•  것인지 μ„€λͺ…ν•˜μ„Έμš”. ν™œλ™μ€ ν•™μƒλ“€μ˜ ν₯미와 μ°Έμ—¬λ₯Ό μœ λ„ν•  수 μžˆλ„λ‘ 창의적이고 ν˜μ‹ μ μΈ λ°©μ‹μœΌλ‘œ μ„€κ³„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
각 ν™œλ™μ— ν•„μš”ν•œ 자료, 절차, μ˜ˆμƒ μ†Œμš” μ‹œκ°„ 등을 λͺ…μ‹œν•˜μ„Έμš”.
각 μ°¨μ‹œμ—μ„œ λ‹€λ£¨λŠ” 핡심 κ°œλ…, 탐ꡬ 질문, μΌλ°˜ν™”λ₯Ό λͺ…ν™•ν•˜κ²Œ μ—°κ²°ν•˜μ„Έμš”.
6. 평가 (Assessment):
각 μŠ€νŠΈλžœλ“œ 및 핡심 κ°œλ…μ— λŒ€ν•œ ν•™μƒλ“€μ˜ 이해도λ₯Ό 평가할 수 μžˆλŠ” 평가 방법 및 루브릭(ν‘œλ‘œ μ œμ‹œν•  것)을 μ œμ‹œν•˜μ„Έμš”. (κ΄€μ°°, λ°œν‘œ, 포트폴리였, 자기 평가, λ™λ£Œ 평가, ν€΄μ¦ˆ, μ‹œν—˜ λ“±)
λ£¨λΈŒλ¦­μ€ 상, 쀑, ν•˜μ— λŒ€ν•œ ꡬ체적인 평가 κΈ°μ€€κ³Ό 각 μˆ˜μ€€μ— ν•΄λ‹Ήν•˜λŠ” ν•™μƒμ˜ μž‘μ—… λ˜λŠ” μˆ˜ν–‰ μ˜ˆμ‹œλ₯Ό 포함해야 ν•©λ‹ˆλ‹€.
ν‰κ°€λŠ” λ‹¨μˆœνžˆ 지식 μ•”κΈ° μ—¬λΆ€λ₯Ό λ¬»λŠ” 것이 μ•„λ‹ˆλΌ, ν•™μƒλ“€μ˜ 탐ꡬ κ³Όμ •, 사고λ ₯, 문제 ν•΄κ²° λŠ₯λ ₯, ν˜‘λ ₯적 νƒœλ„, κ°œλ…μ  이해, μΌλ°˜ν™” λ„μΆœ λŠ₯λ ₯ 등을 μ’…ν•©μ μœΌλ‘œ 평가해야 ν•©λ‹ˆλ‹€.
7. κ°œλ…μ  이해λ₯Ό μœ„ν•œ 팁 (Tips for Conceptual Understanding):
학생듀이 핡심 κ°œλ…μ„ 깊이 있게 μ΄ν•΄ν•˜κ³  μ—°κ²°ν•˜λ©°, μΌλ°˜ν™”λ₯Ό λ„μΆœν•˜κ³  μ μš©ν•  수 μžˆλ„λ‘ λ•λŠ” 효과적인 ꡐ수 μ „λž΅μ€ 무엇인가?
μ˜€κ°œλ…μ„ μ˜ˆλ°©ν•˜κ³  ν•΄κ²°ν•˜λŠ” 방법은 무엇인가?
ν•™μƒλ“€μ˜ λ‹€μ–‘ν•œ ν•™μŠ΅ μŠ€νƒ€μΌκ³Ό μš”κ΅¬λ₯Ό μΆ©μ‘±ν•˜λŠ” 방법은 무엇인가?
핡심 κ°œλ…κ³Ό κ΄€λ ¨λœ μ‹€μƒν™œ 사둀λ₯Ό μ œμ‹œν•˜μ—¬ ν•™μŠ΅μ˜ μ˜λ―Έμ™€ 관련성을 λ†’μ΄λŠ” λ°©μ•ˆμ„ μ œμ‹œν•˜μ„Έμš”. λ©€ν‹°λ―Έλ””μ–΄, μ‹œκ° 자료, κ²Œμž„, ν˜‘λ ₯ ν•™μŠ΅ λ“± λ‹€μ–‘ν•œ κ΅μˆ˜λ²•μ„ ν™œμš©ν•˜λŠ” λ°©μ•ˆμ„ μ œμ‹œν•˜μ„Έμš”.
"""
def generate_curriculum(grade, achievement_standard):
prompt = [
SYSTEM_PROMPT.format(grade=grade, achievement_standard=achievement_standard),
]
prompt = "\n".join(prompt)
full_text = ""
try:
response = model.generate_content(prompt, stream=True)
for chunk in response:
full_text += chunk.text
html_text = markdown.markdown(full_text, extensions=['tables', 'fenced_code'])
output_area.markdown(html_text, unsafe_allow_html=True)
time.sleep(0.05)
except Exception as e:
st.error(f"κ³„νšμ„œ 생성 였λ₯˜: {e}")
return ""
return full_text
# 챗봇 ν•¨μˆ˜ (μˆ˜μ • 및 μΆ”κ°€ 자료 생성)
def chat_with_ai(user_input, context):
prompt = f"{context}\nUser: {user_input}\nAI:"
full_text = ""
try:
response = model.generate_content(prompt, stream=True)
for chunk in response:
full_text += chunk.text
except Exception as e:
st.error(f"챗봇 였λ₯˜: {e}")
return ""
return full_text
# Streamlit μΈν„°νŽ˜μ΄μŠ€
st.set_page_config(page_title="κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ • AI", page_icon="\U0001F393")
# νŽ˜μ΄μ§€ μŠ€νƒ€μΌ μ»€μŠ€ν„°λ§ˆμ΄μ§•
st.markdown(
"""
<style>
/* 전체 배경색 μ„€μ • */
.stApp {
background-color: #fffafa;
}
/* 타이틀 μŠ€νƒ€μΌ */
.main-title {
font-size: 3rem;
color: #000000;
font-weight: 700;
text-align: center;
margin-bottom: 20px;
}
/* μ±„νŒ… λ©”μ‹œμ§€ μŠ€νƒ€μΌ */
.chat-message {
border-radius: 15px;
padding: 15px;
margin: 10px 0;
display: flex;
align-items: center;
flex-wrap: wrap;
word-break: break-word;
}
.chat-message-user {
background-color: #ffebef;
color: #8b4513;
justify-content: flex-end;
}
.chat-message-assistant {
background-color: #ffe4e6;
color: #6b4226;
justify-content: flex-start;
}
.chat-avatar {
width: 40px;
height: 40px;
border-radius: 50%;
margin-right: 10px;
}
.chat-avatar-user {
margin-left: 10px;
margin-right: 0;
}
/* λ²„νŠΌ μŠ€νƒ€μΌ */
.stButton button {
background-color: #cd857f;
color: #fff;
border-radius: 15px;
padding: 10px 20px;
}
</style>
""",
unsafe_allow_html=True
)
st.markdown("<div class='main-title'>\U0001F393 κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ • AI</div>", unsafe_allow_html=True)
add_vertical_space(1)
with st.sidebar:
st.markdown("## βš™οΈ μž…λ ₯ μ„€μ •")
grade_options = [f"μ΄ˆλ“±ν•™κ΅ {i}ν•™λ…„" for i in range(1, 7)] + [f"쀑학ꡐ {i}ν•™λ…„" for i in range(1, 4)]
grade_selected = st.selectbox("πŸŽ’ ν•™λ…„ 선택", grade_options, index=0)
achievement_standard = st.text_area("πŸ“– μ„±μ·¨κΈ°μ€€ 및 μ£Όμš” λ‚΄μš©", height=150)
generate_button = st.button("πŸš€ κ³„νšμ„œ 생성")
# 좜λ ₯ 및 챗봇 μ˜μ—­
output_area = st.empty()
# μƒνƒœ λ³€μˆ˜
if "messages" not in st.session_state:
st.session_state.messages = []
st.session_state.chat_mode = False
# κ³„νšμ„œ 생성 λ²„νŠΌ 클릭 μ‹œ
if generate_button:
with st.spinner("⏳ κ³„νšμ„œ 생성 쀑..."):
result = generate_curriculum(grade_selected, achievement_standard)
st.session_state.messages.append({"role": "assistant", "content": result})
st.session_state.chat_mode = True
# 챗봇 μΈν„°νŽ˜μ΄μŠ€
user_icon_url = "https://cdn-icons-png.flaticon.com/512/4323/4323008.png"
assistant_icon_url = "https://cdn-icons-png.flaticon.com/512/4712/4712108.png"
if st.session_state.chat_mode:
if prompt := st.chat_input("κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ • AIμ—κ²Œ μˆ˜μ • 및 μΆ”κ°€ μš”μ²­μ‚¬ν•­μ„ μ•Œλ €μ£Όμ„Έμš”!"):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.spinner("πŸ€” λ‹΅λ³€ 생성 쀑..."):
context = "\n".join([msg["content"] for msg in st.session_state.messages if msg["role"] == "assistant"])
ai_response = chat_with_ai(prompt, context)
st.session_state.messages.append({"role": "assistant", "content": ai_response})
for message in st.session_state.messages:
if message["role"] != "system":
role_class = "chat-message-user" if message["role"] == "user" else "chat-message-assistant"
avatar_url = user_icon_url if message["role"] == "user" else assistant_icon_url
avatar_class = "chat-avatar-user" if message["role"] == "user" else "chat-avatar"
html_text = markdown.markdown(message['content'], extensions=['tables', 'fenced_code'])
st.markdown(
f"<div class='chat-message {role_class}'><img src='{avatar_url}' class='chat-avatar {avatar_class}'>{html_text}</div>",
unsafe_allow_html=True
)
# FAQ
with st.expander("β“κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ • AI FAQ"):
st.write("""
**Q1. κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ • AIλŠ” μ–΄λ–€ κΈ°λŠ₯을 μ œκ³΅ν•˜λ‚˜μš”?**
A. 이 앱은 μ„ μƒλ‹˜λ“€μ˜ κ΅μœ‘κ³Όμ • 섀계λ₯Ό 돕기 μœ„ν•΄ 개발된 AI λ„κ΅¬μž…λ‹ˆλ‹€. ν•™λ…„κ³Ό 성취기쀀을 μž…λ ₯ν•˜λ©΄ κ°œλ…κΈ°λ°˜ κ΅μœ‘κ³Όμ • κ³„νšμ„œμ˜ μ΄ˆμ•ˆμ„ μƒμ„±ν•΄μ€λ‹ˆλ‹€. μƒμ„±λœ κ³„νšμ„œλŠ” 핡심 아이디어, 맀크둜/마이크둜 κ°œλ…, 지식 λ²”μ£Ό, 탐ꡬ 질문, ν•™μŠ΅ ν™œλ™, 평가 방법, κ°œλ…μ  이해λ₯Ό μœ„ν•œ 팁 등을 ν¬ν•¨ν•˜μ—¬ κ΅μœ‘κ³Όμ • 섀계에 ν•„μš”ν•œ λ‹€μ–‘ν•œ μš”μ†Œλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. λ‹¨μˆœνžˆ κ³„νšμ„œ μƒμ„±λΏλ§Œ μ•„λ‹ˆλΌ, μƒμ„±λœ κ³„νšμ„œλ₯Ό μˆ˜μ •ν•˜κ³  좔가적인 자료λ₯Ό μƒμ„±ν•˜λŠ” 데에도 도움을 λ“œλ¦½λ‹ˆλ‹€.
**Q2. κ³„νšμ„œ 생성 ν›„ μˆ˜μ •μ€ μ–΄λ–»κ²Œ ν•˜λ‚˜μš”?**
A. κ³„νšμ„œ 생성 ν›„, ν•˜λ‹¨μ— λ‚˜νƒ€λ‚˜λŠ” 챗봇을 μ΄μš©ν•˜μ—¬ μˆ˜μ • 및 μΆ”κ°€ μš”μ²­μ‚¬ν•­μ„ 자유둭게 μž…λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ—°μ–΄λ‘œ μ§ˆλ¬Έν•˜κ±°λ‚˜ μš”μ²­ν•˜λ©΄ AIκ°€ 닡변을 μ œκ³΅ν•˜κ³  κ³„νšμ„œλ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, "1μ°¨μ‹œ κ΅μˆ˜ν•™μŠ΅ κ³Όμ •μ•ˆμ„ μƒμ„±ν•΄μ€˜", "평가 방법을 더 ꡬ체적으둜 μž‘μ„±ν•΄μ€˜", "핡심 아이디어λ₯Ό μˆ˜μ •ν•΄μ€˜" 와 같이 μž…λ ₯ν•˜λ©΄ λ©λ‹ˆλ‹€. μˆ˜μ •λœ λ‚΄μš©μ€ μ‹€μ‹œκ°„μœΌλ‘œ κ³„νšμ„œμ— λ°˜μ˜λ©λ‹ˆλ‹€. λ˜ν•œ, 챗봇을 톡해 좔가적인 자료 생성을 μš”μ²­ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
**Q3. μ–΄λ–€ 학년에 λŒ€ν•œ κ³„νšμ„œλ₯Ό 생성할 수 μžˆλ‚˜μš”?**
A. ν˜„μž¬ μ΄ˆλ“±ν•™κ΅ 1ν•™λ…„λΆ€ν„° 쀑학ꡐ 3ν•™λ…„κΉŒμ§€ λͺ¨λ“  학년에 λŒ€ν•œ κ³„νšμ„œ 생성을 μ§€μ›ν•©λ‹ˆλ‹€. ν–₯ν›„ 더 넓은 λ²”μœ„μ˜ 학년을 지원할 μ˜ˆμ •μž…λ‹ˆλ‹€. ν•™λ…„ 선택 λ©”λ‰΄μ—μ„œ μ›ν•˜λŠ” 학년을 μ„ νƒν•˜μ„Έμš”.
**Q4. 챗봇을 μ΄μš©ν•΄μ„œ μ–΄λ–€ μΆ”κ°€ 자료λ₯Ό 생성할 수 μžˆλ‚˜μš”?**
A. 챗봇을 톡해 λ‹€μŒκ³Ό 같은 μΆ”κ°€ 자료 생성을 μš”μ²­ν•  수 μžˆμŠ΅λ‹ˆλ‹€:
* **μ°¨μ‹œλ³„ κ΅μˆ˜ν•™μŠ΅ κ³Όμ •μ•ˆ:** 각 μ°¨μ‹œμ˜ ν•™μŠ΅ λͺ©ν‘œ, ν™œλ™ λ‚΄μš©, 자료, 평가 방법 등을 ν¬ν•¨ν•œ μƒμ„Έν•œ κ³Όμ •μ•ˆμ„ μƒμ„±ν•©λ‹ˆλ‹€. *μ˜ˆμ‹œ: "3μ°¨μ‹œ κ΅μˆ˜ν•™μŠ΅ κ³Όμ •μ•ˆμ„ λ§Œλ“€μ–΄μ€˜"*
* **읽기 자료:** ν•™μŠ΅ μ£Όμ œμ™€ κ΄€λ ¨λœ ν₯미둜운 읽기 자료λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. *μ˜ˆμ‹œ: "λ„μž… μ°¨μ‹œμ—μ„œ ν™œμš©ν•  읽기 자료λ₯Ό λ§Œλ“€μ–΄μ€˜"*
* **ν™œλ™μ§€:** 학생듀이 직접 μ°Έμ—¬ν•˜κ³  ν™œλ™ν•  수 μžˆλŠ” μ›Œν¬μ‹œνŠΈ, ν€΄μ¦ˆ, κ²Œμž„ 등을 μƒμ„±ν•©λ‹ˆλ‹€. *μ˜ˆμ‹œ: "5μ°¨μ‹œμ— ν™œμš©ν•  수 μžˆλŠ” ν™œλ™μ§€λ₯Ό λ§Œλ“€μ–΄μ€˜"*
* **평가 λ¬Έν•­:** ν˜•μ„±ν‰κ°€, μˆ˜ν–‰ν‰κ°€ λ“± λ‹€μ–‘ν•œ μœ ν˜•μ˜ 평가 문항을 μ œμ‹œν•©λ‹ˆλ‹€. *μ˜ˆμ‹œ: "이 λ‹¨μ›μ˜ 핡심 κ°œλ…μ„ ν‰κ°€ν•˜λŠ” λ£¨λΈŒλ¦­μ„ λ§Œλ“€μ–΄μ€˜"*
챗봇에 ꡬ체적인 μš”μ²­μ‚¬ν•­μ„ μž…λ ₯ν• μˆ˜λ‘ λ”μš± μ •ν™•ν•˜κ³  μœ μš©ν•œ κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. μš”μ²­μ‚¬ν•­μ„ λͺ…ν™•ν•˜κ²Œ μž‘μ„±ν•˜κ³ , ν•„μš”ν•œ 정보λ₯Ό μΆ©λΆ„νžˆ μ œκ³΅ν• μˆ˜λ‘ AIκ°€ λ”μš± 효과적으둜 도움을 쀄 수 μžˆμŠ΅λ‹ˆλ‹€.
""")