Spaces:
Sleeping
Sleeping
File size: 4,733 Bytes
829f184 6b3d94e 829f184 cc9698d 6085307 2c8f446 f4de003 829f184 f4de003 829f184 f4de003 247875b f4de003 829f184 0a62439 829f184 123222c 9447f48 123222c 9447f48 32a602e 123222c 9447f48 123222c 9447f48 123222c f4de003 829f184 9fe6fdf 829f184 dc677ca 2c8f446 dc677ca 768f592 dc677ca 768f592 dc677ca f40a517 dc677ca bca9727 32170e5 bca9727 32170e5 829f184 9fe6fdf 80a9119 78ca977 8b31607 32170e5 bca9727 829f184 bca9727 6085307 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 |
import streamlit as st
import openai
import json
import os
import record_examples 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": "์ฌ์ฉ์์ ์
๋ ฅ์ ํ์์ ์ฐฝ์์ ์ฒดํํ๋์ ๋ํ ๋๊ฐ๊ธฐ๋ก์
๋๋ค. ์ด ๋๊ฐ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก ํ์์ ๊ฐ๋ณ์ ํน์ฑ๊ณผ ์ฑ์ทจ๋ฅผ ๊ฐ์กฐํ๋ ํน๊ธฐ์ฌํญ ๊ธฐ๋ก์ ์์ฑํ์ญ์์ค. ์ฌ์ฉ์ ์
๋ ฅ์ ํน๊ธฐ์ฌํญ์ผ๋ก ๋ณํํ ๋, ๋ฐ๋์ ๋ฌธ์ฅ์ ๋์ '~์', '~ํจ', '~์'๊ณผ ๊ฐ์ด ์ข
๊ฒฐํ ์ด๋ฏธ๋ก ๋ง๋ฌด๋ฆฌํฉ๋๋ค. ๋ค์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ ์์ ๋ฅผ ์ฐธ๊ณ ํ์ธ์. ์์ : ์
๋ ฅ: ๋๊ฐ๊ธฐ๋ก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(concatenated_record)
st.session_state.generated_result = result
st.session_state.selected_sentence = None # ์๋ก์ด ํ๊ฐ ์์ฑ์ ์ ํ๋ ๋ฌธ์ฅ ์ด๊ธฐํ
st.session_state.similar_sentences = [] # ์ด์ ์ ์ฌํ ๋ฌธ์ฅ๋ค ์ด๊ธฐํ
# ์
๋ ํธ ๋ฐ์ค ๋ฐ ์ ์ฌํ ๋ฌธ์ฅ ์์ฑ ๋ฒํผ ์ถ๊ฐ
if st.session_state.generated_result:
sentences = st.session_state.generated_result.split('\n')
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) |