ll7098ll commited on
Commit
bf63def
·
verified ·
1 Parent(s): 5db5057

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -42
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,43 +23,39 @@ model = genai.GenerativeModel(
21
  generation_config=generation_config,
22
  )
23
 
24
- # 프롬프트 설정
25
- SYSTEM_PROMPT = """
26
- 당신은 교수학습 활동 설계 전문가, 교과교육 내용 전문가, 교육공학자입니다.
27
- 선생님들이 활동 컨셉 및 소개를 입력하면 활동을 자세하게 설명해주세요..
28
- 다음은 활동 설계에 필요한 정보입니다.
29
-
30
- **활동 구성 요소:**
31
- 1. 활동 컨셉 및 소개
32
- 2. 활동 목표
33
- 3. 활동 단계별 안내
34
- - 1단계: 1단계 활동 안내
35
- - 2단계: 2단계 활동 안내
36
- - 3단계: 3단계 활동 안내
37
- - 4단계: 4단계 활동 안내...
38
- 4. 활동 준비물 및 기구
39
- 5. 활동을 위한 자료
40
- - 활동에 필요한 자료
41
- - 추가 추천 자료
42
- 6. 활동의 유의점
43
- - 학생 입장 유의점
44
- - 교사 입장 유의점
45
- 7. 학생에게 제공할 활동 안내 자료
46
- * 활동 안내 자료는 초등학생이 이해할 수 있도록 최대한 구체적이고, 단계적, 명시적으로 안내해주세요.
47
- """
48
-
49
- def generate_curriculum(achievement_standard):
50
  """
51
  활동 컨셉을 입력받아 활동을 생성합니다.
52
  아웃풋을 실시간으로 출력합니다.
53
-
54
  Args:
55
  achievement_standard (str): 활동 컨셉
56
-
57
  Returns:
58
  str: 생성된 활동
59
  """
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  prompt = [
62
  SYSTEM_PROMPT,
63
  f"**활동 컨셉:** {achievement_standard}",
@@ -72,17 +70,34 @@ def generate_curriculum(achievement_standard):
72
  yield collected_text # 실시간 출력을 위해 yield 사용
73
  time.sleep(0.03) # 출력 속도 조절
74
 
75
- # Gradio 인터페이스 설정
76
- iface = gr.Interface(
77
- fn=generate_curriculum,
78
- inputs=gr.Textbox(lines=3, label="활동 컨셉 및 소개 입력"),
79
- outputs=gr.Textbox(lines=10, label="학습 활동"),
80
- title="학습 활동 설계 도우미",
81
  description="선생님이 활동의 컨셉을 입력하시면 활동을 구체적으로 설계해줍니다.",
82
- examples=[
83
- ["국경, 지형, 자원, 인구정보, 국가 간 관계가 표시된 지도와 시나리오를 주고, 나라 간 국경선을 정하는 활동을 시뮬레이션 게임 모형을 활용해 하고 싶어."],
84
- ]
85
  )
86
 
87
- # 인터페이스 실행
88
- 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_lesson_plan(achievement_standard):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  """
28
  활동 컨셉을 입력받아 활동을 생성합니다.
29
  아웃풋을 실시간으로 출력합니다.
 
30
  Args:
31
  achievement_standard (str): 활동 컨셉
 
32
  Returns:
33
  str: 생성된 활동
34
  """
35
 
36
+ SYSTEM_PROMPT = """
37
+ 당신은 교수학습 활동 설계 전문가, 교과교육 내용 전문가, 교육공학자입니다.
38
+ 선생님들이 활동 컨셉 및 소개를 입력하면 활동을 자세하게 설명해주세요..
39
+ 다음은 활동 설계에 필요한 정보입니다.
40
+ **활동 구성 요소:**
41
+ 1. 활동 컨셉 및 소개
42
+ 2. 활동 목표
43
+ 3. 활동 단계별 안내
44
+ - 1단계: 1단계 활동 안내
45
+ - 2단계: 2단계 활동 안내
46
+ - 3단계: 3단계 활동 안내
47
+ - 4단계: 4단계 활동 안내...
48
+ 4. 활동 준비물 및 기구
49
+ 5. 활동을 위한 자료
50
+ - 활동에 필요한 자료
51
+ - 추가 추천 자료
52
+ 6. 활동의 유의점
53
+ - 학생 입장 유의점
54
+ - 교사 입장 유의점
55
+ 7. 학생에게 제공할 활동 안내 자료
56
+ * 활동 안내 자료는 초등학생이 이해할 수 있도록 최대한 구체적이고, 단계적, 명시적으로 안내해주세요.
57
+ """
58
+
59
  prompt = [
60
  SYSTEM_PROMPT,
61
  f"**활동 컨셉:** {achievement_standard}",
 
70
  yield collected_text # 실시간 출력을 위해 yield 사용
71
  time.sleep(0.03) # 출력 속도 조절
72
 
73
+ # Streamlit Interface
74
+ colored_header(
75
+ label="학습 활동 설계 도우미",
 
 
 
76
  description="선생님이 활동의 컨셉을 입력하시면 활동을 구체적으로 설계해줍니다.",
77
+ color_name="red-70",
 
 
78
  )
79
 
80
+ add_vertical_space(1)
81
+
82
+ achievement_standard = st.text_area("활동 컨셉 및 소개 입력", height=100)
83
+
84
+ generate_button = st.button("학습 활동 생성")
85
+
86
+ # 출력 영역 정의
87
+ output_area = st.empty()
88
+
89
+ if generate_button and achievement_standard:
90
+ output_text = ""
91
+ output_area.markdown(output_text)
92
+ try:
93
+ for partial_output in generate_lesson_plan(achievement_standard):
94
+ output_text = partial_output
95
+ output_area.markdown(output_text)
96
+ except Exception as e:
97
+ st.error(f"오류가 발생했습니다: {str(e)}")
98
+
99
+ # 복사 버튼 추가
100
+ if output_text:
101
+ if st.button("출력 내용 복사"):
102
+ st.write(output_text)
103
+ st.success("출력 내용이 복사되었습니다!")