Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -318,48 +318,77 @@ def get_openai_client():
|
|
318 |
# βββββββββββββββββ System Prompt (REPORT STYLE) βββββββββββββββββ
|
319 |
def get_idea_system_prompt(selected_category: str | None = None) -> str:
|
320 |
"""
|
321 |
-
|
322 |
-
βΈ Report-style output with tables
|
323 |
-
βΈ Clear focus on NEED βΈ VALUE βΈ PROBLEM SOLVED βΈ IMPLEMENTATION SNAPSHOT
|
324 |
-
βΈ Three idea modes: Similarity-based, Contrarian, Random
|
325 |
-
βΈ If `selected_category` is given, all ideas must chiefly reference
|
326 |
-
sub-items inside that category.
|
327 |
"""
|
328 |
-
cat_clause = (f"\n
|
329 |
-
|
330 |
-
|
331 |
prompt = f"""
|
332 |
-
λ°λμ νκΈ(νκ΅μ΄)λ‘ λ΅λ³νλΌ.
|
333 |
-
|
334 |
-
###
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
-
|
349 |
-
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
358 |
"""
|
359 |
return prompt.strip()
|
360 |
|
361 |
-
|
362 |
-
|
363 |
# ββββββββββββββββββββββββββββββββ Brave Search API ββββββββββββββββββββββββ
|
364 |
@st.cache_data(ttl=3600)
|
365 |
def brave_search(query: str, count: int = 20):
|
@@ -635,10 +664,11 @@ def idea_generator_app():
|
|
635 |
sb.info("β
Web search results will be integrated.")
|
636 |
|
637 |
# μμ μ£Όμ λ€ (μλ μμ λΈλ‘κ·Έ ν ν½ -> μ΄μ λ μμ μμ΄λμ΄ μ£Όμ λ‘ μ ν)
|
|
|
638 |
example_topics = {
|
639 |
-
"example1": "
|
640 |
-
"example2": "
|
641 |
-
"example3": "
|
642 |
}
|
643 |
|
644 |
sb.subheader("Category Focus (Optional)")
|
@@ -852,14 +882,13 @@ def process_input(prompt: str, uploaded_files):
|
|
852 |
idea_sections[i+1].strip() if i+1 < len(idea_sections) else "")
|
853 |
for i in range(1, len(idea_sections), 2)]
|
854 |
|
855 |
-
|
856 |
for title, text_block in pairs:
|
857 |
-
|
858 |
table_match = re.search(
|
859 |
r"\|\s*(?:\*\*)?Image\s+Prompt(?:\*\*)?\s*\|\s*([^|\n]+)", # β μμ
|
860 |
text_block, flags=re.IGNORECASE)
|
861 |
|
862 |
-
# ν
μ€νΈ νν Image Prompt : ... λλ Image Prompt - ...
|
863 |
if not table_match:
|
864 |
table_match = re.search(
|
865 |
r"(?i)Image\s+Prompt\s*[:\-]\s*([^\n]+)", text_block)
|
|
|
318 |
# βββββββββββββββββ System Prompt (REPORT STYLE) βββββββββββββββββ
|
319 |
def get_idea_system_prompt(selected_category: str | None = None) -> str:
|
320 |
"""
|
321 |
+
μλ‘μ΄ CCM(ν¬λ‘μ€ μΉ΄ν
κ³ λ¦¬ λ§€νΈλ¦μ€) λ°©λ²λ‘ μ μ μ©ν μμ€ν
ν둬ννΈ
|
|
|
|
|
|
|
|
|
|
|
322 |
"""
|
323 |
+
cat_clause = (f"\n**μΆκ° μ§μΉ¨**: μ νλ μΉ΄ν
κ³ λ¦¬ "{selected_category}"μ νΉλ³ν μ£Όμλ₯Ό κΈ°μΈμ΄μμμ€. "
|
324 |
+
f"μ΄ μΉ΄ν
κ³ λ¦¬μ νλͺ©λ€μ 2λ¨κ³μ 3λ¨κ³ λͺ¨λμμ μ°μ μ μΌλ‘ κ³ λ €νμμμ€.\n") if selected_category else ""
|
325 |
+
|
326 |
prompt = f"""
|
327 |
+
λ°λμ νκΈ(νκ΅μ΄)λ‘ λ΅λ³νλΌ. λΉμ μ νμ 컨μ€ν΄νΈλ‘μ CCM(ν¬λ‘μ€ μΉ΄ν
κ³ λ¦¬ λ§€νΈλ¦μ€) λ°©λ²λ‘ μ νμ©νμ¬ μ°½μμ μμ΄λμ΄λ₯Ό λμΆν©λλ€.
|
328 |
+
|
329 |
+
### CCM λ°©λ²λ‘ νλ‘μΈμ€
|
330 |
+
λ€μ λ¨κ³λ₯Ό ν΅ν΄ 체κ³μ μΌλ‘ μμ΄λμ΄λ₯Ό λμΆνμμμ€:
|
331 |
+
|
332 |
+
1. **λ¬Έμ λΆμ λ° μ§μ λ² μ΄μ€ ꡬμΆ**
|
333 |
+
- μ
λ ₯λ ν둬ννΈμ μꡬμ¬νμ λͺ
νν μ μνκ³ ν΅μ¬ λμ¦ μΆμΆ
|
334 |
+
- μΉκ²μ κ²°κ³Όλ₯Ό λΆμνμ¬ κ΄λ ¨ νΈλ λ, κΈ°μ , μ¬λ‘ νμ
|
335 |
+
- λ¬Έμ ν΄κ²°μ νμν ν΅μ¬ κΈ°λ₯κ³Ό μμ± μλ³
|
336 |
+
|
337 |
+
2. **μΉ΄ν
κ³ λ¦¬λ³ μ ν©μ± λ§€ν**
|
338 |
+
- λͺ¨λ μΉ΄ν
κ³ λ¦¬μμ λ¬Έμ ν΄κ²°μ μ ν©ν νλͺ©λ€μ μλ³
|
339 |
+
- κ° μΉ΄ν
κ³ λ¦¬λ³λ‘ μ΅μ 1κ° μ΄μμ κ΄λ ¨ νλͺ© μ μ
|
340 |
+
- μ μ νλͺ©κ³Ό λ¬Έμ κ°μ μ°κ²°μ± μ€λͺ
|
341 |
+
|
342 |
+
3. **λλ€ ν¬λ‘μ€ λ§€νΈλ¦μ€ μμ±**
|
343 |
+
- 16κ° μΉ΄ν
κ³ λ¦¬ μ€ 6κ°λ₯Ό 무μμλ‘ μ μ
|
344 |
+
- μ μ λ κ° μΉ΄ν
κ³ λ¦¬μμ 1κ° νλͺ©μ μΆμΆ
|
345 |
+
- μ΄ 6κ° νλͺ©μ μ‘°ν©νμ¬ ν΅ν©μ μ루μ
λμΆ
|
346 |
+
|
347 |
+
### μΆλ ₯ νμ
|
348 |
+
μ΅μ’
λ³΄κ³ μλ₯Ό λ€μ κ΅¬μ‘°λ‘ λ§ν¬λ€μ΄ νμμΌλ‘ μμ±νμμμ€:
|
349 |
+
|
350 |
+
## 1οΈβ£ λ¬Έμ λΆμ λ° μ§μ λ² μ΄μ€
|
351 |
+
- **λ¬Έμ μ μ**: [ν둬ννΈ ν΅μ¬ μꡬμ¬ν μμ½]
|
352 |
+
- **ν΅μ¬ λμ¦**: [λΆλ¦Ώ 3-5κ°λ‘ μ£Όμ λμ¦ λ¦¬μ€νΈ]
|
353 |
+
- **νν© λΆμ**: [μΉκ²μμ΄λ λ°°κ²½μ§μ κΈ°λ° νμ¬ μν© μμ½]
|
354 |
+
|
355 |
+
## 2οΈβ£ μΉ΄ν
κ³ λ¦¬λ³ μ ν©μ± λ§€ν
|
356 |
+
[κ° μΉ΄ν
κ³ λ¦¬λ³λ‘ κ°μ₯ μ ν©ν νλͺ©λ€μ ν νμμΌλ‘ μ 리]
|
357 |
+
| μΉ΄ν
κ³ λ¦¬ | μ ν© νλͺ© | μ°κ²°μ± |
|
358 |
+
|---------|----------|--------|
|
359 |
+
| [μΉ΄ν
κ³ λ¦¬1] | [μ μ νλͺ©] | [λ¬Έμ μμ μ°κ²°μ± μ€λͺ
] |
|
360 |
+
| [μΉ΄ν
κ³ λ¦¬2] | [μ μ νλͺ©] | [λ¬Έμ μμ μ°κ²°μ± μ€λͺ
] |
|
361 |
+
... (μ΅μ 5κ° μΉ΄ν
κ³ λ¦¬)
|
362 |
+
|
363 |
+
## 3οΈβ£ CCM ν΅ν© μ루μ
|
364 |
+
### λλ€ μ μ μΉ΄ν
κ³ λ¦¬/νλͺ©
|
365 |
+
[무μμ μ μ λ 6κ° μΉ΄ν
κ³ λ¦¬μ νλͺ©μ νλ‘ μ 리]
|
366 |
+
| μ μ μΉ΄ν
κ³ λ¦¬ | μ μ νλͺ© |
|
367 |
+
|--------------|----------|
|
368 |
+
| [μΉ΄ν
κ³ λ¦¬1] | [νλͺ©1] |
|
369 |
+
| [μΉ΄ν
κ³ λ¦¬2] | [νλͺ©2] |
|
370 |
+
...
|
371 |
+
|
372 |
+
### μ΅μ’
μμ΄λμ΄: [μμ΄λμ΄ μ λͺ©]
|
373 |
+
- **κ°λ
μμ½**: [2-3λ¬Έμ₯μΌλ‘ ν΅μ¬ μμ΄λμ΄ μ€λͺ
]
|
374 |
+
- **μμΈ μ€λͺ
**: [3-4 λ¬Έλ¨μΌλ‘ μμ΄λμ΄ κ΅¬μ²΄ν]
|
375 |
+
- **ꡬν λ°©μ**: [μμ΄λμ΄ μ€νμ μν λ¨κ³/λ°©λ²]
|
376 |
+
- **μ°¨λ³ν μμ**: [μ μ λ 6κ° νλͺ©μ΄ μ΄λ»κ² μλμ§λ₯Ό λ΄λμ§ μ€λͺ
]
|
377 |
+
|
378 |
+
### κΈ°λ ν¨κ³Ό
|
379 |
+
- [λΆλ¦Ώ ν¬μΈνΈλ‘ 3-5κ° μ£Όμ κΈ°λν¨κ³Ό λμ΄]
|
380 |
+
|
381 |
+
### νκ³ λ° λμ κ³Όμ
|
382 |
+
- [λΆλ¦Ώ ν¬μΈνΈλ‘ 2-3κ° μ μ¬μ νκ³/λμ μ μ]
|
383 |
+
|
384 |
+
### μ΄λ―Έμ§ ν둬ννΈ
|
385 |
+
[μμ΄λμ΄λ₯Ό μκ°νν μ μλ μλ¬Έ μ΄λ―Έμ§ ν둬ννΈ 1μ€]
|
386 |
+
|
387 |
+
{cat_clause}
|
388 |
+
Step-by-step μ¬κ³ κ³Όμ μ λ°λ₯΄λ, μΆλ ₯μλ μ΅μ’
λ³΄κ³ μλ§ νμνμμμ€.
|
389 |
"""
|
390 |
return prompt.strip()
|
391 |
|
|
|
|
|
392 |
# ββββββββββββββββββββββββββββββββ Brave Search API ββββββββββββββββββββββββ
|
393 |
@st.cache_data(ttl=3600)
|
394 |
def brave_search(query: str, count: int = 20):
|
|
|
664 |
sb.info("β
Web search results will be integrated.")
|
665 |
|
666 |
# μμ μ£Όμ λ€ (μλ μμ λΈλ‘κ·Έ ν ν½ -> μ΄μ λ μμ μμ΄λμ΄ μ£Όμ λ‘ μ ν)
|
667 |
+
|
668 |
example_topics = {
|
669 |
+
"example1": "λμ λ¬Ό λΆμ‘± λ¬Έμ ν΄κ²°μ μν νμ μ λ°©μ",
|
670 |
+
"example2": "λ
ΈμΈ λλ΄ μλΉμ€μ λμ§νΈ μ ν",
|
671 |
+
"example3": "μ§μκ°λ₯ν μν ν¬μ₯ μ루μ
"
|
672 |
}
|
673 |
|
674 |
sb.subheader("Category Focus (Optional)")
|
|
|
882 |
idea_sections[i+1].strip() if i+1 < len(idea_sections) else "")
|
883 |
for i in range(1, len(idea_sections), 2)]
|
884 |
|
885 |
+
|
886 |
for title, text_block in pairs:
|
887 |
+
|
888 |
table_match = re.search(
|
889 |
r"\|\s*(?:\*\*)?Image\s+Prompt(?:\*\*)?\s*\|\s*([^|\n]+)", # β μμ
|
890 |
text_block, flags=re.IGNORECASE)
|
891 |
|
|
|
892 |
if not table_match:
|
893 |
table_match = re.search(
|
894 |
r"(?i)Image\s+Prompt\s*[:\-]\s*([^\n]+)", text_block)
|