JUNGU commited on
Commit
e90a597
·
verified ·
1 Parent(s): 3b94099

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -35
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
- "role": "system",
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
- add_input_fields()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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)