JUNGU's picture
Update app.py
1d54b79 verified
raw
history blame
2.63 kB
import streamlit as st
import pandas as pd
import openai
import os
import instructions
# 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)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-16k",
messages=[
{"role": "system",
"content": instructions.instruction
},
{"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("์ด์ „ ์ƒํ™œ๊ธฐ๋ก๋ถ€ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜, ์ง์ ‘ ์ƒํ™œ๊ธฐ๋ก๋ถ€ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•˜์„ธ์š”.")
# ํŒŒ์ผ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ
uploaded_data = upload_and_process_file()
# ์ž…๋ ฅ ํ•„๋“œ ๋™์  ์ƒ์„ฑ ๋ฐ ๋ฐ์ดํ„ฐ ์ž๋™ ์ฑ„์šฐ๊ธฐ
for i in range(6):
record_key = f"record_{i}"
# ์—…๋กœ๋“œ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ณ  ํ•ด๋‹น ์ธ๋ฑ์Šค์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
if uploaded_data is not None and i < len(uploaded_data):
data_value = uploaded_data.iloc[i]
# ๋ฐ์ดํ„ฐ๊ฐ€ NaN์ด๋ฉด ๋นˆ ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ
if pd.isna(data_value):
st.session_state[record_key] = ""
else:
st.session_state[record_key] = data_value.to_string(index=False)
else:
if record_key not in st.session_state:
st.session_state[record_key] = ""
with st.expander(f"์ž…๋ ฅ์ฐฝ {i+1}", expanded=False):
st.text_area("์ƒํ™œ๊ธฐ๋ก๋ถ€ ๋‚ด์šฉ ์ž…๋ ฅ", key=record_key, height=150, value=st.session_state[record_key])
# ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
if st.button("์ƒ์„ฑ"):
input_data = "\n".join([st.session_state[f'record_{i}'] for i in range(6) if st.session_state[f'record_{i}']])
if uploaded_data is not None:
generated_record = generate_living_record(uploaded_data)
else:
generated_record = generate_living_record(input_data)
st.write("์ƒ์„ฑ๋œ ์ƒํ™œ๊ธฐ๋ก๋ถ€:", generated_record)