Spaces:
Sleeping
Sleeping
File size: 4,906 Bytes
829f184 6b3d94e cc9698d 697874f f4de003 697874f 91a314b 829f184 88c0d7a 10bdde0 2293dbc 10bdde0 697874f f6ed87b 10bdde0 697874f 2293dbc 9447f48 31fdec8 123222c f6ed87b 9447f48 123222c 9447f48 91a314b 768f592 697874f 91a314b 10bdde0 88c0d7a 829f184 697874f 4e0dc16 697874f 611b2bc 697874f 65e42f5 4e0dc16 65e42f5 4e0dc16 65e42f5 10bdde0 65e42f5 697874f 433862c 8d8ecfd 433862c fba47b5 433862c 10bdde0 7f63595 0b3b25a b3e883e 06d682a 75f1f3d 5dec5f3 90f0234 10bdde0 81305b7 bf7719a 81305b7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
import streamlit as st
import openai
import os
import instructions
# OpenAI API ์ค์
openai.api_key = os.getenv("OPENAI_API_KEY")
st.set_page_config(layout="wide")
def generate_living_record(data, school_level, subjects=None, major=None):
if school_level == "์คยท๊ณ ๋ฑํ๊ต":
data_str = f"๊ต๊ณผ๋ชฉ: {', '.join(subjects) if subjects else ''}\n"
data_str += f"ํฌ๋ง์ ๊ณต: {major if major else ''}\n\n"
data_str += data
instruction_text = instructions.highschool_instruction
else:
data_str = data
instruction_text = instructions.instruction
response = openai.ChatCompletion.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": instruction_text},
{"role": "user", "content": data_str}
],
temperature=0.7,
max_tokens=10000,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
return response.choices[0].message.content
# Streamlit ์ฑ ๊ตฌ์ฑ
st.title("์ํ๊ธฐ๋ก๋ถ ์์ฑ ์๋น์ค")
st.write("์ง์ ๊ธฐ๋ก์ ์
๋ ฅํ๊ฑฐ๋ ํค์๋๋ฅผ ์ ํํ์ฌ ์ํ๊ธฐ๋ก๋ถ ์์ฑ์ ํ์ํ ๊ด์ฐฐ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.")
st.write("GPT๋ ์ค์ ํ ์ ์์ต๋๋ค. ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์๋๋ค๋ฉด ์์ฑ ๋ฒํผ์ ๋ค์ ๋๋ฌ๋ณด์ธ์.")
# ํ๊ต๊ธ ์ ํ
school_level = st.radio("ํ๊ต๊ธ ์ ํ", ["์ด๋ฑํ๊ต", "์คยท๊ณ ๋ฑํ๊ต"])
# ์คยท๊ณ ๋ฑํ๊ต ์ ํ ์ ์ถ๊ฐ ์
๋ ฅ ํ๋
subjects = None
major = None
if school_level == "์คยท๊ณ ๋ฑํ๊ต":
subject_options = ["๊ตญ์ด", "์ํ", "์์ด", "์ฌํ", "๊ณผํ", "์์
", "๋ฏธ์ ", "์ฒด์ก",
"์ ๋ณด", "๊ธฐ์ ๊ฐ์ ", "์ 2์ธ๊ตญ์ด", "ํ๋ฌธ"]
subjects = st.multiselect("๊ต๊ณผ๋ชฉ ์ ํ", subject_options)
major = st.text_input("ํฌ๋ง์ ๊ณต")
# ํค์๋ ๋ชฉ๋ก
attitude_keywords = [
"์ง์ค๋ ฅ", "๊ณผ์ ์ดํด", "๋ฐํ", "๋ฌธ์ ํด๊ฒฐ๋ ฅ", "๊ณผ์ ์ํ", "๊ด์ฐฐ๋ ฅ",
"ํ๊ตฌ๋ ฅ", "์๊ธฐ ์๊ฐ ํํ", "๋
ผ๋ฆฌ์ ์ฌ๊ณ ๋ ฅ", "์ด๋์ ๊ฒฝ", "ํ๋์ฌ",
"๋ฆฌ๋์ฝ", "๋
ผ๋ฆฌ์ ๋นํ๋ ฅ", "๊ต๊ณผ ํ์ต ์ฑ์ทจ๋", "๋ชฉํ์์", "๊ธฐ๋ณธ ํ์ต",
"๋์ ๊ณผ์ ", "๋ฏธ์ ๊ฐ๊ฐ", "์์ ์ ์ฌ๋ฅ", "์์
์ ์ฌ๋ฅ", "ํธ๊ธฐ์ฌ",
"์ง๋ฌธ", "๋ชจ๋ ํ๋"
]
relationship_keywords = [
"ํ๋์ฑ", "์น์ ํจ", "๊ณต๊ฐ ๋ฅ๋ ฅ", "์ปค๋ฎค๋์ผ์ด์
", "๋ฆฌ๋์ญ", "๊ฒฝ์", "ํ๋ ฅ",
"์ธ์ ์๊ตฌ", "์์ฌ์ํต ๋ฌธ์ ", "์ ๋ขฐ", "์ํธ์กด์ค", "๊ณต์ ", "์ดํด์ฌ", "์น๋ฐํจ",
"์ง์งํจ", "๋์", "๋ฐฐ๋ ค", "๊ฑฐ๋ถ", "๋น๋ฐ", "์๊ธฐ์ค์ฌ์ ", "์ธ๋ก์", "๋น๋",
"๋ฌด๊ด์ฌ", "์งํฌ", "๊ฐ๋ฑ", "๊ต๋ฅ ํ๋ฐํจ", "์ํต ์ํจ", "๋ค์ ํจ"
]
personality_keywords = [
"์์ ๊ฐ", "์ฑ
์๊ฐ", "ํฌ์ฉ๋ ฅ", "๊ธ์ ์ ํ๋", "์ ์ฐ์ฑ", "๊ฐ์์ฑ", "์๋ฏผํจ",
"ํ๋ฐํจ", "์ฐจ๋ถํจ", "์ ๊ทน์ ", "์๊ทน์ ", "์์ค์", "๊ฒธ์ํจ", "์์์ ",
"๋ฌด๊ธฐ๋ ฅ", "์ฑ์ค", "์ฌ์ธํจ", "์ฐ๋งํจ", "์กฐ๊ธํจ", "๊ฑฐ์น ๋ค", "๊ธ์ ์ ",
"์น์ ํจ", "๋ถ๋
ธ", "์ธ๋ด์ฌ", "๋
๋ฆฝ์ ", "์์ฒ", "์จํํจ", "๋ฐ๋ปํจ",
"๋ฏธ์", "์ฌ์น", "์ ๋จธ", "์ต์ธํจ", "์ฐ์ธํจ", "๋ถ์ ์ "
]
# ์ปฌ๋ผ ์์ฑ
col1, col2 = st.columns(2)
with col1:
for i in range(5):
record_key = f"record_{i}"
if record_key not in st.session_state:
st.session_state[record_key] = ""
with st.expander(f"์
๋ ฅ์ฐฝ {i+1}", expanded=False):
user_input = st.text_area("์ํ๊ธฐ๋ก๋ถ ๋ด์ฉ ์
๋ ฅ", key=record_key, height=150, value=st.session_state[record_key])
current_bytes = len(user_input.encode('utf-8'))
st.caption(f"ํ์ฌ ์
๋ ฅ์ฐฝ ๋ฐ์ดํธ ์: {current_bytes}")
with col2:
st.write("ํค์๋ ์ ํ")
selected_attitude = st.multiselect("ํ์ตํ๋", attitude_keywords)
selected_relationship = st.multiselect("๊ต์ฐ๊ด๊ณ", relationship_keywords)
selected_personality = st.multiselect("์ฑ๊ฒฉ", personality_keywords)
if st.button("์์ฑ"):
with st.spinner('์์ฑ์ค...'):
input_data = "\n".join([st.session_state[f'record_{i}'] for i in range(5) if st.session_state[f'record_{i}']])
keyword_data = " ".join(selected_attitude + selected_relationship + selected_personality)
full_data = input_data + "\n" + keyword_data
generated_record = generate_living_record(full_data, school_level, subjects, major)
st.session_state["generated_result"] = generated_record
result_text = st.text_area("์์ฑ๋ ๊ฒฐ๊ณผ", key="generated_result", value=st.session_state.get("generated_result", ""), height=500)
if "generated_result" in st.session_state:
result_bytes = len(st.session_state["generated_result"].encode('utf-8'))
st.caption(f"์์ฑ๋ ๊ฒฐ๊ณผ ๋ฐ์ดํธ ์: {result_bytes}") |