Spaces:
Build error
Build error
import os | |
import openai | |
import streamlit as st | |
import pandas as pd | |
from io import StringIO | |
from io import BytesIO | |
import base64 | |
# OpenAI API ์ค์ (ํ๊ฒฝ ๋ณ์์์ ์ฝ์ด์ด) | |
openai.api_key = os.getenv("OPENAI_API_KEY") # ์ค์ ์ฝ๋์์ ์ฃผ์ ํด์ | |
# ์ธ์ ์ํ ์ค์ | |
if 'result_data' not in st.session_state: | |
st.session_state.result_data = pd.DataFrame(columns=['์์', '์๋ณ์', '์์ ', '๊ฒฐ๊ณผ']) | |
# 0. ์ฌ์ฉ์ ์๋ณ | |
user_id = st.text_input("ํ๋ฒ์ด๋ ์ด๋ฆ์ ์ ๋ ฅํ์ธ์:") | |
# 1. ํ ์คํธ ์ ๋ ฅ | |
user_text = st.text_area("๋ถ์ํ ํ ์คํธ๋ฅผ ๋ถ์ฌ ๋ฃ์ผ์ธ์:") | |
# 2. ๋ฉ๋ด ์ ํ | |
menu = st.selectbox( | |
"์ํํ ์์ ์ ์ ํํ์ธ์:", | |
("์์ฝํ๊ธฐ", "ํค์๋ ์ฐพ๊ธฐ", "์ฃผ์ ์ฐพ๊ธฐ", "์ค์ฌ ๋ฌธ์ฅ ์ฐพ๊ธฐ", "๋ฌธ์ ๋ง๋ค๊ธฐ") | |
) | |
# 3. ํ ์คํธ ์ฒ๋ฆฌ ๋ฐ ๊ฒฐ๊ณผ ๋์ | |
if st.button("๋ถ์ ์คํ"): | |
task_description = f"You are a helpful assistant that {menu}." | |
user_prompt = f"Please {menu} the following text: {user_text}. only use Korean." | |
if menu == "๋ฌธ์ ๋ง๋ค๊ธฐ": | |
task_description += "After reading the provided passage, create a question to help students develop a factual understanding based on the text. Start with a multiple-choice question with 5 options. Provide the correct answer and offer an explanation for that answer. All content must be written using only Korean characters.{Question} {Choices} {Explanation}" | |
messages = [{ | |
"role": "system", | |
"content": task_description | |
}, { | |
"role": "user", | |
"content": user_prompt | |
}] | |
response = openai.ChatCompletion.create( | |
model="gpt-3.5-turbo-16k", | |
messages=messages, | |
temperature=0.7, | |
max_tokens=500 | |
) | |
processed_text = response['choices'][0]['message']['content'] | |
# ๊ฒฐ๊ณผ ๋์ | |
next_index = len(st.session_state.result_data) + 1 | |
new_row = pd.DataFrame({ | |
'์์': [next_index], | |
'์๋ณ์': [user_id], | |
'์์ ': [menu], | |
'๊ฒฐ๊ณผ': [processed_text] | |
}) | |
st.session_state.result_data = pd.concat([st.session_state.result_data, new_row], ignore_index=True) | |
# 4. ๊ฒฐ๊ณผ ํ์ | |
st.table(st.session_state.result_data) | |
# 5. ํ์ผ ์ ์ฅ (CSV, UTF-8 ์ธ์ฝ๋ฉ) | |
if st.button("๊ฒฐ๊ณผ ๋ค์ด๋ก๋(CSV)"): | |
towrite = BytesIO() | |
downloaded_file = st.session_state.result_data.to_csv(towrite, encoding='utf-8-sig', index=False) | |
towrite.seek(0) | |
b64 = base64.b64encode(towrite.read()).decode() | |
st.download_button( | |
"๊ฒฐ๊ณผ ๋ค์ด๋ก๋ (CSV)", | |
data=base64.b64decode(b64), | |
file_name='result.csv', | |
mime='text/csv' | |
) |