Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -5,6 +5,98 @@ import re
|
|
| 5 |
from huggingface_hub import InferenceClient
|
| 6 |
from fpdf import FPDF
|
| 7 |
from datetime import datetime
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
|
| 9 |
def create_client(model_name):
|
| 10 |
return InferenceClient(model_name, token=os.getenv("HF_TOKEN"))
|
|
@@ -41,6 +133,22 @@ def generate_blog_post(category, style, topic, references1, references2, referen
|
|
| 41 |
formatted_text = modified_text.replace('\n', '\n\n')
|
| 42 |
return formatted_text
|
| 43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
def get_title_prompt(category):
|
| 45 |
if (category == "๊ณ ๊ฐ๋ฐ์ํ"):
|
| 46 |
return """
|
|
@@ -143,8 +251,7 @@ def get_style_prompt(style):
|
|
| 143 |
- ์น๊ทผํ๊ณ ๊ฒฉ๋ คํ๋ ํค์ผ๋ก ๋ง๋ฌด๋ฆฌ
|
| 144 |
- ๋ค์ ํฌ์คํ
์ ๋ํ ๊ธฐ๋๊ฐ ์ ๋ฐ
|
| 145 |
์ฃผ์์ฌํญ: ๋๋ฌด ๊ฐ๋ฒผ์ด ํค์ ์ง์ํ๊ณ , ์ฃผ์ ์ ์ค์์ฑ์ ํด์น์ง ์๋ ์ ์์ ์น๊ทผํจ ์ ์ง
|
| 146 |
-
์์:
|
| 147 |
-
"์ฌ๋ฌ๋ถ, ์ค๋ ํ๋ฃจ๋ ์ด๋ ์
จ๋์? ๐ ์ ๋ ์ค๋ ์ฌ๋ฏธ์๋ ๊ฒฝํ์ ํ์ด์. ๋ฐ๋ก '๋ฏธ๋๋ฉ ๋ผ์ดํ'์ ๋์ ํด๋ณธ ๊ฑด๋ฐ์. ์ฒ์์๋ ์ข ๋ง๋งํ์ง๋ง, ์๊ฐ๋ณด๋ค ์ฆ๊ฑฐ์ด ๊ฒฝํ์ด์์ด์! ์ฌ๋ฌ๋ถ๋ ํ๋ฒ ๋ฐ๋ผํด๋ณด์๊ฒ ์ด์? ์ ๊ฐ ์๊ฒ ๋ ๊ฟํ๋ค์ ํ๋ํ๋ ์๋ ค๋๋ฆด๊ฒ์.
|
| 148 |
""",
|
| 149 |
"์ผ๋ฐ": """
|
| 150 |
#์ผ๋ฐ์ ์ธ ๋ธ๋ก๊ทธ ํฌ์คํ
์คํ์ผ ๊ฐ์ด๋
|
|
@@ -174,16 +281,15 @@ def get_style_prompt(style):
|
|
| 174 |
6. ๋ง๋ฌด๋ฆฌ
|
| 175 |
- ์ฃผ์ ๋ด์ฉ ๊ฐ๋จํ ์์ฝ
|
| 176 |
- ์ถ๊ฐ ์ ๋ณด์ ๋ํ ์๋ด ์ ๊ณต
|
| 177 |
-
|
| 178 |
-
์์:
|
| 179 |
-
"์ต๊ทผ ํ๊ฒฝ ๋ฌธ์ ๊ฐ ๋๋๋๋ฉด์ '์ ๋ก ์จ์ด์คํธ' ๋ผ์ดํ์คํ์ผ์ ๋ํ ๊ด์ฌ์ด ๋์์ง๊ณ ์์ต๋๋ค. ์ ๋ก ์จ์ด์คํธ๋ ์ผ์์ํ์์ ๋ฐ์ํ๋ ์ฐ๋ ๊ธฐ๋ฅผ ์ต์ํํ๋ ์ํ ๋ฐฉ์์ ๋งํฉ๋๋ค. ์ด ๊ธ์์๋ ์ ๋ก ์จ์ด์คํธ์ ๊ฐ๋
, ์ค์ฒ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ํจ๊ณผ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ์ ๋ก ์จ์ด์คํธ์ ์ ์๋ถํฐ ์ดํด๋ณด๋ฉด...
|
| 180 |
""",
|
| 181 |
"์ ๋ฌธ์ ์ธ": """
|
| 182 |
#์ ๋ฌธ์ ์ธ ๋ธ๋ก๊ทธ ํฌ์คํ
์คํ์ผ ๊ฐ์ด๋
|
| 183 |
|
| 184 |
1. ํค๊ณผ ๊ตฌ์กฐ
|
| 185 |
- ๊ณต์์ ์ด๊ณ ํ์ ์ ์ธ ํค ์ฌ์ฉ
|
| 186 |
-
- ๊ฐ๊ด์ ์ด๊ณ ๋ถ์์ ์ธ ์ ๊ทผ ์ ์ง
|
| 187 |
- ๋ช
ํํ ์๋ก , ๋ณธ๋ก , ๊ฒฐ๋ก ๊ตฌ์กฐ
|
| 188 |
- ์ฒด๊ณ์ ์ธ ๋
ผ์ ์ ๊ฐ
|
| 189 |
- ์ธ๋ถ ์น์
์ ์ํ ๋ช
ํํ ์์ ๋ชฉ ์ฌ์ฉ
|
|
@@ -208,9 +314,8 @@ def get_style_prompt(style):
|
|
| 208 |
5. ๋ง๋ฌด๋ฆฌ
|
| 209 |
- ํต์ฌ ๋
ผ์ ์ฌ๊ฐ์กฐ
|
| 210 |
- ํฅํ ์ฐ๊ตฌ ๋ฐฉํฅ์ด๋ ์ค๋ฌด์ ํจ์ ์ ์
|
| 211 |
-
|
| 212 |
-
์์:
|
| 213 |
-
"๋ณธ ์ฐ๊ตฌ์์๋ ์ธ๊ณต์ง๋ฅ(AI)์ ์ค๋ฆฌ์ ํจ์์ ๋ํด ๊ณ ์ฐฐํ๋ค. ํนํ, ์์จ์ฃผํ ์๋์ฐจ์ ์์ฌ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ฐ์ํ ์ ์๋ ์ค๋ฆฌ์ ๋๋ ๋ง์ ์ด์ ์ ๋ง์ถ๋ค. Bonnefon et al. (2016)์ ์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด, ์์จ์ฃผํ ์ฐจ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ์ง๋ฉดํ ์ ์๋ ์ค๋ฆฌ์ ์ ํ์ ๋ณต์ก์ฑ์ด ์ง์ ๋ ๋ฐ ์๋ค. ๋ณธ๊ณ ์์๋ ์ด๋ฌํ ์ค๋ฆฌ์ ๋๋ ๋ง๋ฅผ ์ธ ๊ฐ์ง ์ฃผ์ ๊ด์ ์์ ๋ถ์ํ๋ค: 1) ๊ณต๋ฆฌ์ฃผ์์ ์ ๊ทผ, 2) ์๋ฌด๋ก ์ ์ ๊ทผ, 3) ๋ ์ค๋ฆฌ์ ์ ๊ทผ. ๊ฐ ์ ๊ทผ๋ฒ์ ์ฅ๋จ์ ์ ๋น๊ต ๋ถ์ํ๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก ์์จ์ฃผํ ์ฐจ๋์ ์ค๋ฆฌ์ ์์ฌ๊ฒฐ์ ํ๋ ์์ํฌ๋ฅผ ์ ์ํ๊ณ ์ ํ๋ค...
|
| 214 |
"""
|
| 215 |
}
|
| 216 |
return prompts.get(style, "ํฌ์คํ
์คํ์ผ ํ๋กฌํํธ")
|
|
@@ -307,6 +412,17 @@ with gr.Blocks() as demo:
|
|
| 307 |
references2 = gr.Textbox(label="์ฐธ๊ณ ๊ธ 2", placeholder="์ฐธ๊ณ ํ ๊ธ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ผ์ธ์", lines=10, visible=True)
|
| 308 |
references3 = gr.Textbox(label="์ฐธ๊ณ ๊ธ 3", placeholder="์ฐธ๊ณ ํ ๊ธ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ผ์ธ์", lines=10, visible=True)
|
| 309 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 310 |
gr.Markdown("---\n\n")
|
| 311 |
|
| 312 |
gr.Markdown("### 5๋จ๊ณ: ๋ธ๋ก๊ทธ ์ ๋ชฉ์ ์
๋ ฅํ์ธ์", elem_id="step-title")
|
|
|
|
| 5 |
from huggingface_hub import InferenceClient
|
| 6 |
from fpdf import FPDF
|
| 7 |
from datetime import datetime
|
| 8 |
+
import requests
|
| 9 |
+
from bs4 import BeautifulSoup
|
| 10 |
+
from requests.adapters import HTTPAdapter
|
| 11 |
+
from requests.packages.urllib3.util.retry import Retry
|
| 12 |
+
import time
|
| 13 |
+
|
| 14 |
+
def setup_session():
|
| 15 |
+
try:
|
| 16 |
+
session = requests.Session()
|
| 17 |
+
retries = Retry(total=5, backoff_factor=1, status_forcelist=[502, 503, 504])
|
| 18 |
+
session.mount('https://', HTTPAdapter(max_retries=retries))
|
| 19 |
+
return session
|
| 20 |
+
except Exception as e:
|
| 21 |
+
return None
|
| 22 |
+
|
| 23 |
+
def generate_naver_search_url(query):
|
| 24 |
+
base_url = "https://search.naver.com/search.naver?"
|
| 25 |
+
params = {"ssc": "tab.blog.all", "sm": "tab_jum", "query": query}
|
| 26 |
+
url = base_url + "&".join(f"{key}={value}" for key, value in params.items())
|
| 27 |
+
return url
|
| 28 |
+
|
| 29 |
+
def crawl_blog_content(url, session):
|
| 30 |
+
try:
|
| 31 |
+
headers = {
|
| 32 |
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
|
| 33 |
+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
|
| 34 |
+
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
|
| 35 |
+
"Accept-Encoding": "gzip, deflate, br",
|
| 36 |
+
"Connection": "keep-alive",
|
| 37 |
+
"Referer": "https://search.naver.com/search.naver",
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
delay = random.uniform(1, 2)
|
| 41 |
+
time.sleep(delay)
|
| 42 |
+
|
| 43 |
+
response = session.get(url, headers=headers)
|
| 44 |
+
if response.status_code != 200:
|
| 45 |
+
return ""
|
| 46 |
+
|
| 47 |
+
soup = BeautifulSoup(response.content, "html.parser")
|
| 48 |
+
content = soup.find("div", attrs={'class': 'se-main-container'})
|
| 49 |
+
|
| 50 |
+
if content:
|
| 51 |
+
return clean_text(content.get_text())
|
| 52 |
+
else:
|
| 53 |
+
return ""
|
| 54 |
+
except Exception as e:
|
| 55 |
+
return ""
|
| 56 |
+
|
| 57 |
+
def crawl_naver_search_results(url, session):
|
| 58 |
+
try:
|
| 59 |
+
headers = {
|
| 60 |
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
|
| 61 |
+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
|
| 62 |
+
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7",
|
| 63 |
+
"Accept-Encoding": "gzip, deflate, br",
|
| 64 |
+
"Connection": "keep-alive",
|
| 65 |
+
"Referer": "https://search.naver.com/search.naver",
|
| 66 |
+
}
|
| 67 |
+
response = session.get(url, headers=headers)
|
| 68 |
+
if response.status_code != 200:
|
| 69 |
+
return []
|
| 70 |
+
|
| 71 |
+
soup = BeautifulSoup(response.content, "html.parser")
|
| 72 |
+
results = []
|
| 73 |
+
count = 0
|
| 74 |
+
for li in soup.find_all("li", class_=re.compile("bx.*")):
|
| 75 |
+
if count >= 10:
|
| 76 |
+
break
|
| 77 |
+
for div in li.find_all("div", class_="detail_box"):
|
| 78 |
+
for div2 in div.find_all("div", class_="title_area"):
|
| 79 |
+
title = div2.text.strip()
|
| 80 |
+
for a in div2.find_all("a", href=True):
|
| 81 |
+
link = a["href"]
|
| 82 |
+
if "blog.naver" in link:
|
| 83 |
+
link = link.replace("https://", "https://m.")
|
| 84 |
+
results.append({"์ ๋ชฉ": title, "๋งํฌ": link})
|
| 85 |
+
count += 1
|
| 86 |
+
if count >= 10:
|
| 87 |
+
break
|
| 88 |
+
if count >= 10:
|
| 89 |
+
break
|
| 90 |
+
if count >= 10:
|
| 91 |
+
break
|
| 92 |
+
|
| 93 |
+
return results
|
| 94 |
+
except Exception as e:
|
| 95 |
+
return []
|
| 96 |
+
|
| 97 |
+
def clean_text(text):
|
| 98 |
+
text = re.sub(r'\s+', ' ', text).strip()
|
| 99 |
+
return text
|
| 100 |
|
| 101 |
def create_client(model_name):
|
| 102 |
return InferenceClient(model_name, token=os.getenv("HF_TOKEN"))
|
|
|
|
| 133 |
formatted_text = modified_text.replace('\n', '\n\n')
|
| 134 |
return formatted_text
|
| 135 |
|
| 136 |
+
def fetch_references(topic):
|
| 137 |
+
search_url = generate_naver_search_url(topic)
|
| 138 |
+
session = setup_session()
|
| 139 |
+
if session is None:
|
| 140 |
+
return "Failed to set up session.", "", "", ""
|
| 141 |
+
results = crawl_naver_search_results(search_url, session)
|
| 142 |
+
if not results:
|
| 143 |
+
return "No results found.", "", "", ""
|
| 144 |
+
|
| 145 |
+
selected_results = random.sample(results, 3)
|
| 146 |
+
references1_content = f"์ ๋ชฉ: {selected_results[0]['์ ๋ชฉ']}\n๋ด์ฉ: {crawl_blog_content(selected_results[0]['๋งํฌ'], session)}"
|
| 147 |
+
references2_content = f"์ ๋ชฉ: {selected_results[1]['์ ๋ชฉ']}\n๋ด์ฉ: {crawl_blog_content(selected_results[1]['๋งํฌ'], session)}"
|
| 148 |
+
references3_content = f"์ ๋ชฉ: {selected_results[2]['์ ๋ชฉ']}\n๋ด์ฉ: {crawl_blog_content(selected_results[2]['๋งํฌ'], session)}"
|
| 149 |
+
|
| 150 |
+
return "์ฐธ๊ณ ๊ธ ์์ฑ ์๋ฃ", references1_content, references2_content, references3_content
|
| 151 |
+
|
| 152 |
def get_title_prompt(category):
|
| 153 |
if (category == "๊ณ ๊ฐ๋ฐ์ํ"):
|
| 154 |
return """
|
|
|
|
| 251 |
- ์น๊ทผํ๊ณ ๊ฒฉ๋ คํ๋ ํค์ผ๋ก ๋ง๋ฌด๋ฆฌ
|
| 252 |
- ๋ค์ ํฌ์คํ
์ ๋ํ ๊ธฐ๋๊ฐ ์ ๋ฐ
|
| 253 |
์ฃผ์์ฌํญ: ๋๋ฌด ๊ฐ๋ฒผ์ด ํค์ ์ง์ํ๊ณ , ์ฃผ์ ์ ์ค์์ฑ์ ํด์น์ง ์๋ ์ ์์ ์น๊ทผํจ ์ ์ง
|
| 254 |
+
์์: "์ฌ๋ฌ๋ถ, ์ค๋ ํ๋ฃจ๋ ์ด๋ ์
จ๋์? ๐ ์ ๋ ์ค๋ ์ฌ๋ฏธ์๋ ๊ฒฝํ์ ํ์ด์. ๋ฐ๋ก '๋ฏธ๋๋ฉ ๋ผ์ดํ'์ ๋์ ํด๋ณธ ๊ฑด๋ฐ์. ์ฒ์์๋ ์ข ๋ง๋งํ์ง๋ง, ์๊ฐ๋ณด๋ค ์ฆ๊ฑฐ์ด ๊ฒฝํ์ด์์ด์! ์ฌ๋ฌ๋ถ๋ ํ๋ฒ ๋ฐ๋ผํด๋ณด์๊ฒ ์ด์? ์ ๊ฐ ์๊ฒ ๋ ๊ฟํ๋ค์ ํ๋ํ๋ ์๋ ค๋๋ฆด๊ฒ์.
|
|
|
|
| 255 |
""",
|
| 256 |
"์ผ๋ฐ": """
|
| 257 |
#์ผ๋ฐ์ ์ธ ๋ธ๋ก๊ทธ ํฌ์คํ
์คํ์ผ ๊ฐ์ด๋
|
|
|
|
| 281 |
6. ๋ง๋ฌด๋ฆฌ
|
| 282 |
- ์ฃผ์ ๋ด์ฉ ๊ฐ๋จํ ์์ฝ
|
| 283 |
- ์ถ๊ฐ ์ ๋ณด์ ๋ํ ์๋ด ์ ๊ณต
|
| 284 |
+
์ฃผ์์ฌํญ: ๋๋ฌด ๋ฑ๋ฑํ๊ฑฐ๋ ์ง๋ฃจํ์ง ์๋๋ก ๊ท ํ ์ ์ง
|
| 285 |
+
์์: "์ต๊ทผ ํ๊ฒฝ ๋ฌธ์ ๊ฐ ๋๋๋๋ฉด์ '์ ๋ก ์จ์ด์คํธ' ๋ผ์ดํ์คํ์ผ์ ๋ํ ๊ด์ฌ์ด ๋์์ง๊ณ ์์ต๋๋ค. ์ ๋ก ์จ์ด์คํธ๋ ์ผ์์ํ์์ ๋ฐ์ํ๋ ์ฐ๋ ๊ธฐ๋ฅผ ์ต์ํํ๋ ์ํ ๋ฐฉ์์ ๋งํฉ๋๋ค. ์ด ๊ธ์์๋ ์ ๋ก ์จ์ด์คํธ์ ๊ฐ๋
, ์ค์ฒ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ํจ๊ณผ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ์ ๋ก ์จ์ด์คํธ์ ์ ์๋ถํฐ ์ดํด๋ณด๋ฉด...
|
|
|
|
| 286 |
""",
|
| 287 |
"์ ๋ฌธ์ ์ธ": """
|
| 288 |
#์ ๋ฌธ์ ์ธ ๋ธ๋ก๊ทธ ํฌ์คํ
์คํ์ผ ๊ฐ์ด๋
|
| 289 |
|
| 290 |
1. ํค๊ณผ ๊ตฌ์กฐ
|
| 291 |
- ๊ณต์์ ์ด๊ณ ํ์ ์ ์ธ ํค ์ฌ์ฉ
|
| 292 |
+
- ๊ฐ๊ด์ ์ด๊ณ ๋ถ์์ ์ธ ์ ๊ทผ ์ ์ง
|
| 293 |
- ๋ช
ํํ ์๋ก , ๋ณธ๋ก , ๊ฒฐ๋ก ๊ตฌ์กฐ
|
| 294 |
- ์ฒด๊ณ์ ์ธ ๋
ผ์ ์ ๊ฐ
|
| 295 |
- ์ธ๋ถ ์น์
์ ์ํ ๋ช
ํํ ์์ ๋ชฉ ์ฌ์ฉ
|
|
|
|
| 314 |
5. ๋ง๋ฌด๋ฆฌ
|
| 315 |
- ํต์ฌ ๋
ผ์ ์ฌ๊ฐ์กฐ
|
| 316 |
- ํฅํ ์ฐ๊ตฌ ๋ฐฉํฅ์ด๋ ์ค๋ฌด์ ํจ์ ์ ์
|
| 317 |
+
์ฃผ์์ฌํญ: ์ ๋ฌธ์ฑ์ ์ ์งํ๋, ์์ ํ ์ดํดํ๊ธฐ ์ด๋ ค์ด ์์ค์ ์ง์
|
| 318 |
+
์์: "๋ณธ ์ฐ๊ตฌ์์๋ ์ธ๊ณต์ง๋ฅ(AI)์ ์ค๋ฆฌ์ ํจ์์ ๋ํด ๊ณ ์ฐฐํ๋ค. ํนํ, ์์จ์ฃผํ ์๋์ฐจ์ ์์ฌ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ฐ์ํ ์ ์๋ ์ค๋ฆฌ์ ๋๋ ๋ง์ ์ด์ ์ ๋ง์ถ๋ค. Bonnefon et al. (2016)์ ์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด, ์์จ์ฃผํ ์ฐจ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ์ง๋ฉดํ ์ ์๋ ์ค๋ฆฌ์ ์ ํ์ ๋ณต์ก์ฑ์ด ์ง์ ๋ ๋ฐ ์๋ค. ๋ณธ๊ณ ์์๋ ์ด๋ฌํ ์ค๋ฆฌ์ ๋๋ ๋ง๋ฅผ ์ธ ๊ฐ์ง ์ฃผ์ ๊ด์ ์์ ๋ถ์ํ๋ค: 1) ๊ณต๋ฆฌ์ฃผ์์ ์ ๊ทผ, 2) ์๋ฌด๋ก ์ ์ ๊ทผ, 3) ๋ ์ค๋ฆฌ์ ์ ๊ทผ. ๊ฐ ์ ๊ทผ๋ฒ์ ์ฅ๋จ์ ์ ๋น๊ต ๋ถ์ํ๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก ์์จ์ฃผํ ์ฐจ๋์ ์ค๋ฆฌ์ ์์ฌ๊ฒฐ์ ํ๋ ์์ํฌ๋ฅผ ์ ์ํ๊ณ ์ ํ๋ค...
|
|
|
|
| 319 |
"""
|
| 320 |
}
|
| 321 |
return prompts.get(style, "ํฌ์คํ
์คํ์ผ ํ๋กฌํํธ")
|
|
|
|
| 412 |
references2 = gr.Textbox(label="์ฐธ๊ณ ๊ธ 2", placeholder="์ฐธ๊ณ ํ ๊ธ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ผ์ธ์", lines=10, visible=True)
|
| 413 |
references3 = gr.Textbox(label="์ฐธ๊ณ ๊ธ 3", placeholder="์ฐธ๊ณ ํ ๊ธ์ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ผ์ธ์", lines=10, visible=True)
|
| 414 |
|
| 415 |
+
# ์งํ ์ํฉ ํ์๋ฅผ ์ํ ์ถ๋ ฅ ํ
์คํธ๋ฐ์ค
|
| 416 |
+
progress_output = gr.Textbox(label="์งํ ์ํฉ", lines=2, visible=True)
|
| 417 |
+
|
| 418 |
+
# ์ฐธ๊ณ ๊ธ ๊ฐ์ ธ์ค๊ธฐ ๋ฒํผ
|
| 419 |
+
fetch_references_btn = gr.Button("์ฐธ๊ณ ๊ธ ์์ฑํ๊ธฐ")
|
| 420 |
+
fetch_references_btn.click(fn=fetch_references, inputs=[topic], outputs=[progress_output, references1, references2, references3])
|
| 421 |
+
|
| 422 |
+
# ์ฐธ๊ณ ๊ธ ๋ค์ ๋ฃ๊ธฐ ๋ฒํผ
|
| 423 |
+
refill_btn = gr.Button("์ฐธ๊ณ ๊ธ ๋ค์ ๋ฃ๊ธฐ")
|
| 424 |
+
refill_btn.click(fn=fetch_references, inputs=[topic], outputs=[progress_output, references1, references2, references3])
|
| 425 |
+
|
| 426 |
gr.Markdown("---\n\n")
|
| 427 |
|
| 428 |
gr.Markdown("### 5๋จ๊ณ: ๋ธ๋ก๊ทธ ์ ๋ชฉ์ ์
๋ ฅํ์ธ์", elem_id="step-title")
|