ll7098ll commited on
Commit
8ee7e61
·
verified ·
1 Parent(s): 318b822

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +89 -73
app.py CHANGED
@@ -1,10 +1,12 @@
1
  import os
2
  import time
3
-
4
  import google.generativeai as genai
5
- import gradio as gr
 
 
6
 
7
- # Google Gemini API 설정
8
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
9
 
10
  # 모델 설정
@@ -21,28 +23,6 @@ model = genai.GenerativeModel(
21
  generation_config=generation_config,
22
  )
23
 
24
- # 프롬프트 설정
25
- SYSTEM_PROMPT = """
26
- 당신은 교수학습 활동 설계 전문가, 교과교육 내용 전문가, 교육공학자입니다.
27
- 선생님들이 학습 주제와 사고 루틴을 입력하면, 해당 주제에 적용 가능한 사고 루틴 활동 예시를 상세하게 설명해주세요.
28
- **활동 예시 구성 요소:**
29
- 1. 학습 주제
30
- 2. 적용할 사고 루틴 및 사고 루틴에 대한 설명명
31
- 3. 활동 목표
32
- 4. 활동 단계별 안내
33
- - 각 단계별로 사고 루틴을 어떻게 활용하는지 자세하게 설명
34
- - 예시 질문 포함
35
- 5. 활동 준비물 및 기구
36
- 6. 활동을 위한 자료
37
- - 활동에 필요한 자료
38
- - 추가 추천 자료
39
- 7. 활동의 유의점
40
- - 학생 입장 유의점
41
- - 교사 입장 유의점
42
- 8. 학생에게 제공할 활동 안내 자료
43
- * 활동 안내 자료는 초등학생이 이해할 수 있도록 최대한 구체적이고, 단계적, 명시적으로 안내해주세요.
44
- """
45
-
46
  def generate_thinking_routine_example(topic, thinking_routine):
47
  """
48
  학습 주제와 사고 루틴을 입력받아 활동 예시를 생성합니다.
@@ -53,6 +33,27 @@ def generate_thinking_routine_example(topic, thinking_routine):
53
  str: 생성된 활동 예시
54
  """
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  prompt = [
57
  SYSTEM_PROMPT,
58
  f"**학습 주제:** {topic}",
@@ -65,56 +66,71 @@ def generate_thinking_routine_example(topic, thinking_routine):
65
  for token in response:
66
  chunk = token.text
67
  collected_text += chunk
68
- yield collected_text
69
- time.sleep(0.03)
70
 
71
- # Gradio 인터페이스 설정 - 드롭다운 메뉴 추가
72
- iface = gr.Interface(
73
- fn=generate_thinking_routine_example,
74
- inputs=[
75
- gr.Textbox(lines=2, label="학습 주제 입력"),
76
- gr.Dropdown(
77
- choices=[
78
- "See-Think-Wonder (보고-생각하고-궁금해하기)",
79
- "Zoom In (확대)",
80
- "Think-Puzzle-Explore (생각-궁금-탐구)",
81
- "Chalk Talk (침묵 대화)",
82
- "321 Bridge (3-2-1 다리 짓기)",
83
- "Compass Points (나침반)",
84
- "Explanation Game (설명 게임)",
85
- "Headlines (헤드라인)",
86
- "CSI: Color, Symbol, Image (색상, 기호, 이미지)",
87
- "Generate-Sort-Connect-Elaborate-Concept Maps (개념도)",
88
- "Connect-Extend-Challenge (연결-확장-도전)",
89
- "The 4 C's (4가지 C)",
90
- "Micro Lab (미니 실험)",
91
- "I used to think…Now I think… (예전엔 … 라고 생각했지만, 지금은 … 라고 생각해)",
92
- "What makes you say that? (무엇 때문에 그렇게 생각하니?)",
93
- "Circle Viewpoints (다양한 관점)",
94
- "Step Inside (입장 바꿔 생각하기)",
95
- "Red Light, Yellow Light, Green Light (빨간불, 노란불, 초록불)",
96
- "Claim Support Question (주장-근거-질문)",
97
- "Tug of War (줄다리기)",
98
- "Word-Phrase-Sentence (단어-구-문장)",
99
- "Think Aloud (사고 구술)",
100
- "관찰-비교대조-분류",
101
- "관찰하기",
102
- "무리 짓기",
103
- "예상하기",
104
- "관계망 그리기",
105
- "도구 사용의 방법 및 절차(순서 단계적으로 제시)"
106
- ],
107
- label="사고 루틴 선택"
108
- ),
109
- ],
110
- outputs=gr.Textbox(lines=15, label="사고 루틴 활용 예시"),
111
- title="학습 활동 설계 도우미: 사고 루틴 활용 편",
112
  description="선생님이 학습 주제와 사고 루틴을 선택하시면, 해당 주제에 적용 가능한 사고 루틴 활동 예시를 보여줍니다.",
113
- examples=[
114
- ["광합성", "See-Think-Wonder (보고-생각하고-궁금해하기)"],
115
- ["조선 시대의 과학 기술", "Think-Puzzle-Explore (생각-궁금-탐구)"],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
116
  ]
117
  )
118
 
119
- # 인터페이스 실행
120
- iface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import os
2
  import time
3
+ import streamlit as st
4
  import google.generativeai as genai
5
+ from streamlit_extras.colored_header import colored_header
6
+ from streamlit_extras.add_vertical_space import add_vertical_space
7
+ import markdown
8
 
9
+ # Google Gemini API Key 설정
10
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
11
 
12
  # 모델 설정
 
23
  generation_config=generation_config,
24
  )
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  def generate_thinking_routine_example(topic, thinking_routine):
27
  """
28
  학습 주제와 사고 루틴을 입력받아 활동 예시를 생성합니다.
 
33
  str: 생성된 활동 예시
34
  """
35
 
36
+ SYSTEM_PROMPT = """
37
+ 당신은 교수학습 활동 설계 전문가, 교과교육 내용 전문가, 교육공학자입니다.
38
+ 선생님들이 학습 주제와 사고 루틴을 입력하면, 해당 주제에 적용 가능한 사고 루틴 활동 예시를 상세하게 설명해주세요.
39
+ **활동 예시 구성 요소:**
40
+ 1. 학습 주제
41
+ 2. 적용할 사고 루틴 및 사고 루틴에 대한 설명명
42
+ 3. 활동 목표
43
+ 4. 활동 단계별 안내
44
+ - 각 단계별로 사고 루틴을 어떻게 활용하는지 자세하게 설명
45
+ - 예시 질문 포함
46
+ 5. 활동 준비물 및 기구
47
+ 6. 활동을 위한 자료
48
+ - 활동에 필요한 자료
49
+ - 추가 추천 자료
50
+ 7. 활동의 유의점
51
+ - 학생 입장 유의점
52
+ - 교사 입장 유의점
53
+ 8. 학생에게 제공할 활동 안내 자료
54
+ * 활동 안내 자료는 초등학생이 이해할 수 있도록 최대한 구체적이고, 단계적, 명시적으로 안내해주세요.
55
+ """
56
+
57
  prompt = [
58
  SYSTEM_PROMPT,
59
  f"**학습 주제:** {topic}",
 
66
  for token in response:
67
  chunk = token.text
68
  collected_text += chunk
69
+ yield collected_text # 실시간 출력을 위해 yield 사용
70
+ time.sleep(0.03) # 출력 속도 조절
71
 
72
+ # Streamlit Interface
73
+ colored_header(
74
+ label="학습 활동 설계 도우미: 사고 루틴 활용 편",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  description="선생님이 학습 주제와 사고 루틴을 선택하시면, 해당 주제에 적용 가능한 사고 루틴 활동 예시를 보여줍니다.",
76
+ color_name="red-70",
77
+ )
78
+
79
+ add_vertical_space(1)
80
+
81
+ # 사용자 입력 받기
82
+ topic = st.text_input("학습 주제 입력", "")
83
+ thinking_routine = st.selectbox(
84
+ "사고 루틴 선택",
85
+ [
86
+ "See-Think-Wonder (보고-생각하고-궁금해하기)",
87
+ "Zoom In (확대)",
88
+ "Think-Puzzle-Explore (생각-궁금-탐구)",
89
+ "Chalk Talk (침묵 대화)",
90
+ "321 Bridge (3-2-1 다리 짓기)",
91
+ "Compass Points (나침반)",
92
+ "Explanation Game (설명 게임)",
93
+ "Headlines (헤드라인)",
94
+ "CSI: Color, Symbol, Image (색상, 기호, 이미지)",
95
+ "Generate-Sort-Connect-Elaborate-Concept Maps (개념도)",
96
+ "Connect-Extend-Challenge (연결-확장-도전)",
97
+ "The 4 C's (4가지 C)",
98
+ "Micro Lab (미니 실험)",
99
+ "I used to think…Now I think… (예전엔 … 라고 생각했지만, 지금은 … 라고 생각해)",
100
+ "What makes you say that? (무엇 때문에 그렇게 생각하니?)",
101
+ "Circle Viewpoints (다양한 관점)",
102
+ "Step Inside (입장 바꿔 생각하기)",
103
+ "Red Light, Yellow Light, Green Light (빨간불, 노란불, 초록불)",
104
+ "Claim Support Question (주장-근거-질문)",
105
+ "Tug of War (줄다리기)",
106
+ "Word-Phrase-Sentence (단어-구-문장)",
107
+ "Think Aloud (사고 구술)",
108
+ "관찰-비교대조-분류",
109
+ "관찰하기",
110
+ "무리 짓기",
111
+ "예상하기",
112
+ "관계망 그리기",
113
+ "도구 사용의 방법 및 절차(순서 단계적으로 제시)"
114
  ]
115
  )
116
 
117
+ generate_button = st.button("사고 루틴 활용 예시 생성")
118
+
119
+ # 출력 영역 정의
120
+ output_area = st.empty()
121
+
122
+ if generate_button and topic and thinking_routine:
123
+ output_text = ""
124
+ output_area.markdown(output_text)
125
+ try:
126
+ for partial_output in generate_thinking_routine_example(topic, thinking_routine):
127
+ output_text = partial_output
128
+ output_area.markdown(output_text)
129
+ except Exception as e:
130
+ st.error(f"오류가 발생했습니다: {str(e)}")
131
+
132
+ # 복사 버튼 추가
133
+ if output_text:
134
+ if st.button("출력 내용 복사"):
135
+ st.write(output_text)
136
+ st.success("출력 내용이 복사되었습니다!")