File size: 8,261 Bytes
ce5b5d6 221acd3 ce5b5d6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 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 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
import os
import gradio as gr
from dotenv import load_dotenv
from openai import OpenAI
from prompts.initial_prompt import INITIAL_PROMPT
from prompts.main_prompt import MAIN_PROMPT
# .env ํ์ผ์์ OPENAI_API_KEY ๋ก๋
if os.path.exists(".env"):
load_dotenv(".env")Module 10: Developing Conceptual Understanding through Tables and Proportional Reasoning
Task Introduction
"Welcome to the final module in this series! In this module, youโll watch a video of a lesson on proportional reasoning involving tables. Youโll reflect on the teacherโs practices, how students connect their reasoning, and the ways these practices address Common Core standards. Letโs dive in!"
Video:
"Watch the video provided at this link. Before watching how students approach the task, solve it yourself to reflect on your own reasoning."
๐ **Pre-Video Task Prompt**
Before watching the video, let's start by solving the problem.
1๏ธโฃ **How did you approach solving the problem?**
- What strategies did you use?
- Did you recognize proportional relationships within the table?
๐ **Hints if Needed**:
- Think about the relationships both horizontally (within rows) and vertically (between columns) in the table.
- How might unit rate play a role in reasoning proportionally?
After you solve the problem, **let me know**, and weโll move to the next step!
---
๐ **Post-Video Reflection Prompts**
Now that youโve watched the video and solved the problem, letโs reflect on different aspects of the lesson **one by one**:
### **Step 1: Observing Creativity-Directed Practices**
๐น What creativity-directed practices did you notice the teacher implementing during the lesson?
๐น Reflect on how these practices supported studentsโ reasoning and collaboration.
๐ก **Hints if Needed**:
- Consider whether the teacher encouraged mathematical connections, collaborative problem-solving, or extended studentsโ thinking beyond the unit rate.
โ
When you're ready, **share your thoughts**, and we'll move to the next reflection.
---
### **Step 2: Student Reasoning and Connections**
๐น How did students connect the relationship between price and container size?
๐น How did their reasoning evolve as they worked through the task?
๐ก **Hints if Needed**:
- Did students start with the given information (e.g., the 24-ounce container costing $3)?
- How did they use this information to reason proportionally?
โ
**Once you respond, weโll move on!**
---
### **Step 3: Teacher Actions in Small Groups**
๐น How did the teacherโs actions during small group interactions reflect the studentsโ reasoning?
๐น How did the teacher use these interactions to inform whole-class discussions?
๐ก **Hints if Needed**:
- Think about how the teacher listened to studentsโ reasoning and used their ideas to guide the next steps.
- What types of questions did the teacher ask?
โ
**Once you're ready, letโs move forward!**
---
### **Step 4: Initial Prompts and Sense-Making**
๐น How did the teacher prompt students to initially make sense of the task?
๐น What role did these prompts play in guiding studentsโ reasoning?
๐ก **Hints if Needed**:
- Did the teacher ask open-ended questions?
- How did these prompts help students engage with the task?
โ
**Share your response, and weโll continue!**
---
### **Step 5: Common Core Practice Standards**
๐น What Common Core practice standards do you think the teacher emphasized during the lesson?
๐น Choose four and explain how you observed these practices in action.
๐ก **Hints if Needed**:
- Consider whether the teacher emphasized reasoning, collaboration, or modeling with mathematics.
- How did the students demonstrate these practices?
โ
**When youโre ready, letโs move to the final steps!**
---
### **Step 6: Problem Posing Activity**
๐ Based on what you observed, **pose a problem** that encourages students to use visuals and proportional reasoning.
๐น What real-world context will you use?
๐น How will students use visuals like bar models or tables to represent proportional relationships?
๐น Does your problem encourage multiple solution paths?
๐ก **Hints if Needed**:
- Try to design a problem where students can approach it differently but still apply proportional reasoning.
โ
**Once you've created your problem, let me know!**
---
### **Step 7: Summary and Final Reflection**
๐ **Whatโs one change you will make in your own teaching based on this module?**
Reflect on a specific strategy, question type, or approach to representation that you want to implement.
๐ก **Encouraging Closing Statement**:
"Great work completing all the modules! We hope youโve gained valuable insights into fostering creativity, connecting mathematical ideas, and engaging students in meaningful learning experiences. It was a pleasure working with youโsee you in the next professional development series!" ๐
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
client = OpenAI(api_key=OPENAI_API_KEY)
def gpt_call(history, user_message,
model="gpt-4o-mini",
max_tokens=512,
temperature=0.7,
top_p=0.95):
"""
OpenAI ChatCompletion API๋ฅผ ํตํด ๋ต๋ณ์ ์์ฑํ๋ ํจ์.
- history: [(user_text, assistant_text), ...]
- user_message: ์ฌ์ฉ์๊ฐ ๋ฐฉ๊ธ ์
๋ ฅํ ๋ฉ์์ง
"""
# 1) ์์คํ
๋ฉ์์ง(=MAIN_PROMPT)๋ฅผ ๊ฐ์ฅ ์์ ์ถ๊ฐ
messages = [{"role": "system", "content": MAIN_PROMPT}]
# 2) ๊ธฐ์กด ๋ํ ๊ธฐ๋ก(history)์ OpenAI ํ์์ผ๋ก ๋ณํ
# user_text -> 'user' / assistant_text -> 'assistant'
for user_text, assistant_text in history:
if user_text:
messages.append({"role": "user", "content": user_text})
if assistant_text:
messages.append({"role": "assistant", "content": assistant_text})
# 3) ๋ง์ง๋ง์ ์ด๋ฒ ์ฌ์ฉ์์ ์
๋ ฅ์ ์ถ๊ฐ
messages.append({"role": "user", "content": user_message})
# 4) OpenAI API ํธ์ถ
completion = client.chat.completions.create(
model=model,
messages=messages,
max_tokens=max_tokens,
temperature=temperature,
top_p=top_p
)
return completion.choices[0].message.content
def respond(user_message, history):
"""
Gradio ์์์ submitํ ๋ ํธ์ถ๋๋ ํจ์
- user_message: ์ฌ์ฉ์๊ฐ ๋ฐฉ๊ธ ์น ๋ฉ์์ง
- history: ๊ธฐ์กด (user, assistant) ํํ ๋ฆฌ์คํธ
"""
# ์ฌ์ฉ์๊ฐ ๋น ๋ฌธ์์ด์ ๋ณด๋๋ค๋ฉด ์๋ฌด ์ผ๋ ํ์ง ์์
if not user_message:
return "", history
# GPT ๋ชจ๋ธ๋ก๋ถํฐ ์๋ต์ ๋ฐ์
assistant_reply = gpt_call(history, user_message)
# history์ (user, assistant) ์ ์ถ๊ฐ
history.append((user_message, assistant_reply))
# Gradio์์๋ (์๋ก ๋น์์ง ์
๋ ฅ์ฐฝ, ๊ฐฑ์ ๋ history)๋ฅผ ๋ฐํ
return "", history
##############################
# Gradio Blocks UI
##############################
with gr.Blocks() as demo:
gr.Markdown("## Simple Chat Interface")
# Chatbot ์ด๊ธฐ ์ํ๋ฅผ ์ค์
# ์ฒซ ๋ฒ์งธ ๋ฉ์์ง๋ (user="", assistant=INITIAL_PROMPT) ํํ๋ก ๋ฃ์ด
# ํ๋ฉด์์์ 'assistant'๊ฐ INITIAL_PROMPT๋ฅผ ๋งํ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํจ
chatbot = gr.Chatbot(
value=[("", INITIAL_PROMPT)], # (user, assistant)
height=500
)
# (user, assistant) ์์ ์ ์ฅํ ํ์คํ ๋ฆฌ ์ํ
# ์ฌ๊ธฐ์๋ ๋์ผํ ์ด๊ธฐ ์ํ๋ฅผ ๋ฃ์ด์ค
state_history = gr.State([("", INITIAL_PROMPT)])
# ์ฌ์ฉ์ ์
๋ ฅ
user_input = gr.Textbox(
placeholder="Type your message here...",
label="Your Input"
)
# ์
๋ ฅ์ด submit๋๋ฉด respond() ํธ์ถ โ ์ถ๋ ฅ์ (์ ์
๋ ฅ์ฐฝ, ๊ฐฑ์ ๋ chatbot)
user_input.submit(
respond,
inputs=[user_input, state_history],
outputs=[user_input, chatbot]
).then(
# respond ๋๋ ๋ค, ์ต์ history๋ฅผ state_history์ ๋ฐ์
fn=lambda _, h: h,
inputs=[user_input, chatbot],
outputs=[state_history]
)
# ๋ฉ์ธ ์คํ
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860, share=True)
|