qlmodel / app.py
ll7098ll's picture
Update app.py
ff91a28 verified
raw
history blame
7.04 kB
import os
import time
import gradio as gr
import google.generativeai as genai
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
# Create the model
generation_config = {
"temperature": 1,
"top_p": 0.95,
"top_k": 40,
"max_output_tokens": 8192,
"response_mime_type": "text/plain",
}
model = genai.GenerativeModel(
model_name="gemini-1.5-pro-002",
generation_config=generation_config,
)
def generate_lesson_plan(grade, subject, concept, achievement_standard, key_question, lesson_number):
"""
학년, 수업 주제, 개념, 성취기준, 핵심 질문, 차시를 입력받아 6단계 질문 중심 수업 지도안을 생성하는 함수
"""
# 학년에 따른 숫자-텍스트 매핑 딕셔너리
grade_mapping = {
"초등학교 3학년": 3,
"초등학교 4학년": 4,
"초등학교 5학년": 5,
"초등학교 6학년": 6
}
# grade 값을 텍스트에서 숫자로 변환
grade_number = grade_mapping.get(grade, 3) # 기본값 3 설정
# 학년에 따른 추가 프롬프트 설정
grade_prompts = {
3: "초등학교 3학년 수준에 맞는 내용과 활동으로 구성해주세요.",
4: "초등학교 4학년 수준에 맞는 내용과 활동으로 구성해주세요.",
5: "초등학교 5학년 수준에 맞는 내용과 활동으로 구성해주세요.",
6: "초등학교 6학년 수준에 맞는 내용과 활동으로 구성해주세요."
}
# 전체 프롬프트 생성
prompt = f"""교수학습 설계 전문가, 질문 및 개념 기반 탐구 학습 전문가로서 아래 정보를 참고하여 주어진 수업 주제에 대한 6단계 질문 기반 개념 학습 지도안을 아래 형식에 따라 작성해줘. 수업 주제, 개념, 성취 기준, 핵심 개념에 맞게 각 단계별 구체적인 내용을 포함하여 작성할 것.
## 질문 중심 수업 6단계 정리 (교사/학생 활동, 질문 유형)
단계 1. 질문 생성
교사활동
- 긍정적인 분위기 조성
- 공부할 내용 제시 (흥미 유발)
- 질문 생성 방법 안내 (질문 형성 기법, 질문 줄기 예시 활용)<br>
- 초기 질문 생성 격려
학생활동
- 이전 학습과 새로운 학습 연결
- 공부할 내용 파악
- 다양한 질문 생성
- 질문 공책 활용
질문 유형 및 예시
- 사실적 질문(예시 포함)
- 해석적 질문(예시 포함)
- 적용적 질문(예시 포함)
- 개방형 질문(What, Why, How)(예시 포함)
단계 2. 핵심 질문 선정
교사활동
- 학습 목표 제시 및 명확화
- 학생 질문 검토 및 선별
- 성취기준과 질문 연결
- 핵심 질문 도출 안내(안내 질문 활용)
학생활동
- 초기 질문 발표 및 공유
- 질문 수정 및 보완
- 핵심 질문 선정 및 합의
질문 유형 및 예시
- 초점화된 질문(단원의 핵심 개념, 탐구 주제 명확히 드러남)(예시 포함)
단계 3. 탐구
교사활동
- 탐구 방법 안내 (개인, 짝, 모둠)
- 시각적 자료 제공
- 탐구 활동 촉진 (안내 질문, 격려, 피드백
- 탐구 과정 관찰 및 지원 (구조화된 탐구, 안내된 탐구)
학생활동
- 핵심 질문에 대한 탐구 계획 수립 및 실행
- 자료 수집 및 분석
- 다양한 활동 참여 (토의, 토론, 실험, 조사 등)
- 탐구 결과 정리
질문 유형 및 예시
- - 탐구 질문(What if, How to, Why)(예시 포함)
단계 4. 공유
교사활동
- 다양한 공유 방법 제시 (발표, 전시, 토론 등)
- 탐구 결과 발표 격려
- 피드백 제공 (긍정적, 구체적)
학생활동
- 탐구 결과 발표 및 공유
- 다른 학생 발표 경청 및 질문
- 피드백 주고받기
- 탐구 결과 보완
질문 유형 및 예시
- 설명/요약 질문 (What did you find?, How can you explain?)(예시 포함)
- 비교/대조 질문 (What are the similarities and differences?)(예시 포함)
단계 5. 개념화
교사활동
- 학생들의 개념화 과정 지원 (발문, 토의, 개념 지도)
- 핵심 개념 명확화
- 오개념 수정
학생활동
- 탐구 결과를 바탕으로 개념 도출
- 자신의 언어로 개념 정리 및 설명
- 개념 간 관계 파악
- 핵심 개념 일반화
질문 유형 및 예시
- 정의 질문 (What is the meaning of...?)(예시 포함)
- 개념 관계 질문 (How does ... relate to ...?)(예시 포함)
단계 6. 적용
교사활동
- 다양한 적용 활동 제시 (실생활 적용, 다른 교과 연계, 창의적 활동)
- 도전적인 과제 제시
- 적용 과정 및 결과 평가
- 피드백 제공
학생활동
- 배운 개념을 실생활/다른 교과에 적용
- 창의적 사고 및 문제 해결
- 적용 결과 발표 및 공유
- 학습 경험 성찰
질문 유형 및 예시
- 적용 질문(How can you use ... in real life?, Can you apply ... to solve this problem?)(예시 포함)
## 수업 정보
* 학년: {grade}
* 주제: {subject}
* 개념: {concept}
* 성취기준: {achievement_standard}
* 핵심 질문: {key_question}
* 차시: {lesson_number}
## 상세한 6단계 질문 기반 개념 학습 지도안:
"""
# 초기 빈 텍스트 출력
full_text = ""
yield full_text
try:
# 스트리밍 방식으로 응답 생성
response = model.generate_content([prompt], stream=True)
for chunk in response:
full_text += chunk.text
yield full_text
time.sleep(0.05)
except Exception as e:
yield f"에러 발생: {str(e)}"
# Gradio 인터페이스 생성
iface = gr.Interface(
fn=generate_lesson_plan,
inputs=[
gr.Dropdown(["초등학교 3학년", "초등학교 4학년", "초등학교 5학년", "초등학교 6학년"], label="학년", value="초등학교 3학년"),
gr.Textbox(lines=1, label="수업 주제"),
gr.Textbox(lines=1, label="개념"),
gr.Textbox(lines=1, label="성취기준"),
gr.Textbox(lines=1, label="핵심 질문"),
gr.Textbox(lines=1, label="차시"),
],
outputs=gr.Textbox(lines=20, label="질문 기반 개념 학습"),
title="💡 질문 기반 개념 학습",
description="수업 주제에 대한 6단계 질문 기반 개념 학습 지도안을 생성하세요!",
examples=[
["초등학교 6학년", "광합성", "식물의 잎에서 빛에너지를 이용하여 양분을 만드는 과정", "광합성의 과정을 이해하고 설명할 수 있다.", "식물은 어떻게 스스로 양분을 만들어낼까?", "2"],
["초등학교 5학년", "조선 시대의 과학 기술", "조선 시대에 발명되거나 발전된 과학 기술", "조선 시대의 과학 기술 발전을 이해하고 설명할 수 있다.", "조선 시대에는 어떤 과학 기술이 발전했을까?", "3"],
]
)
# 인터페이스 실행
iface.launch()