Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -132,6 +132,7 @@ def generate_blog_post(query, prompt_template):
|
|
132 |
try:
|
133 |
# ๋ชฉํ ๊ธ์์ ์ค์ (๋ฌธ์ ์)
|
134 |
target_char_length = 2000
|
|
|
135 |
|
136 |
# ์ฐธ๊ณ ๊ธ ๊ฐ์ ธ์ค๊ธฐ
|
137 |
references = fetch_references(query)
|
@@ -145,14 +146,14 @@ def generate_blog_post(query, prompt_template):
|
|
145 |
frequency_penalty = 0.5
|
146 |
presence_penalty = 0
|
147 |
|
148 |
-
# ๋ถํ์ํ ํํ ํจํด ์ ์
|
149 |
unwanted_patterns = [
|
150 |
re.compile(r'\b์ฌ๋ฌ๋ถ[,.]?\s*', re.IGNORECASE),
|
151 |
re.compile(r'\b(๋ง์ง๋ง์ผ๋ก|๊ฒฐ๋ก ์ ์ผ๋ก|๊ฒฐ๊ตญ|์ข
ํฉ์ ์ผ๋ก|๋ฐ๋ผ์|๋ง๋ฌด๋ฆฌ|์์ฝ)[,.]?\s*', re.IGNORECASE)
|
152 |
]
|
153 |
|
154 |
-
#
|
155 |
-
|
156 |
์ฃผ์ : {query}
|
157 |
์ฐธ๊ณ ๊ธ 1: {ref1}
|
158 |
์ฐธ๊ณ ๊ธ 2: {ref2}
|
@@ -160,41 +161,59 @@ def generate_blog_post(query, prompt_template):
|
|
160 |
๋ชฉํ ๊ธ์์: {target_char_length}
|
161 |
"""
|
162 |
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
132 |
try:
|
133 |
# ๋ชฉํ ๊ธ์์ ์ค์ (๋ฌธ์ ์)
|
134 |
target_char_length = 2000
|
135 |
+
max_attempts = 2 # ์ต๋ ์๋ ํ์ (์ด๊ธฐ ์๋ 1ํ + ์ฌ์๋ 1ํ)
|
136 |
|
137 |
# ์ฐธ๊ณ ๊ธ ๊ฐ์ ธ์ค๊ธฐ
|
138 |
references = fetch_references(query)
|
|
|
146 |
frequency_penalty = 0.5
|
147 |
presence_penalty = 0
|
148 |
|
149 |
+
# ๋ถํ์ํ ํํ ํจํด ์ ์ (ํ๋์ฝ๋ฉ)
|
150 |
unwanted_patterns = [
|
151 |
re.compile(r'\b์ฌ๋ฌ๋ถ[,.]?\s*', re.IGNORECASE),
|
152 |
re.compile(r'\b(๋ง์ง๋ง์ผ๋ก|๊ฒฐ๋ก ์ ์ผ๋ก|๊ฒฐ๊ตญ|์ข
ํฉ์ ์ผ๋ก|๋ฐ๋ผ์|๋ง๋ฌด๋ฆฌ|์์ฝ)[,.]?\s*', re.IGNORECASE)
|
153 |
]
|
154 |
|
155 |
+
# ์ด๊ธฐ ํ๋กฌํํธ ๊ตฌ์ฑ
|
156 |
+
base_prompt = prompt_template + f"""
|
157 |
์ฃผ์ : {query}
|
158 |
์ฐธ๊ณ ๊ธ 1: {ref1}
|
159 |
์ฐธ๊ณ ๊ธ 2: {ref2}
|
|
|
161 |
๋ชฉํ ๊ธ์์: {target_char_length}
|
162 |
"""
|
163 |
|
164 |
+
for attempt in range(max_attempts):
|
165 |
+
# ์ฒซ ๋ฒ์งธ ์๋ ์ดํ์๋ ํ๋กฌํํธ์ ์ถ๊ฐ ์ง์นจ์ ํฌํจ
|
166 |
+
if attempt > 0:
|
167 |
+
additional_instructions = f"""
|
168 |
+
์์ฑ๋ ๊ธ์ ๊ธธ์ด๊ฐ ๋ชฉํ ๊ธ์์์ ๋ฏธ๋ฌ, ๋ด์ฉ์ ์ง์ ์ ์งํ๊ณ ๋์ฑ ํ๋ถํ๊ฒ ์์ฑํ๊ณ , ์ธ๋ถ์ฌํญ์ ์ถ๊ฐํ์ฌ ์์ฐ์ค๋ฝ๊ฒ ํ์ฅํ๋ผ
|
169 |
+
์ค๋ณต๋๋ ๋ด์ฉ์ ํผํ๊ณ ์๋ก์ด ์ ๋ณด๋ฅผ ์ถ๊ฐํ๋ผ
|
170 |
+
๋ฐ๋์ ๋ถํ์ํ ํํ์ ์ฌ์ฉํ์ง ๋ง ๊ฒ: ์ฌ๋ฌ๋ถ, ์ต๊ทผ, ๋ง์ง๋ง์ผ๋ก, ๊ฒฐ๋ก ์ ์ผ๋ก, ๊ฒฐ๊ตญ, ์ข
ํฉ์ ์ผ๋ก, ๋ฐ๋ผ์, ๋ง๋ฌด๋ฆฌ, ์์ฝ.
|
171 |
+
"""
|
172 |
+
else:
|
173 |
+
additional_instructions = ""
|
174 |
+
|
175 |
+
user_prompt = base_prompt + additional_instructions
|
176 |
+
|
177 |
+
# ๋ฉ์์ง ๊ตฌ์ฑ
|
178 |
+
messages = [
|
179 |
+
{"role": "user", "content": user_prompt}
|
180 |
+
]
|
181 |
+
|
182 |
+
# OpenAI API ํธ์ถ
|
183 |
+
response = openai.ChatCompletion.create(
|
184 |
+
model=model_name,
|
185 |
+
messages=messages,
|
186 |
+
temperature=temperature,
|
187 |
+
max_tokens=max_tokens,
|
188 |
+
top_p=top_p,
|
189 |
+
frequency_penalty=frequency_penalty,
|
190 |
+
presence_penalty=presence_penalty,
|
191 |
+
)
|
192 |
+
|
193 |
+
# ๋ชจ๋ธ์ด ์์ฑํ ๋ต๋ณ ์ถ์ถ
|
194 |
+
generated_post = response['choices'][0]['message']['content'].strip()
|
195 |
+
|
196 |
+
# ๋ถํ์ํ ํํ ์ ๊ฑฐ (์ฝ๋์์ ํ๋์ฝ๋ฉ์ผ๋ก ์ฒ๋ฆฌ)
|
197 |
+
for pattern in unwanted_patterns:
|
198 |
+
generated_post = pattern.sub('', generated_post)
|
199 |
+
|
200 |
+
# ์์ฑ๋ ๊ธ์ ์ค์ ๋ฌธ์ ์ ๊ณ์ฐ
|
201 |
+
actual_char_length = len(generated_post)
|
202 |
+
|
203 |
+
# ๊ธ์์๊ฐ ๋ชฉํ๋ฅผ ์ถฉ์กฑํ๋ฉด ๋ฃจํ ์ข
๋ฃ
|
204 |
+
if actual_char_length >= target_char_length:
|
205 |
+
break
|
206 |
+
else:
|
207 |
+
# ๋ก๊ทธ์ ๊ฒฝ๊ณ ๋ฉ์์ง ์ถ๋ ฅ (์ฌ์ฉ์์๊ฒ๋ ํ์๋์ง ์์)
|
208 |
+
print(f"[์๋ {attempt + 1}] ์์ฑ๋ ๊ธ์ ๊ธธ์ด๊ฐ ๋ชฉํ ๊ธ์์์ ๋ฏธ๋ฌํฉ๋๋ค. (ํ์ฌ ๊ธ์์: {actual_char_length}์)")
|
209 |
+
if attempt == max_attempts - 1:
|
210 |
+
print("[๊ฒฝ๊ณ ] ์ต๋ ์๋ ํ์์ ๋๋ฌํ์ผ๋ ๋ชฉํ ๊ธ์์์ ๋๋ฌํ์ง ๋ชปํ์ต๋๋ค.")
|
211 |
|
212 |
# ์ต์ข
๊ฒฐ๊ณผ๋ฌผ ๊ตฌ์ฑ
|
213 |
final_post = f"์ฃผ์ : {query}\n\n{generated_post}"
|
214 |
|
215 |
return final_post, ref1, ref2, ref3, actual_char_length
|
216 |
+
|
217 |
except Exception as e:
|
218 |
print(f"generate_blog_post ํจ์์์ ์ค๋ฅ ๋ฐ์: {str(e)}")
|
219 |
return f"๋ธ๋ก๊ทธ ๊ธ ์์ฑ ์ค ์ค๋ฅ ๋ฐ์: {str(e)}", "", "", "", 0
|