ll7098ll commited on
Commit
fabb74d
·
verified ·
1 Parent(s): 97144fc

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -49
app.py CHANGED
@@ -1,70 +1,79 @@
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
- # 모델 설정을 함수 내부로 이동
9
- def generate_curriculum(prompt):
10
- generation_config = {
11
  "temperature": 1,
12
  "top_p": 0.95,
13
  "top_k": 64,
14
  "max_output_tokens": 15000,
15
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
- safety_settings = [
18
- {
19
- "category": "HARM_CATEGORY_HARASSMENT",
20
- "threshold": "BLOCK_NONE"
21
- },
22
- {
23
- "category": "HARM_CATEGORY_HATE_SPEECH",
24
- "threshold": "BLOCK_NONE"
25
- },
26
- {
27
- "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
28
- "threshold": "BLOCK_NONE"
29
- },
30
- {
31
- "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
32
- "threshold": "BLOCK_NONE"
33
- },
34
- ]
35
 
36
- # 세션마다 새로운 모델 인스턴스 생성
37
- model = genai.GenerativeModel(model_name="gemini-1.5-pro",
38
- generation_config=generation_config,
39
- safety_settings=safety_settings)
40
 
41
- prompt_parts = [
42
- "Concept-based inquiry learning expert",
43
- "학습주제 학습주제",
44
- "주제에 대한 개념기반 탐구학습 구체적 수업 계획 0. 학습주제에 대한 매크로 개념(개념적 렌즈), 마이크로 개념(교과개념), 일반화(개념적 이해)\n\n1. 관계맺기: 지적 정서적 수업참여, 사전지식 유도\n\n2. 집중하기: 교과개념 조사, 관련 사실적 예 중 1-2개 소개하기\n\n3. 조사하기: 개념 관련 사례들 조사하기, 사례 추가제시로 개념이해 확장하기 \n\n4. 조직 및 정리하기: 사실적 개념적 수준에서 생각 구성하기, 다른 자료로, 다른 방법으로, 교과로 개념과 생각 나타내기\n\n5. 일반화: 사실적 예시에서 패턴 발견하고, 연결성 찾기, 일반화 명료화하기\n\n6.전이: 일반화 유효성검증하고 정당화하기, 새로운 상황에 적용, 학습에 대해 의미있는 행동 취하기, 예측, 가정을 형성하기 위해 경험과 이해 활용하기\n\n7. 성찰하기: 학습주체임을 인식하기, 자신 학습과정 계획하고 통제하기, 과정 평가하기\n\n8. 평가 계획 및 수행과제(GRASPS), 평가 루브릭(상, 중, 하 평어)\n\n9. 학생의 탐구를 위한 팁",
45
- prompt,
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
- # 인터페이스 설정 (변경 없음)
62
  iface = gr.Interface(
63
  fn=generate_curriculum,
64
- inputs=gr.Textbox(lines=1, label="학습주제 입력"),
65
- outputs=gr.Textbox(lines=20, label="개념기반 탐구학습"),
66
- title="개념기반 탐구학습 챗봇",
67
- description="학습주제 입력하면 개념기반 탐구학습을 설계합니다."
68
  )
69
 
 
70
  iface.launch()
 
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
+ # 모델 설정
11
+ generation_config = {
 
12
  "temperature": 1,
13
  "top_p": 0.95,
14
  "top_k": 64,
15
  "max_output_tokens": 15000,
16
+ "response_mime_type": "text/plain",
17
+ }
18
+
19
+ model = genai.GenerativeModel(
20
+ model_name="gemini-1.5-pro",
21
+ generation_config=generation_config,
22
+ )
23
+
24
+ # 프롬프트 설정
25
+ SYSTEM_PROMPT = """
26
+ 당신은 Concept-based inquiry learning expert, 개념기반 탐구학습 설계 전문가입니다.
27
+ 초등학교 개념기반 탐구학습 수업을 체계적으로 설계해 주세요.
28
+ 다음은 개념기반 탐구학습 설계에 필요한 정보입니다.
29
+
30
+ **개념기반 탐구학습 구성 요소:**
31
+ 1. **성취기준에 대한 매크로 개념(개념적 렌즈), 마이크로 개념(교과개념), 일반화(개념적 이해)**
32
+ 2. **관계맺기: 지적 정서적 수업참여, 사전지식 유도**
33
+ 3. **집중하기: 교과개념 조사, 관련 사실적 예 중 2~3개 소개하기**
34
+ 4. **조사하기: 개념 관련 사례들 조사하기, 사례 추가제시로 개념이해 확장하기 **
35
+ 5. **조직 및 정리하기: 사실적 개념적 수준에서 생각 구성하기, 다른 자료로, 다른 방법으로, 교과로 개념과 생각 나타내기**
36
+ 6. **일반화: 사실적 예시에서 패턴 발견하고, 연결성 찾기, 일반화 명료화하기**
37
+ 7. **전이: 일반화 유효성검증하고 정당화하기, 새로운 상황에 적용, 학습에 대해 의미있는 행동 취하기, 예측, 가정을 형성하기 위해 경험과 이해 활용하기**
38
+ 8. **성찰하기: 학습주체임을 인식하기, 자신 학습과정 계획하고 통제하기, 과정 평가하기**
39
+ 9. **평가 계획 및 수행과제(GRASPS), 평가 루브릭(상, 중, 하 평어)**
40
+ 10. **학생의 탐구를 위한 팁**
41
+ """
42
 
43
+ def generate_curriculum(achievement_standard):
44
+ """
45
+ 성취기준을 입력받아 개념기반 탐구학습을 생성합니다.
46
+ 아웃풋을 실시간으로 출력합니다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
 
48
+ Args:
49
+ achievement_standard (str): 성취기준
 
 
50
 
51
+ Returns:
52
+ str: 생성된 개념기반 탐구학습
53
+ """
 
 
 
 
54
 
55
+ prompt = [
56
+ SYSTEM_PROMPT,
57
+ f"**성취기준:** {achievement_standard}",
58
+ "**개념기반 탐구학습:**",
59
+ ]
60
 
61
+ response = model.generate_content(prompt, stream=True)
62
+ collected_text = ""
63
+ for token in response:
64
+ chunk = token.text
65
+ collected_text += chunk
66
+ yield collected_text # 실시간 출력을 위해 yield 사용
67
+ time.sleep(0.03) # 출력 속도 조절
 
68
 
69
+ # Gradio 인터페이스 설정
70
  iface = gr.Interface(
71
  fn=generate_curriculum,
72
+ inputs=gr.Textbox(lines=3, label="성취기준 입력"),
73
+ outputs=gr.Textbox(lines=10, label="개념기반 탐구학습"),
74
+ title="개념기반 탐구학습 설계 도우미",
75
+ description="초등학교 교육과정에 맞는 개념기반 탐구학습을 생성합니다.",
76
  )
77
 
78
+ # 인터페이스 실행
79
  iface.launch()