Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -3,7 +3,7 @@ import pandas as pd
|
|
3 |
import openai
|
4 |
import os
|
5 |
|
6 |
-
# OpenAI API 설정
|
7 |
openai.api_key = os.getenv("OPENAI_API_KEY")
|
8 |
|
9 |
# 파일 업로드 및 데이터 처리 함수
|
@@ -19,21 +19,12 @@ def upload_and_process_file():
|
|
19 |
|
20 |
# 생활기록부 문구 생성 함수
|
21 |
def generate_living_record(data):
|
22 |
-
# 데이터를 문자열로 변환
|
23 |
data_str = str(data)
|
24 |
-
|
25 |
-
# OpenAI GPT 모델을 사용하여 문구 생성
|
26 |
response = openai.ChatCompletion.create(
|
27 |
model="gpt-3.5-turbo-16k",
|
28 |
messages=[
|
29 |
-
{
|
30 |
-
|
31 |
-
"content": "학생의 이전 생활기록부 데이터를 바탕으로 올해의 생활기록부를 생성합니다."
|
32 |
-
},
|
33 |
-
{
|
34 |
-
"role": "user",
|
35 |
-
"content": data_str
|
36 |
-
}
|
37 |
],
|
38 |
temperature=0.7,
|
39 |
max_tokens=10000,
|
@@ -43,41 +34,45 @@ def generate_living_record(data):
|
|
43 |
)
|
44 |
return response.choices[0].message.content
|
45 |
|
46 |
-
# 입력 필드 추가 함수
|
47 |
-
def add_input_fields():
|
48 |
-
if 'record_data' not in st.session_state:
|
49 |
-
st.session_state.record_data = []
|
50 |
-
|
51 |
-
class_key = f"class_{len(st.session_state.record_data)}"
|
52 |
-
grade_key = f"grade_{len(st.session_state.record_data)}"
|
53 |
-
record_key = f"record_{len(st.session_state.record_data)}"
|
54 |
-
|
55 |
-
class_record = st.selectbox("학급 선택", ["초등학교", "중학교", "고등학교"], key=class_key)
|
56 |
-
grade_options = ["1학년", "2학년", "3학년", "4학년", "5학년", "6학년"] if class_record == "초등학교" else ["1학년", "2학년", "3학년"]
|
57 |
-
grade_record = st.selectbox("학년 선택", grade_options, key=grade_key)
|
58 |
-
st.text_input("생활기록부 내용 입력", key=record_key)
|
59 |
-
|
60 |
-
st.session_state.record_data.append((class_key, grade_key, record_key))
|
61 |
-
|
62 |
-
if st.button("입력 칸 추가", key=f"add_button_{len(st.session_state.record_data)}"):
|
63 |
-
add_input_fields()
|
64 |
-
|
65 |
# Streamlit 앱 구성
|
66 |
st.title("생활기록부 생성 서비스")
|
67 |
st.write("이전 생활기록부 파일을 업로드하거나, 직접 생활기록부 내용을 입력하세요.")
|
68 |
|
|
|
|
|
|
|
|
|
69 |
# 파일 업로드 기능
|
70 |
uploaded_data = upload_and_process_file()
|
71 |
|
72 |
-
#
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
# 데이터 처리 및 결과 출력
|
76 |
if st.button("생성"):
|
|
|
77 |
if uploaded_data is not None:
|
78 |
generated_record = generate_living_record(uploaded_data)
|
79 |
else:
|
80 |
-
input_data = "\n".join([f"{st.session_state[record[0]]} {st.session_state[record[1]]}: {st.session_state[record[2]]}" for record in st.session_state.record_data])
|
81 |
generated_record = generate_living_record(input_data)
|
82 |
-
|
83 |
st.write("생성된 생활기록부:", generated_record)
|
|
|
3 |
import openai
|
4 |
import os
|
5 |
|
6 |
+
# OpenAI API 설정
|
7 |
openai.api_key = os.getenv("OPENAI_API_KEY")
|
8 |
|
9 |
# 파일 업로드 및 데이터 처리 함수
|
|
|
19 |
|
20 |
# 생활기록부 문구 생성 함수
|
21 |
def generate_living_record(data):
|
|
|
22 |
data_str = str(data)
|
|
|
|
|
23 |
response = openai.ChatCompletion.create(
|
24 |
model="gpt-3.5-turbo-16k",
|
25 |
messages=[
|
26 |
+
{"role": "system", "content": "학생의 이전 생활기록부 데이터를 바탕으로 올해의 생활기록부를 생성합니다."},
|
27 |
+
{"role": "user", "content": data_str}
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
],
|
29 |
temperature=0.7,
|
30 |
max_tokens=10000,
|
|
|
34 |
)
|
35 |
return response.choices[0].message.content
|
36 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
# Streamlit 앱 구성
|
38 |
st.title("생활기록부 생성 서비스")
|
39 |
st.write("이전 생활기록부 파일을 업로드하거나, 직접 생활기록부 내용을 입력하세요.")
|
40 |
|
41 |
+
# 세션 상태 초기화
|
42 |
+
if 'record_data' not in st.session_state:
|
43 |
+
st.session_state.record_data = []
|
44 |
+
|
45 |
# 파일 업로드 기능
|
46 |
uploaded_data = upload_and_process_file()
|
47 |
|
48 |
+
# 입력 필드 동적 생성
|
49 |
+
for i in range(len(st.session_state.record_data) + 1):
|
50 |
+
class_key = f"class_{i}"
|
51 |
+
grade_key = f"grade_{i}"
|
52 |
+
record_key = f"record_{i}"
|
53 |
+
|
54 |
+
if class_key not in st.session_state:
|
55 |
+
st.session_state[class_key] = "초등학교"
|
56 |
+
if grade_key not in st.session_state:
|
57 |
+
st.session_state[grade_key] = "1학년"
|
58 |
+
if record_key not in st.session_state:
|
59 |
+
st.session_state[record_key] = ""
|
60 |
+
|
61 |
+
class_record = st.selectbox("학급 선택", ["초등학교", "중학교", "고등학교"], key=class_key, index=["초등학교", "중학교", "고등학교"].index(st.session_state[class_key]))
|
62 |
+
grade_options = ["1학년", "2학년", "3학년", "4학년", "5학년", "6학년"] if class_record == "초등학교" else ["1학년", "2학년", "3학년"]
|
63 |
+
grade_record = st.selectbox("학년 선택", grade_options, key=grade_key, index=grade_options.index(st.session_state[grade_key]))
|
64 |
+
st.text_input("생활기록부 내용 입력", key=record_key, value=st.session_state[record_key])
|
65 |
+
|
66 |
+
st.session_state.record_data.append((class_key, grade_key, record_key))
|
67 |
+
|
68 |
+
if st.button("입력 칸 추가"):
|
69 |
+
st.session_state.record_data.append(("", "", ""))
|
70 |
|
71 |
# 데이터 처리 및 결과 출력
|
72 |
if st.button("생성"):
|
73 |
+
input_data = "\n".join([f"{st.session_state[record[0]]} {st.session_state[record[1]]}: {st.session_state[record[2]]}" for record in st.session_state.record_data if st.session_state[record[2]]])
|
74 |
if uploaded_data is not None:
|
75 |
generated_record = generate_living_record(uploaded_data)
|
76 |
else:
|
|
|
77 |
generated_record = generate_living_record(input_data)
|
|
|
78 |
st.write("생성된 생활기록부:", generated_record)
|