Spaces:
Sleeping
Sleeping
File size: 5,005 Bytes
829f184 22a5c64 829f184 22a5c64 cc9698d 2c8f446 f4de003 829f184 f4de003 829f184 f4de003 9fe6fdf f4de003 829f184 123222c 9447f48 123222c 9447f48 9fe6fdf 123222c 9447f48 123222c 9447f48 123222c f4de003 829f184 9fe6fdf 829f184 dc677ca 2c8f446 dc677ca 768f592 dc677ca 768f592 dc677ca bca9727 32170e5 bca9727 32170e5 829f184 9fe6fdf 80a9119 8b31607 32170e5 bca9727 829f184 bca9727 32170e5 bca9727 8b31607 bca9727 |
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 109 110 |
import streamlit as st
import openai
import json
from annotated_text import annotated_text
import os
import achivenment_standards as data
# OpenAI API ์ค์ (ํ๊ฒฝ ๋ณ์์์ ์ฝ์ด์ด)
openai.api_key = os.getenv("OPENAI_API_KEY")
#gpt์ด์ฉํด์ ์ถ๋ก ํจ์ ๋ง๋ค๊ธฐ
def generate_annotated_text(text):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-16k",
messages=[
{
"role": "system",
"content": f"์ฌ์ฉ์์ ์
๋ ฅ {text}๋ ํ์์ ์ฐฝ์์ ์ฒดํํ๋์ ๋ํ ๋๊ฐ๊ธฐ๋ก์
๋๋ค. ์ด ๋๊ฐ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก ํ์์ ๊ฐ๋ณ์ ํน์ฑ๊ณผ ์ฑ์ทจ๋ฅผ ๊ฐ์กฐํ๋ ํน๊ธฐ์ฌํญ ๊ธฐ๋ก์ ์์ฑํ์ญ์์ค. ์ฌ์ฉ์ ์
๋ ฅ์ ํน๊ธฐ์ฌํญ์ผ๋ก ๋ณํํ ๋, ๋ฌธ์ฅ์ ๋์ '~์', '~ํจ', '~์'๊ณผ ๊ฐ์ด ์ข
๊ฒฐํ ์ด๋ฏธ๋ก ๋ง๋ฌด๋ฆฌํฉ๋๋ค. ๋ค์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ ์์ ๋ฅผ ์ฐธ๊ณ ํ์ธ์. ์์ : ์
๋ ฅ: ๋๊ฐ๊ธฐ๋ก1: '๊ณผํ ์คํ ๋ํ์ ์ฐธ์ฌํจ', ๋๊ฐ๊ธฐ๋ก2: '์คํ์์ ๋
์ฐฝ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํจ' ์ถ๋ ฅ: '๊ณผํ ์คํ ๋ํ์ ์ ๊ทน์ ์ผ๋ก ์ฐธ์ฌํจ. ์คํ์์ ๋
์ฐฝ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ ๋ณด์. ์คํ ๊ณผ์ ์์์ ์ฐฝ์์ฑ๊ณผ ์ฃผ๋์ ์ธ ํ๋๊ฐ ์ธ์์ ์. ๊ณผํ์ ๋ํ ๊น์ ์ดํด์ ํธ๊ธฐ์ฌ์ ๋ฐํ์ผ๋ก ์คํ์ ๊ธฐ์ฌํจ.'"
},
{
"role": "user",
"content": text
}
],
temperature=1,
max_tokens=10000,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
return response['choices'][0]['message']['content']
# ์ ์ฌํ ๋ฌธ์ฅ ์์ฑ ํจ์
def generate_similar_sentences(base_sentence):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-16k",
messages=[
{
"role": "system",
"content": f"๋ค์์ '{base_sentence}'์ ์ ์ฌํ ํ์์ ํน์ฑ๊ณผ ์ฑ์ทจ๋ฅผ ๊ฐ์กฐํ๋ ์์ ๋ฌธํญ 10๊ฐ๋ฅผ ๋ง๋ค์ด๋ผ. ๋ฌธ์ฅ์ ๋์ '~์,~ํจ,~์'์ผ๋ก ๋๋๋๋ก ํด์ค"
},
{
"role": "user",
"content": base_sentence
}
],
temperature=0.7,
max_tokens=10000,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
generated_sentences = response.choices[0].message['content'].split('\n')
return [sentence.strip() for sentence in generated_sentences if sentence.strip()]
# Streamlit ์ฑ์ ์ ๋ชฉ ๋ฐ ์ค๋ช
st.title("๋๊ฐ๊ธฐ๋ก ๊ธฐ๋ฐ ์ฐฝ์ฒด ํน๊ธฐ์ฌํญ ์์ฑ")
st.write("์ฐฝ์ฒด ๋๊ฐ๊ธฐ๋ก์ ์
๋ ฅํ์๋ฉด, ํด๋น ๋๊ฐ๊ธฐ๋ก์ ๊ธฐ๋ฐํ ์ฐฝ์ฒด ํน๊ธฐ์ฌํญ ๋ฌธ๊ตฌ๋ฅผ ์ ์ํฉ๋๋ค.")
# ์ฐฝ์์ ์ฒดํํ๋ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
creative_activities = data.creative_activities
# ์ฐฝ์์ ์ฒดํํ๋ ์์ญ ๋๋กญ๋ค์ด
activity_area = st.selectbox("์ฐฝ์์ ์ฒดํํ๋ ์์ญ์ ์ ํํ์ธ์:", list(creative_activities.keys()))
# ์ ํ๋ ์์ญ์ ๋ฐ๋ฅธ ๋๊ฐ๊ธฐ๋ก ๋ชฉ๋ก
selected_records = creative_activities[activity_area]
selected_record = st.multiselect("๋๊ฐ๊ธฐ๋ก์ ์ ํํ์ธ์:", selected_records, default=[])
# ์ ํ๋ ๋๊ฐ๊ธฐ๋ก ์ฐ๊ฒฐ
concatenated_record = " ".join(selected_record)
st.text_area("์ ํ๋ ๋๊ฐ๊ธฐ๋ก:", concatenated_record, height=100)
# ์ธ์
์ํ ์ด๊ธฐํ
if 'generated_result' not in st.session_state:
st.session_state.generated_result = None
if 'selected_sentence' not in st.session_state:
st.session_state.selected_sentence = None
if 'similar_sentences' not in st.session_state:
st.session_state.similar_sentences = []
# "ํ๊ฐ ์์ฑ" ๋ฒํผ ํด๋ฆญ ์์ ๋์
if st.button("๋ฌธ๊ตฌ ์์ฑ"):
with st.spinner('๋ต๋ณ ์์ฑ์ค...'):
result = generate_annotated_text(achievement_standard)
st.session_state.generated_result = result
st.session_state.selected_sentence = None # ์๋ก์ด ํ๊ฐ ์์ฑ์ ์ ํ๋ ๋ฌธ์ฅ ์ด๊ธฐํ
st.session_state.similar_sentences = [] # ์ด์ ์ ์ฌํ ๋ฌธ์ฅ๋ค ์ด๊ธฐํ
exec(result.replace('```', ''))
# ์
๋ ํธ ๋ฐ์ค ๋ฐ ์ ์ฌํ ๋ฌธ์ฅ ์์ฑ ๋ฒํผ ์ถ๊ฐ
if st.session_state.generated_result:
# annotated_text ๊ฒฐ๊ณผ์์ ๋ฌธ์ฅ๋ง ์ถ์ถ
result_lines = st.session_state.generated_result.split('\n')
sentences = [line[start_idx + 2:line.find('",', start_idx)].strip() for line in result_lines if (start_idx := line.find('("')) != -1]
if sentences:
selected_sentence = st.selectbox("๋ฌธ์ฅ์ ์ ํํ์ธ์:", sentences, key="sentence_select")
st.session_state.selected_sentence = selected_sentence
# ์ ์ฌํ ๋ฌธ์ฅ ์์ฑ ๋ฒํผ
if st.button("์ ์ฌํ ๋ฌธ๊ตฌ ์์ฑ") and st.session_state.selected_sentence:
with st.spinner('๋ฌธ์ฅ ์์ฑ์ค...'):
st.session_state.similar_sentences = generate_similar_sentences(st.session_state.selected_sentence)
# ์ ์ฌํ ๋ฌธ์ฅ๋ค ์ถ๋ ฅ
for sentence in st.session_state.similar_sentences:
st.write(sentence) |