File size: 2,661 Bytes
d292e51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3dfc29a
d292e51
 
 
 
 
 
 
 
 
 
93a191c
d292e51
 
93a191c
d292e51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f44cd1a
d292e51
 
 
 
 
 
 
 
 
 
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
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'
    )