Spaces:
Sleeping
Sleeping
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) |