JUNGU commited on
Commit
9fe6fdf
·
verified ·
1 Parent(s): bca9727

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -76
app.py CHANGED
@@ -16,7 +16,7 @@ def generate_annotated_text(text):
16
  messages=[
17
  {
18
  "role": "system",
19
- "content": "성취기준 기반 학생의 특성 및 활동 평가 생성\n성취기준을 입력하시면, 해당 성취기준에 기반한 학생의 특성 활동에 대한 평가를 annotated_text 형식으로 제공합니다. 성취기준을 보며 학생의 특정 활동, 성취 수준, 교사의 총평, 그리고 학생의 역량을 고려하여 체계적으로 구성된 출력을 제공합니다. 주어는 반드시 생략합니다. \n\n예제:\n입력: ```성취기준: [6국01-07]상대가 처한 상황을 이해하고 공감하며 듣는 태도를 지닌다, [6국01-02] 의견을 제시하고 함께 조정하며 토의한다.```\n출력: ```annotated_text(\n (\"평소 자신의 생각을 일목요연하게 정리하는 습관이 있음.\", \"역량\", \"rgba(255, 0, 0, 0.3)\"),\n (\"사회 현안에 관한 주장하는 글쓰기를 잘함.\", \"성취수준\", \"rgba(0, 0, 255, 0.3)\"),\n (\"친구의 고민을 해결해주는 역할극에서 상대방을 배려하여 해결 가능한 방안을 제안함.\", \"수행\", \"rgba(0, 128, 0, 0.3)\"),\n (\"상대가 처한 상황을 이해하고 공감하는 태도를 가지고 친구들과 원만한 관계를 맺고 갈등을 조정함.\", \"교사총평\", \"rgba(128, 128, 128, 0.3)\"),\n (\"중간 놀이 시간에 운동장을 사용하는 방법 정하기를 주제로 한 토의에서 알맞은 근거와 뒷받침할 수 있는 자료를 토대로 자신의 의견을 타당하게 제시하면서 다른 사람의 의견을 능동적으로 수용하고 효과적으로 의견을 조정하는 능력을 보임.\", \"수행\", \"rgba(0, 128, 0, 0.3)\"),\n (\"상대의 의견을 존중하고 협력하는 태도를 보임.\", \"역량\", \"rgba(255, 0, 0, 0.3)\")\n)\n```"
20
  },
21
  {
22
  "role": "user",
@@ -38,7 +38,7 @@ def generate_similar_sentences(base_sentence):
38
  messages=[
39
  {
40
  "role": "system",
41
- "content": f"다음은 '{base_sentence}'와 유사한 학생의 특성 활동에 대한 평가 예시 문항 10개를 만들어라. 문장의 끝은 '~임,~함,~음'으로 끝나도록 해줘"
42
  },
43
  {
44
  "role": "user",
@@ -56,8 +56,8 @@ def generate_similar_sentences(base_sentence):
56
 
57
 
58
  # Streamlit 앱의 제목 및 설명
59
- st.title("성취기준 기반 학생의 특성 및 활동 평가 생성")
60
- st.write("성취기준을 입력하시면, 해당 성취기준에 기반한 학생의 특성 활동에 대한 평가를 \n\n [학생 활동, 성취 수준, 교사의 총평, 학생 역량] 4가지 요소를 조합하여 제공합니다.")
61
 
62
  # 성취기준 데이터 가져오기
63
  achievement_standards = data.achievement_standards
@@ -71,79 +71,10 @@ subject = st.selectbox("과목을 선택하세요:", subject_list)
71
 
72
  # 선택된 과목에 따른 성취기준 목록
73
  selected_standards = achievement_standards[grade_group][subject]
74
- selected_standard = st.selectbox("성취기준을 선택하세요:", selected_standards)
75
 
76
  # 선택된 성취기준을 텍스트 입력창의 기본값으로 사용
77
- achievement_standard = st.text_input("성취기준 입력:", value=selected_standard)
78
-
79
- # # "평가 생성" 버튼 클릭 시의 동작
80
- # if st.button("평가 생성"):
81
- # with st.spinner('답변 생성중...'):
82
- # result = generate_annotated_text(achievement_standard)
83
- # # 결과 출력
84
- # exec(result.replace('```', ''))
85
-
86
- # # annotated_text 결과에서 문장만 추출
87
- # result_lines = result.split('\n')
88
- # sentences = []
89
- # for line in result_lines:
90
- # # "(" 문자열이 포함된 위치를 찾아서 그 이후의 문자열만 추출
91
- # start_idx = line.find('("')
92
- # if start_idx != -1:
93
- # end_idx = line.find('",', start_idx)
94
- # sentence = line[start_idx + 2:end_idx].strip() # "(" 다음부터 "," 전까지의 문자열을 추출
95
- # sentences.append(sentence)
96
-
97
-
98
- # # 문장을 라디오 버튼으로 표시 및 선택된 문장 저장
99
- # selected_index = st.radio("문장을 선택하세요:", range(len(sentences)), format_func=lambda x: sentences[x])
100
- # st.session_state.selected_sentence = sentences[selected_index] if sentences else None
101
-
102
-
103
- # # 유사한 문장 생성 버튼 추가
104
- # if st.button("유사한 문구 생성") and st.session_state.get('selected_sentence'):
105
- # with st.spinner('문장 생성중...'):
106
- # similar_sentences = generate_similar_sentences(st.session_state.selected_sentence)
107
- # for sentence in st.session_state.similar_sentences:
108
- # st.write(sentence)
109
-
110
- # # 세션 상태 초기화
111
- # if 'selected_sentence' not in st.session_state:
112
- # st.session_state.selected_sentence = None
113
- # if 'similar_sentences' not in st.session_state:
114
- # st.session_state.similar_sentences = []
115
-
116
- # # "평가 생성" 버튼 클릭 시의 동작
117
- # if st.button("평가 생성"):
118
- # with st.spinner('답변 생성중...'):
119
- # result = generate_annotated_text(achievement_standard)
120
- # st.session_state.generated_result = result
121
- # st.session_state.selected_sentence = None # 새로운 평가 생성시 선택된 문장 초기화
122
- # exec(result.replace('```', ''))
123
-
124
- # # annotated_text 결과에서 문장만 추출
125
- # result_lines = result.split('\n')
126
- # sentences = []
127
- # for line in result_lines:
128
- # start_idx = line.find('("')
129
- # if start_idx != -1:
130
- # end_idx = line.find('",', start_idx)
131
- # sentence = line[start_idx + 2:end_idx].strip()
132
- # sentences.append(sentence)
133
-
134
- # if sentences:
135
- # st.session_state.selected_sentence = st.selectbox("문장을 선택하세요:", sentences, key="sentence_select")
136
-
137
- # # 유사한 문장 생성 버튼 추가
138
- # if st.button("유사한 문구 생성") and st.session_state.get('selected_sentence'):
139
- # with st.spinner('문장 생성중...'):
140
- # st.session_state.similar_sentences = generate_similar_sentences(st.session_state.selected_sentence)
141
-
142
- # # 생성된 결과 및 유사한 문장들 출력
143
- # if st.session_state.get('generated_result'):
144
- # exec(st.session_state.generated_result.replace('```', ''))
145
- # for sentence in st.session_state.get('similar_sentences', []):
146
- # st.write(sentence)
147
 
148
  # 세션 상태 초기화
149
  if 'generated_result' not in st.session_state:
@@ -154,7 +85,7 @@ if 'similar_sentences' not in st.session_state:
154
  st.session_state.similar_sentences = []
155
 
156
  # "평가 생성" 버튼 클릭 시의 동작
157
- if st.button("평가 생성"):
158
  with st.spinner('답변 생성중...'):
159
  result = generate_annotated_text(achievement_standard)
160
  st.session_state.generated_result = result
 
16
  messages=[
17
  {
18
  "role": "system",
19
+ "content": f"사용자의 입력 {text}는 학생의 창의적 체험활동에 대한 누가기록입니다. 누가기록을 바탕으로 학생의 개별적 특성과 성취를 강조하는 특기사항 기록을 생성하십시오. 사용자 입력을 특기사항으로 변환할 때, 문장의 끝은 '~임', '~함', '~음'과 같이 종결형 어미로 마무리합니다. 다음 입력과 출력 예제를 참고하세요. 예제: 입력: 누가기록1: '과학 실험 대회에 참여함', 누가기록2: '실험에서 독창적인 접근 방식을 사용함' 출력: '과학 실험 대회에 적극적으로 참여함. 실험에서 독창적인 접근 방식을 사용하며 문제 해결 능력을 보임. 실험 과정에서의 창의성과 주도적인 태도가 인상적임. 과학에 대한 깊은 이해와 호기심을 바탕으로 실험에 기여함.'"
20
  },
21
  {
22
  "role": "user",
 
38
  messages=[
39
  {
40
  "role": "system",
41
+ "content": f"다음은 '{base_sentence}'와 유사한 학생의 특성과 성취를 강조하는 예시 문항 10개를 만들어라. 문장의 끝은 '~임,~함,~음'으로 끝나도록 해줘"
42
  },
43
  {
44
  "role": "user",
 
56
 
57
 
58
  # Streamlit 앱의 제목 및 설명
59
+ st.title("누가기록 기반 창체 특기사항 생성")
60
+ st.write("창체 누가기록을 입력하시면, 해당 누가기록에 기반한 창체 특기사항 문구를 제안합니다.")
61
 
62
  # 성취기준 데이터 가져오기
63
  achievement_standards = data.achievement_standards
 
71
 
72
  # 선택된 과목에 따른 성취기준 목록
73
  selected_standards = achievement_standards[grade_group][subject]
74
+ selected_standard = st.selectbox("누가기록 예시를 선택하세요:", selected_standards)
75
 
76
  # 선택된 성취기준을 텍스트 입력창의 기본값으로 사용
77
+ achievement_standard = st.text_input("누가기록 입력:", value=selected_standard)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
  # 세션 상태 초기화
80
  if 'generated_result' not in st.session_state:
 
85
  st.session_state.similar_sentences = []
86
 
87
  # "평가 생성" 버튼 클릭 시의 동작
88
+ if st.button("문구 생성"):
89
  with st.spinner('답변 생성중...'):
90
  result = generate_annotated_text(achievement_standard)
91
  st.session_state.generated_result = result