ll7098ll commited on
Commit
c1c46eb
·
verified ·
1 Parent(s): c944071

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -51
app.py CHANGED
@@ -1,69 +1,89 @@
1
  import os
2
- import google.generativeai as genai
3
- import gradio as gr
4
  import time
 
 
 
 
 
5
 
 
6
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
7
 
8
- # Set up the model
9
  generation_config = {
10
- "temperature": 1,
11
- "top_p": 0.95,
12
- "top_k": 40,
13
- "max_output_tokens": 8192,
14
  }
15
 
16
  safety_settings = [
17
- {
18
- "category": "HARM_CATEGORY_HARASSMENT",
19
- "threshold": "BLOCK_NONE"
20
- },
21
- {
22
- "category": "HARM_CATEGORY_HATE_SPEECH",
23
- "threshold": "BLOCK_NONE"
24
- },
25
- {
26
- "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
27
- "threshold": "BLOCK_NONE"
28
- },
29
- {
30
- "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
31
- "threshold": "BLOCK_NONE"
32
- },
33
  ]
34
 
35
- model = genai.GenerativeModel(model_name="gemini-1.5-pro",
36
- generation_config=generation_config,
37
- safety_settings=safety_settings)
 
 
38
 
39
  def generate_curriculum(prompt):
40
- prompt_parts = [
41
- "수업설계 전문가. 수업자의 의도를 파악하여, 수업 주제 및 목표에 관한 핵심 질문 및 수업 질문을 만들어 줘, 소크라테스 산파법(교사와 학생이 질문을 계속 주고 받는)을 기반으로한 수업 계획 및 시나리오 작성.",
42
- "수업 주제 및 수업 의도 수업 주제 수업 의도",
43
- "질문 1. 핵심 질문(Big Question)\n\n2. 수업 질문(inquiry question)\n\n3. 수업 도입(전시학습 상기, 동기유발, 학습 목표 및 활동 안내) 부분 시나리오\n\n4. 수업 전개(학습활동 1, 2...) 부분 시나리오\n\n5. 수업 정리(간단한 정리 퀴즈, 수업 내용 정리, 차시 예고) 부분 시나리오\n\n6. 활용할 수 있는 자료\n\n7. 평가 계획 및 수행과제(GRASPS), 평가 루브릭(상, 중, 하)\n\n8. 학습을 위한 팁",
44
- prompt,
45
- "수업 주제 및 수업 의도 ",
46
- "질문이 넘치는 수업",
47
- ]
48
 
49
- full_text = ""
50
- yield full_text # 초기 빈 텍스트 출력
51
 
52
- try:
53
- response = model.generate_content(prompt_parts, stream=True)
54
- for chunk in response:
55
- full_text += chunk.text
56
- yield full_text
57
- time.sleep(0.05) # 약간의 지연 추가
58
- except Exception as e:
59
- yield f"에러 발생: {str(e)}"
 
 
 
60
 
61
- iface = gr.Interface(
62
- fn=generate_curriculum,
63
- inputs=gr.Textbox(lines=5, label="수업 주제 및 수업 의도 입력"),
64
- outputs=gr.Textbox(lines=20, label="질문이 넘치는 수업"),
65
- title="질문이 넘치는 수업 챗봇",
66
- description="수업 주제 수업 의도를 입력하면 질문이 넘치는 수업을 설계합니다."
 
67
  )
68
 
69
- 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
+ # Configure the generative AI model
10
  genai.configure(api_key=os.environ["GEMINI_API_KEY"])
11
 
 
12
  generation_config = {
13
+ "temperature": 1,
14
+ "top_p": 0.95,
15
+ "top_k": 40,
16
+ "max_output_tokens": 8192,
17
  }
18
 
19
  safety_settings = [
20
+ {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},
21
+ {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},
22
+ {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},
23
+ {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
 
 
 
 
 
 
 
 
 
 
 
 
24
  ]
25
 
26
+ model = genai.GenerativeModel(
27
+ model_name="gemini-1.5-pro",
28
+ generation_config=generation_config,
29
+ safety_settings=safety_settings,
30
+ )
31
 
32
  def generate_curriculum(prompt):
33
+ prompt_parts = [
34
+ f"수업설계 전문가. 학년: {prompt['grade']}, 주제: {prompt['subject']}, 수업 의도: {prompt['lesson_intent']}. 수업자의 의도를 파악하여, 수업 주제 및 목표에 관한 핵심 질문 및 수업 질문을 만들어 줘, 소크라테스 산파법(교사와 학생이 질문을 계속 주고 받는)을 기반으로한 수업 계획 및 시나리오 작성.",
35
+ "질문 1. 핵심 질문(Big Question)\n\n2. 수업 질문(inquiry question)\n\n3. 수업 도입(전시학습 상기, 동기유발, 학습 목표 활동 안내) 부분 시나리오\n\n4. 수업 전개(학습활동 1, 2...) 부분 시나리오\n\n5. 수업 정리(간단한 정리 퀴즈, 수업 내용 정리, 차시 예고) 부분 시나리오\n\n6. 활용할 수 있는 자료\n\n7. 평가 계획 및 수행과제(GRASPS), 평가 루브릭(상, 중, 하)\n\n8. 학습을 위한 팁",
36
+ ]
 
 
 
 
37
 
38
+ full_text = "" # 초기 빈 텍스트 출력
 
39
 
40
+ try:
41
+ response = model.generate_content(prompt_parts, stream=True)
42
+ for chunk in response:
43
+ full_text += chunk.text
44
+ # Convert markdown to HTML for display
45
+ html_text = markdown.markdown(full_text, extensions=['tables'])
46
+ output_area.markdown(html_text, unsafe_allow_html=True)
47
+ time.sleep(0.05)
48
+ except Exception as e:
49
+ st.error(f"Error: {str(e)}")
50
+ return ""
51
 
52
+ return full_text
53
+
54
+ # Streamlit Interface
55
+ colored_header(
56
+ label="질문이 넘치는 수업 설계",
57
+ description="수업 주제에 대한 질문이 넘치는 수업 설계를 생성하세요!",
58
+ color_name="red-70",
59
  )
60
 
61
+ add_vertical_space(1)
62
+
63
+ with st.sidebar.expander("입력 설정", expanded=True):
64
+ grade = st.selectbox("학년", ["초등학교 1학년", "초등학교 2학년", "초등학교 3학년", "초등학교 4학년", "초등학교 5학년", "초등학교 6학년"])
65
+ subject = st.text_input("수업 주제")
66
+ lesson_intent = st.text_input("수업 의도")
67
+
68
+ generate_button = st.button("질문이 넘치는 수업 설계 생성")
69
+
70
+ # 출력 영역 정의
71
+ output_area = st.empty()
72
+
73
+ if generate_button:
74
+ prompt_data = {
75
+ "grade": grade,
76
+ "subject": subject,
77
+ "lesson_intent": lesson_intent,
78
+ }
79
+ result = generate_curriculum(prompt_data)
80
+ st.session_state.generated_activity = result
81
+
82
+ # 복사 버튼 추가
83
+ if result:
84
+ if st.button("출력 내용 복사"):
85
+ try:
86
+ st.experimental_set_query_params(copied_text=result)
87
+ st.success("출력 내용이 복사되었습니다!")
88
+ except Exception as e:
89
+ st.error(f"복사 중 오류가 발생했습니다: {str(e)}")