tskills / app.py
ll7098ll's picture
Update app.py
ebda115 verified
raw
history blame
4.26 kB
import os
import time
import google.generativeai as genai
import gradio as gr
# Google Gemini API 키 설정
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
# 모델 설정
generation_config = {
"temperature": 1,
"top_p": 0.95,
"top_k": 64,
"max_output_tokens": 15000,
"response_mime_type": "text/plain",
}
model = genai.GenerativeModel(
model_name="gemini-1.5-pro-exp-0801",
generation_config=generation_config,
)
# 프롬프트 설정
SYSTEM_PROMPT = """
당신은 교수학습 활동 설계 전문가, 교과교육 내용 전문가, 교육공학자입니다.
선생님들이 학습 주제와 사고 루틴을 입력하면, 해당 주제에 적용 가능한 사고 루틴 활동 예시를 상세하게 설명해주세요.
**활동 예시 구성 요소:**
1. 학습 주제
2. 적용할 사고 루틴 및 사고 루틴에 대한 설명명
3. 활동 목표
4. 활동 단계별 안내
- 각 단계별로 사고 루틴을 어떻게 활용하는지 자세하게 설명
- 예시 질문 포함
5. 활동 준비물 및 기구
6. 활동을 위한 자료
- 활동에 필요한 자료
- 추가 추천 자료
7. 활동의 유의점
- 학생 입장 유의점
- 교사 입장 유의점
8. 학생에게 제공할 활동 안내 자료
* 활동 안내 자료는 초등학생이 이해할 수 있도록 최대한 구체적이고, 단계적, 명시적으로 안내해주세요.
"""
def generate_thinking_routine_example(topic, thinking_routine):
"""
학습 주제와 사고 루틴을 입력받아 활동 예시를 생성합니다.
Args:
topic (str): 학습 주제
thinking_routine (str): 적용할 사고 루틴
Returns:
str: 생성된 활동 예시
"""
prompt = [
SYSTEM_PROMPT,
f"**학습 주제:** {topic}",
f"**적용할 사고 루틴:** {thinking_routine}",
"**활동 예시:**",
]
response = model.generate_content(prompt, stream=True)
collected_text = ""
for token in response:
chunk = token.text
collected_text += chunk
yield collected_text
time.sleep(0.03)
# Gradio 인터페이스 설정 - 드롭다운 메뉴 추가
iface = gr.Interface(
fn=generate_thinking_routine_example,
inputs=[
gr.Textbox(lines=2, label="학습 주제 입력"),
gr.Dropdown(
choices=[
"See-Think-Wonder (보고-생각하고-궁금해하기)"
"Zoom In (확대)"
"Think-Puzzle-Explore (생각-궁금-탐구)"
"Chalk Talk (침묵 대화)"
"321 Bridge (3-2-1 다리 짓기)"
"Compass Points (나침반)"
"Explanation Game (설명 게임)"
"Headlines (헤드라인)"
"CSI: Color, Symbol, Image (색상, 기호, 이미지)"
"Generate-Sort-Connect-Elaborate-Concept Maps (개념도)"
"Connect-Extend-Challenge (연결-확장-도전)"
"The 4 C's (4가지 C)"
"Micro Lab (미니 실험)"
"I used to think…Now I think… (예전엔 … 라고 생각했지만, 지금은 … 라고 생각해)"
"What makes you say that? (무엇 때문에 그렇게 생각하니?)"
"Circle Viewpoints (다양한 관점)"
"Step Inside (입장 바꿔 생각하기)"
"Red Light, Yellow Light (빨간불, 노란불)"
"Claim Support Question (주장-근거-질문)"
"Tug of War (줄다리기)"
"Word-Phrase-Sentence (단어-구-문장)"
],
label="사고 루틴 선택"
),
],
outputs=gr.Textbox(lines=15, label="사고 루틴 활용 예시"),
title="학습 활동 설계 도우미: 사고 루틴 활용 편",
description="선생님이 학습 주제와 사고 루틴을 선택하시면, 해당 주제에 적용 가능한 사고 루틴 활동 예시를 보여줍니다.",
examples=[
["광합성", "See-Think-Wonder (보고-생각하고-궁금해하기)"],
["조선 시대의 과학 기술", "Think-Puzzle-Explore (생각-궁금-탐구)"],
]
)
# 인터페이스 실행
iface.launch()