Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -130,79 +130,6 @@ def fetch_crawl_results(query):
|
|
130 |
|
131 |
def generate_blog_post(query, prompt_template):
|
132 |
try:
|
133 |
-
# ๋๋ค ์๋ ์ค์
|
134 |
-
random.seed(42)
|
135 |
-
|
136 |
-
# ๋ชฉํ ๊ธ์์ ์ค์ (๋ฌธ์ ์)
|
137 |
-
target_char_length = 2000
|
138 |
-
|
139 |
-
# ์ฐธ๊ณ ๊ธ ๊ฐ์ ธ์ค๊ธฐ
|
140 |
-
references = fetch_references(query)
|
141 |
-
ref1, ref2, ref3 = references
|
142 |
-
|
143 |
-
# OpenAI API ์ค์
|
144 |
-
model_name = "gpt-4o-mini"
|
145 |
-
temperature = 0.85
|
146 |
-
max_tokens = 10000 # ์ต๋ ํ ํฐ ์๋ฅผ ๋ชจ๋ธ ์ ํ์ ๋ง๊ฒ ์ค์
|
147 |
-
top_p = 0.9
|
148 |
-
frequency_penalty = 0.5
|
149 |
-
presence_penalty = 0
|
150 |
-
|
151 |
-
# ๋ถํ์ํ ํํ ํจํด ์ ์
|
152 |
-
unwanted_patterns = [
|
153 |
-
re.compile(r'\b์ฌ๋ฌ๋ถ[,.]?\s*', re.IGNORECASE),
|
154 |
-
re.compile(r'\b(๋ง์ง๋ง์ผ๋ก|๊ฒฐ๋ก ์ ์ผ๋ก|๊ฒฐ๊ตญ|์ข
ํฉ์ ์ผ๋ก|๋ฐ๋ผ์|๋ง๋ฌด๋ฆฌ|์์ฝ)[,.]?\s*', re.IGNORECASE)
|
155 |
-
]
|
156 |
-
|
157 |
-
# ์ฌ์ฉ์ ํ๋กฌํํธ ๊ตฌ์ฑ
|
158 |
-
user_prompt = prompt_template + f"""
|
159 |
-
์ฃผ์ : {query}
|
160 |
-
์ฐธ๊ณ ๊ธ1: {ref1}
|
161 |
-
์ฐธ๊ณ ๊ธ2: {ref2}
|
162 |
-
์ฐธ๊ณ ๊ธ3: {ref3}
|
163 |
-
"""
|
164 |
-
|
165 |
-
# ๋ฉ์์ง ๊ตฌ์ฑ
|
166 |
-
messages = [
|
167 |
-
{"role": "user", "content": user_prompt}
|
168 |
-
]
|
169 |
-
|
170 |
-
# OpenAI API ํธ์ถ
|
171 |
-
response = openai.ChatCompletion.create(
|
172 |
-
model=model_name,
|
173 |
-
messages=messages,
|
174 |
-
temperature=temperature,
|
175 |
-
max_tokens=max_tokens,
|
176 |
-
top_p=top_p,
|
177 |
-
frequency_penalty=frequency_penalty,
|
178 |
-
presence_penalty=presence_penalty,
|
179 |
-
)
|
180 |
-
|
181 |
-
generated_post = response['choices'][0]['message']['content'].strip()
|
182 |
-
|
183 |
-
# ์์ฑ๋ ๊ธ์์ ๋ถํ์ํ ํํ ์ ๊ฑฐ
|
184 |
-
for pattern in unwanted_patterns:
|
185 |
-
generated_post = pattern.sub('', generated_post)
|
186 |
-
|
187 |
-
# ์์ฑ๋ ๊ธ์ ์ค์ ๋ฌธ์ ์ ๊ณ์ฐ
|
188 |
-
actual_char_length = len(generated_post)
|
189 |
-
|
190 |
-
# ๋ชฉํ ๊ธ์์ ๋ฏธ๋ฌ ์ ๊ฒฝ๊ณ ๋ฉ์์ง ์ถ๊ฐ
|
191 |
-
if actual_char_length < target_char_length:
|
192 |
-
warning_message = f"\n\n[๊ฒฝ๊ณ ] ์์ฑ๋ ๊ธ์ ๊ธธ์ด๊ฐ ๋ชฉํ ๊ธ์์์ธ {target_char_length}์์ ๋ฏธ๋ฌํฉ๋๋ค. (ํ์ฌ ๊ธ์์: {actual_char_length}์)"
|
193 |
-
generated_post += warning_message
|
194 |
-
|
195 |
-
final_post = f"์ฃผ์ : {query}\n\n{generated_post}"
|
196 |
-
|
197 |
-
return final_post, ref1, ref2, ref3, actual_char_length
|
198 |
-
except Exception as e:
|
199 |
-
print(f"generate_blog_post ํจ์์์ ์ค๋ฅ ๋ฐ์: {str(e)}")
|
200 |
-
return f"๋ธ๋ก๊ทธ ๊ธ ์์ฑ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", "", "", "", 0
|
201 |
-
def generate_blog_post(query, prompt_template):
|
202 |
-
try:
|
203 |
-
# ๋๋ค ์๋ ์ค์
|
204 |
-
random.seed(42)
|
205 |
-
|
206 |
# ๋ชฉํ ๊ธ์์ ์ค์ (๋ฌธ์ ์)
|
207 |
target_char_length = 2000
|
208 |
|
@@ -230,6 +157,7 @@ def generate_blog_post(query, prompt_template):
|
|
230 |
์ฐธ๊ณ ๊ธ1: {ref1}
|
231 |
์ฐธ๊ณ ๊ธ2: {ref2}
|
232 |
์ฐธ๊ณ ๊ธ3: {ref3}
|
|
|
233 |
"""
|
234 |
|
235 |
# ๋ฉ์์ง ๊ตฌ์ฑ
|
@@ -248,6 +176,7 @@ def generate_blog_post(query, prompt_template):
|
|
248 |
presence_penalty=presence_penalty,
|
249 |
)
|
250 |
|
|
|
251 |
generated_post = response['choices'][0]['message']['content'].strip()
|
252 |
|
253 |
# ์์ฑ๋ ๊ธ์์ ๋ถํ์ํ ํํ ์ ๊ฑฐ
|
@@ -262,13 +191,13 @@ def generate_blog_post(query, prompt_template):
|
|
262 |
warning_message = f"\n\n[๊ฒฝ๊ณ ] ์์ฑ๋ ๊ธ์ ๊ธธ์ด๊ฐ ๋ชฉํ ๊ธ์์์ธ {target_char_length}์์ ๋ฏธ๋ฌํฉ๋๋ค. (ํ์ฌ ๊ธ์์: {actual_char_length}์)"
|
263 |
generated_post += warning_message
|
264 |
|
|
|
265 |
final_post = f"์ฃผ์ : {query}\n\n{generated_post}"
|
266 |
|
267 |
return final_post, ref1, ref2, ref3, actual_char_length
|
268 |
except Exception as e:
|
269 |
print(f"generate_blog_post ํจ์์์ ์ค๋ฅ ๋ฐ์: {str(e)}")
|
270 |
return f"๋ธ๋ก๊ทธ ๊ธ ์์ฑ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", "", "", "", 0
|
271 |
-
|
272 |
|
273 |
# PDF ํด๋์ค ๋ฐ ๊ด๋ จ ํจ์ ์ ์
|
274 |
class PDF(FPDF2):
|
|
|
130 |
|
131 |
def generate_blog_post(query, prompt_template):
|
132 |
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
# ๋ชฉํ ๊ธ์์ ์ค์ (๋ฌธ์ ์)
|
134 |
target_char_length = 2000
|
135 |
|
|
|
157 |
์ฐธ๊ณ ๊ธ1: {ref1}
|
158 |
์ฐธ๊ณ ๊ธ2: {ref2}
|
159 |
์ฐธ๊ณ ๊ธ3: {ref3}
|
160 |
+
๋ชฉํ ๊ธ์์: {target_char_length}
|
161 |
"""
|
162 |
|
163 |
# ๋ฉ์์ง ๊ตฌ์ฑ
|
|
|
176 |
presence_penalty=presence_penalty,
|
177 |
)
|
178 |
|
179 |
+
# ๋ชจ๋ธ์ด ์์ฑํ ๋ต๋ณ ์ถ์ถ
|
180 |
generated_post = response['choices'][0]['message']['content'].strip()
|
181 |
|
182 |
# ์์ฑ๋ ๊ธ์์ ๋ถํ์ํ ํํ ์ ๊ฑฐ
|
|
|
191 |
warning_message = f"\n\n[๊ฒฝ๊ณ ] ์์ฑ๋ ๊ธ์ ๊ธธ์ด๊ฐ ๋ชฉํ ๊ธ์์์ธ {target_char_length}์์ ๋ฏธ๋ฌํฉ๋๋ค. (ํ์ฌ ๊ธ์์: {actual_char_length}์)"
|
192 |
generated_post += warning_message
|
193 |
|
194 |
+
# ์ต์ข
๊ฒฐ๊ณผ๋ฌผ ๊ตฌ์ฑ
|
195 |
final_post = f"์ฃผ์ : {query}\n\n{generated_post}"
|
196 |
|
197 |
return final_post, ref1, ref2, ref3, actual_char_length
|
198 |
except Exception as e:
|
199 |
print(f"generate_blog_post ํจ์์์ ์ค๋ฅ ๋ฐ์: {str(e)}")
|
200 |
return f"๋ธ๋ก๊ทธ ๊ธ ์์ฑ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", "", "", "", 0
|
|
|
201 |
|
202 |
# PDF ํด๋์ค ๋ฐ ๊ด๋ จ ํจ์ ์ ์
|
203 |
class PDF(FPDF2):
|