| import os |
| import time |
|
|
| import google.generativeai as genai |
| import gradio as gr |
|
|
| |
| 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) |
|
|
| |
| 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() |