Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -130,6 +130,8 @@ def fetch_crawl_results(query):
|
|
130 |
|
131 |
def generate_blog_post(query, prompt_template):
|
132 |
try:
|
|
|
|
|
133 |
references = fetch_references(query)
|
134 |
ref1, ref2, ref3 = references
|
135 |
|
@@ -144,8 +146,8 @@ def generate_blog_post(query, prompt_template):
|
|
144 |
{ref2}
|
145 |
|
146 |
์ฐธ๊ณ ๊ธ3:
|
147 |
-
{ref3}
|
148 |
-
|
149 |
messages = [
|
150 |
{"role": "system", "content": prompt_template},
|
151 |
{"role": "user", "content": user_message}
|
@@ -163,11 +165,43 @@ def generate_blog_post(query, prompt_template):
|
|
163 |
|
164 |
generated_post = response.choices[0].message['content']
|
165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
166 |
final_post = f"์ฃผ์ : {query}\n\n{generated_post}"
|
|
|
167 |
|
168 |
-
return final_post, ref1, ref2, ref3
|
169 |
except Exception as e:
|
170 |
-
return f"๋ธ๋ก๊ทธ ๊ธ ์์ฑ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", "", "", ""
|
171 |
|
172 |
# PDF ํด๋์ค ๋ฐ ๊ด๋ จ ํจ์ ์ ์
|
173 |
class PDF(FPDF2):
|
|
|
130 |
|
131 |
def generate_blog_post(query, prompt_template):
|
132 |
try:
|
133 |
+
target_length = 2000 # ๋ด๋ถ์ ์ผ๋ก ๋ชฉํ ๊ธ์์ ์ค์
|
134 |
+
|
135 |
references = fetch_references(query)
|
136 |
ref1, ref2, ref3 = references
|
137 |
|
|
|
146 |
{ref2}
|
147 |
|
148 |
์ฐธ๊ณ ๊ธ3:
|
149 |
+
{ref3}
|
150 |
+
"""
|
151 |
messages = [
|
152 |
{"role": "system", "content": prompt_template},
|
153 |
{"role": "user", "content": user_message}
|
|
|
165 |
|
166 |
generated_post = response.choices[0].message['content']
|
167 |
|
168 |
+
# ์์น ์๋ ํํ๋ค์ ์ ๊ทํํ์ ํจํด์ผ๋ก ์ ์
|
169 |
+
unwanted_patterns = [
|
170 |
+
r'\b์ฌ๋ฌ๋ถ[,.]?\s*',
|
171 |
+
r'\b(๋ง์ง๋ง์ผ๋ก|๊ฒฐ๋ก ์ ์ผ๋ก|๊ฒฐ๊ตญ|์ข
ํฉ์ ์ผ๋ก|๋ฐ๋ผ์|๋ง๋ฌด๋ฆฌ|์์ฝ)[,.]?\s*'
|
172 |
+
]
|
173 |
+
|
174 |
+
# ๊ธ์์๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ ์ถ๊ฐ ์์ฑ
|
175 |
+
while len(generated_post) < target_length or any(re.search(pattern, generated_post, re.IGNORECASE) for pattern in unwanted_patterns):
|
176 |
+
if len(generated_post) < target_length:
|
177 |
+
additional_length = target_length - len(generated_post)
|
178 |
+
reason = f"ํ์ฌ ๊ธ์์๋ {len(generated_post)}์ ์ด๋ค. ์ฝ {additional_length}์๋ฅผ ์ถ๊ฐ๋ก ์์ฑํ์ฌ ์ด {target_length}์ ์ด์์ด ๋๋๋ก ์์ฑํ๋ผ"
|
179 |
+
else:
|
180 |
+
reason = "์์น ์๋ ํํ์ด ํฌํจ๋์ด ์์ต๋๋ค. ํด๋น ํํ์ ์ ๊ฑฐํ๊ณ ์์ฐ์ค๋ฝ๊ฒ ๊ธ์ ๋ค์ ์์ฑํด์ฃผ์ธ์."
|
181 |
+
|
182 |
+
additional_message = f"{reason} ์ด์ ๋ด์ฉ๊ณผ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ฒฐ๋๋๋ก ์์ฑํด์ฃผ์ธ์. ์์ ์ธ๊ธํ ํํ๋ค(์ฌ๋ฌ๋ถ, ๋ง์ง๋ง์ผ๋ก, ๊ฒฐ๋ก ์ ์ผ๋ก, ๊ฒฐ๊ตญ, ์ข
ํฉ์ ์ผ๋ก, ๋ฐ๋ผ์, ๋ง๋ฌด๋ฆฌ, ์์ฝ)์ ์ฌ์ฉํ์ง ๋ง์ธ์."
|
183 |
+
|
184 |
+
messages.append({"role": "assistant", "content": generated_post})
|
185 |
+
messages.append({"role": "user", "content": additional_message})
|
186 |
+
|
187 |
+
additional_response = openai.ChatCompletion.create(
|
188 |
+
model="gpt-4o-mini",
|
189 |
+
messages=messages,
|
190 |
+
max_tokens=min(10000, max(additional_length * 2, 1000)),
|
191 |
+
temperature=0.85,
|
192 |
+
top_p=0.9,
|
193 |
+
frequency_penalty=0.5,
|
194 |
+
seed=random_seed
|
195 |
+
)
|
196 |
+
|
197 |
+
generated_post = additional_response.choices[0].message['content']
|
198 |
+
|
199 |
final_post = f"์ฃผ์ : {query}\n\n{generated_post}"
|
200 |
+
actual_length = len(generated_post)
|
201 |
|
202 |
+
return final_post, ref1, ref2, ref3, actual_length
|
203 |
except Exception as e:
|
204 |
+
return f"๋ธ๋ก๊ทธ ๊ธ ์์ฑ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", "", "", "", 0
|
205 |
|
206 |
# PDF ํด๋์ค ๋ฐ ๊ด๋ จ ํจ์ ์ ์
|
207 |
class PDF(FPDF2):
|