Spaces:
Running
Running
import streamlit as st | |
import pandas as pd | |
import openai | |
import os | |
# OpenAI API μ€μ (νκ²½ λ³μμμ μ½μ΄μ΄) | |
openai.api_key = os.getenv("OPENAI_API_KEY") | |
# νμΌ μ λ‘λ λ° λ°μ΄ν° μ²λ¦¬ ν¨μ | |
def upload_and_process_file(): | |
uploaded_file = st.file_uploader("μ΄μ μνκΈ°λ‘λΆ νμΌ μ λ‘λ", type=['csv', 'json']) | |
if uploaded_file is not None: | |
if uploaded_file.type == 'text/csv': | |
data = pd.read_csv(uploaded_file) | |
elif uploaded_file.type == 'application/json': | |
data = pd.read_json(uploaded_file) | |
return data | |
return None | |
# μνκΈ°λ‘λΆ λ¬Έκ΅¬ μμ± ν¨μ | |
def generate_living_record(data): | |
# λ°μ΄ν°λ₯Ό λ¬Έμμ΄λ‘ λ³ν | |
data_str = str(data) | |
# OpenAI GPT λͺ¨λΈμ μ¬μ©νμ¬ λ¬Έκ΅¬ μμ± | |
response = openai.ChatCompletion.create( | |
model="gpt-3.5-turbo-16k", | |
messages=[ | |
{ | |
"role": "system", | |
"content": "νμμ μ΄μ μνκΈ°λ‘λΆ λ°μ΄ν°λ₯Ό λ°νμΌλ‘ μ¬ν΄μ μνκΈ°λ‘λΆλ₯Ό μμ±ν©λλ€." | |
}, | |
{ | |
"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 | |
# μ λ ₯ νλ μΆκ° ν¨μ | |
def add_input_fields(): | |
if 'record_data' not in st.session_state: | |
st.session_state.record_data = [] | |
class_record = st.selectbox("νκΈ μ ν", ["μ΄λ±νκ΅", "μ€νκ΅", "κ³ λ±νκ΅"], key="class") | |
grade_record = st.selectbox("νλ μ ν", ["1νλ ", "2νλ ", "3νλ ", "4νλ ", "5νλ ", "6νλ "] if class_record == "μ΄λ±νκ΅" else ["1νλ ", "2νλ ", "3νλ "], key="grade") | |
st.text_input("μνκΈ°λ‘λΆ λ΄μ© μ λ ₯", key=f'record_{len(st.session_state.record_data)}') | |
st.session_state.record_data.append((class_record, grade_record)) | |
if st.button("μ λ ₯ μΉΈ μΆκ°"): | |
add_input_fields() | |
# Streamlit μ± κ΅¬μ± | |
st.title("μνκΈ°λ‘λΆ μμ± μλΉμ€") | |
st.write("μ΄μ μνκΈ°λ‘λΆ νμΌμ μ λ‘λνκ±°λ, μ§μ μνκΈ°λ‘λΆ λ΄μ©μ μ λ ₯νμΈμ.") | |
# νμΌ μ λ‘λ κΈ°λ₯ | |
uploaded_data = upload_and_process_file() | |
# μ§μ μ λ ₯ κΈ°λ₯ | |
add_input_fields() | |
# λ°μ΄ν° μ²λ¦¬ λ° κ²°κ³Ό μΆλ ₯ | |
if uploaded_data is not None or len(st.session_state.record_data) > 0: | |
if uploaded_data is not None: | |
generated_record = generate_living_record(uploaded_data) | |
else: | |
input_data = "\n".join([f"{record[0]} {record[1]}: {st.session_state[f'record_{i}']}" for i, record in enumerate(st.session_state.record_data)]) | |
generated_record = generate_living_record(input_data) | |
st.write("μμ±λ μνκΈ°λ‘λΆ:", generated_record) | |