Spaces:
Sleeping
Sleeping
| """ | |
| n8n ์ํฌํ๋ก์ฐ ์ฌ์ฌ ๊ธฐ์ค ์ ์ | |
| readme.md์ ์์ธํ ๊ธฐ์ค์ ๋ฐํ์ผ๋ก ์์ฑ๋จ | |
| ํ๊ฐ ํญ๋ชฉ ๊ตฌ์ฑ: | |
| 1. ๊ธฐ์ ์ ์์ฑ๋ (15์ ) | |
| 2. ์ ์คํ ์ด์ง ์ ํ ํ์ฉ๋ (15์ ) | |
| 3. ์ค์ฉ์ฑ (30์ ) | |
| 4. ์ฐฝ์์ฑ / ๋ฌธ์ ํด๊ฒฐ ์ ๊ทผ๋ฒ (20์ ) | |
| ์ด์ : 80์ | |
| """ | |
| # ============================================================================= | |
| # ๋ค์ค ์ํฌํ๋ก์ฐ ์ข ํฉ ํ๊ฐ ๊ธฐ์ค (์ฌ๋ฌ JSON ํ์ผ์ด ํฌํจ๋ ZIP ํ์ผ์ฉ) | |
| # ============================================================================= | |
| MULTI_WORKFLOW_TECHNICAL_CRITERIA = """ | |
| # ๋ค์ค ์ํฌํ๋ก์ฐ ๊ธฐ์ ์ ์์ฑ๋ ์ฌ์ฌ ๊ธฐ์ค (15์ ) | |
| โ ๏ธ **์ค์: ์๊ฒฉํ ํ๊ฐ ์์น** | |
| - ์ ์๋ ๋งค์ฐ ์๊ฒฉํ๊ฒ ๋ถ์ฌํ์ญ์์ค. ์๋ฒฝํ์ง ์์ผ๋ฉด ๊ฐ์ ํ์ญ์์ค. | |
| - ์ฌ๋ฌ ์ํฌํ๋ก์ฐ๊ฐ ํ๋์ ํ๋ก์ ํธ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ๋ฅผ ํ๊ฐํฉ๋๋ค. | |
| ## ํ๊ฐ ํต์ฌ ์ง๋ฌธ | |
| 1. ๊ฐ ์ํฌํ๋ก์ฐ๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ์์ฑ๋์ด ์๋๊ฐ? | |
| 2. ์ฌ๋ฌ ์ํฌํ๋ก์ฐ๊ฐ ์๋ก ์ ์ฐ๊ฒฐ๋์ด ์๋๊ฐ? (๋ฐ์ดํฐ ํ๋ฆ, ๊ธฐ๋ฅ์ ์ฐ๊ณ์ฑ) | |
| 3. ์ ์ฒด ์์คํ ์ผ๋ก์์ ์ผ๊ด์ฑ๊ณผ ๋ชจ๋ํ๊ฐ ์ ๋์ด ์๋๊ฐ? | |
| ## ํ๊ฐ ํญ๋ชฉ: | |
| ### 1-1. ๊ฐ๋ณ ์ํฌํ๋ก์ฐ ์์ฑ๋ (6์ ) | |
| - ๊ฐ ์ํฌํ๋ก์ฐ๊ฐ TriggerโOutput๊น์ง ์์ฑ๋ ๊ฒฝ๋ก๋ฅผ ๊ฐ๋๊ฐ? | |
| - Dead node๊ฐ ์๋๊ฐ? | |
| - ์ญํ ๊ธฐ๋ฐ ๋ค์ด๋ฐ์ด ๋์ด ์๋๊ฐ? | |
| ### 1-2. ์ํฌํ๋ก์ฐ ๊ฐ ์ฐ๊ฒฐ์ฑ ๋ฐ ํตํฉ์ฑ (6์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ์ฌ๋ฌ ์ํฌํ๋ก์ฐ๊ฐ ์๋ก ๋ณด์์ ์ธ ๊ธฐ๋ฅ์ ํ๋๊ฐ? | |
| - ์ํฌํ๋ก์ฐ ๊ฐ ๋ฐ์ดํฐ ํ๋ฆ์ด ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋๊ฐ? | |
| - ์ ์ฒด์ ์ธ ์์คํ ๊ตฌ์กฐ๊ฐ ์ผ๊ด์ฑ ์๊ฒ ์ค๊ณ๋์๋๊ฐ? | |
| - ๊ฐ ์ํฌํ๋ก์ฐ๊ฐ ๋ชจ๋ํ๋์ด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์กฐ์ธ๊ฐ? | |
| **ํ๊ฐ ์ ๊ณ ๋ ค์ฌํญ:** | |
| - ์ํฌํ๋ก์ฐ ๊ฐ ๋ช ์์ ์ฐ๊ฒฐ(webhook, HTTP ํธ์ถ ๋ฑ)์ด ์์ผ๋ฉด ๊ฐ์ | |
| - ๊ฐ ์ํฌํ๋ก์ฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก๋ ๋์ ๊ฐ๋ฅํ๋ฉด์ ํตํฉ๋ ๊ฐ๋ฅํ๋ฉด ๊ฐ์ | |
| - ์ ์ฒด ์์คํ ์ ๋ฐ์ดํฐ ์คํค๋ง ์ผ๊ด์ฑ์ด ์์ผ๋ฉด ๊ฐ์ | |
| ### 1-3. ๋ถ๊ธฐ/์์ธ ์ฒ๋ฆฌ (3์ ) | |
| - ๊ฐ ์ํฌํ๋ก์ฐ์์ ์๋ฏธ ์๋ ์กฐ๊ฑด ๋ถ๊ธฐ๊ฐ ์๋๊ฐ? | |
| - Fallback/default ๊ฒฝ๋ก๊ฐ ์กด์ฌํ๋๊ฐ? | |
| - ์ํฌํ๋ก์ฐ ๊ฐ ์ค๋ฅ ์ ํ ๋ฐ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ด ์๋๊ฐ? | |
| ## ์ถ๋ ฅ ํ์: | |
| JSON ํ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅํ์ญ์์ค: | |
| { | |
| "๊ฐ๋ณ_์ํฌํ๋ก์ฐ_์์ฑ๋": {"์๊ณ": <0-6>, "ํ๊ฐ": "<ํ๊ฐ>"}, | |
| "์ํฌํ๋ก์ฐ_๊ฐ_์ฐ๊ฒฐ์ฑ_๋ฐ_ํตํฉ์ฑ": {"์๊ณ": <0-6>, "ํ๊ฐ": "<ํ๊ฐ>"}, | |
| "๋ถ๊ธฐ_์์ธ_์ฒ๋ฆฌ": {"์๊ณ": <0-3>, "ํ๊ฐ": "<ํ๊ฐ>"}, | |
| "์ด์ ": <0-15>, | |
| "์ข ํฉ_ํ๊ฐ": "<์ ์ฒด์ ์ธ ํ๊ฐ ์์ฝ>" | |
| } | |
| """ | |
| MULTI_WORKFLOW_UPSTAGE_CRITERIA = """ | |
| # ๋ค์ค ์ํฌํ๋ก์ฐ ์ ์คํ ์ด์ง ์ ํ ํ์ฉ๋ ์ฌ์ฌ ๊ธฐ์ค (15์ ) | |
| โ ๏ธ **์ค์: ์๊ฒฉํ ํ๊ฐ ์์น** | |
| - ์ ์๋ ๋งค์ฐ ์๊ฒฉํ๊ฒ ๋ถ์ฌํ์ญ์์ค. | |
| - **์ค์**: ๋ชจ๋ ์ํฌํ๋ก์ฐ์์ ์ ์คํ ์ด์ง ๊ธฐ์ ์ ํ์ฉํ ํ์๋ ์์ต๋๋ค. | |
| - ํ๋ก์ ํธ ์ ์ฒด์์ ์ ์คํ ์ด์ง ๊ธฐ์ ์ด ์ ์ ํ ํ์ฉ๋์๋์ง ํ๊ฐํ์ธ์. | |
| ## ํ๊ฐ ํต์ฌ ์ง๋ฌธ | |
| 1. ํ๋ก์ ํธ ์ ์ฒด์์ ์ ์คํ ์ด์ง API๊ฐ ์ ์ ํ ์ฌ์ฉ๋์๋๊ฐ? | |
| 2. ๊ฐ ์ํฌํ๋ก์ฐ์ ๋ชฉ์ ์ ๋ง๋ API๊ฐ ์ ํ๋์๋๊ฐ? | |
| 3. ์ ์คํ ์ด์ง ๊ธฐ์ ์ด ํ์ํ ๋ถ๋ถ์๋ง ์ฌ์ฉ๋์๋๊ฐ? (๊ณผ๋ํ ์ฌ์ฉ์ ๊ฐ์ ) | |
| ## ํ๊ฐ ํญ๋ชฉ: | |
| ### 2-1. API ์ฌ์ฉ ์ ํฉ์ฑ (5์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ํ๋ก์ ํธ ์ ์ฒด์์ ์ ์คํ ์ด์ง API๊ฐ ๊ณต์ ์๋ํฌ์ธํธ๋ก ์ฌ์ฉ๋์๋๊ฐ? | |
| - ๊ฐ ์ํฌํ๋ก์ฐ์ ๋ชฉ์ ์ ๋ง๋ API๊ฐ ์ ํ๋์๋๊ฐ? | |
| - Credential์ด ์์ ํ๊ฒ ๊ด๋ฆฌ๋์๋๊ฐ? | |
| **์ค์**: | |
| - ๋ชจ๋ ์ํฌํ๋ก์ฐ์์ ์ ์คํ ์ด์ง API๋ฅผ ์ฌ์ฉํ ํ์๋ ์์ต๋๋ค. | |
| - ์ ์คํ ์ด์ง ๊ธฐ์ ์ด ํ์ํ ๋ถ๋ถ์๋ง ์ ์ ํ ์ฌ์ฉ๋์๋์ง ํ๊ฐํ์ธ์. | |
| - ์: ๋ฌธ์ ํ์ฑ์ด ํ์ํ ์ํฌํ๋ก์ฐ์์๋ง Document Parse API ์ฌ์ฉ | |
| ### 2-2. Prompt / System ์ค๊ณ (5์ ) | |
| - ์ ์คํ ์ด์ง API๋ฅผ ์ฌ์ฉํ๋ ์ํฌํ๋ก์ฐ์์ ๋ช ํํ ์ญํ (system message)์ด ์ ์๋์๋๊ฐ? | |
| - JSON/schema ๊ฐ์ ๋ ฅ์ด ์๋๊ฐ? | |
| - ํ๋กฌํํธ๊ฐ ๊น๋ํ๊ณ ๊ตฌ์กฐํ๋์ด ์๋๊ฐ? | |
| ### 2-3. ๊ธฐ๋ฅ ์กฐํฉยท์ค์ผ์คํธ๋ ์ด์ (5์ ) | |
| - ์ฌ๋ฌ ์ํฌํ๋ก์ฐ์์ ์ ์คํ ์ด์ง API๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋จ๊ณ์ ํ์ดํ๋ผ์ธ์ผ๋ก ๊ตฌ์ฑ๋์๋๊ฐ? | |
| - ์ /ํ์ฒ๋ฆฌ๊ฐ ์ ์ ํ๊ฐ? | |
| - ์ค๋ณต ํธ์ถ์ด ์๋๊ฐ? | |
| **์ค์**: | |
| - ์ ์คํ ์ด์ง API๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ํฌํ๋ก์ฐ๊ฐ ์์ด๋ ๊ฐ์ ํ์ง ๋ง์ธ์. | |
| - ํ๋ก์ ํธ ์ ์ฒด์์ ์ ์คํ ์ด์ง ๊ธฐ์ ์ด ํ์ํ ๋ถ๋ถ์ ์ ์ ํ ํ์ฉ๋์๋์ง ํ๊ฐํ์ธ์. | |
| ## ์ถ๋ ฅ ํ์: | |
| JSON ํ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅํ์ญ์์ค: | |
| { | |
| "API_์ฌ์ฉ_์ ํฉ์ฑ": {"์๊ณ": <0-5>, "ํ๊ฐ": "<ํ๊ฐ>"}, | |
| "Prompt_System_์ค๊ณ": {"์๊ณ": <0-5>, "ํ๊ฐ": "<ํ๊ฐ>"}, | |
| "๊ธฐ๋ฅ_์กฐํฉ_์ค์ผ์คํธ๋ ์ด์ ": {"์๊ณ": <0-5>, "ํ๊ฐ": "<ํ๊ฐ>"}, | |
| "์ด์ ": <0-15>, | |
| "์ข ํฉ_ํ๊ฐ": "<์ ์ฒด์ ์ธ ํ๊ฐ ์์ฝ>" | |
| } | |
| """ | |
| # ============================================================================= | |
| # 1. ๊ธฐ์ ์ ์์ฑ๋ ์ฌ์ฌ ๊ธฐ์ค (15์ ) | |
| # ============================================================================= | |
| TECHNICAL_CRITERIA = """ | |
| # ๊ธฐ์ ์ ์์ฑ๋ ์ฌ์ฌ ๊ธฐ์ค (15์ ) | |
| โ ๏ธ **์ค์: ์๊ฒฉํ ํ๊ฐ ์์น** | |
| - ์ ์๋ ๋งค์ฐ ์๊ฒฉํ๊ฒ ๋ถ์ฌํ์ญ์์ค. ์๋ฒฝํ์ง ์์ผ๋ฉด ๊ฐ์ ํ์ญ์์ค. | |
| - "๊ฑฐ์ ์์ฑ" ๋๋ "๋๋ถ๋ถ ์ข์"์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ธฐ์ค์ ์ ํํ ์ถฉ์กฑํด์ผ๋ง ์ ์๋ฅผ ๋ถ์ฌํ์ญ์์ค. | |
| - ๋ถํ์คํ๊ฑฐ๋ ๋ช ํํ์ง ์์ ๊ฒฝ์ฐ๋ ๋ฎ์ ์ ์๋ฅผ ๋ถ์ฌํ์ญ์์ค. | |
| - ๊ธฐ์ค์ ์์ ํ ์ถฉ์กฑํ์ง ์์ผ๋ฉด ํด๋น ํญ๋ชฉ์ ๋ํ ์ ์๋ฅผ ๋ถ์ฌํ์ง ๋ง์ญ์์ค. | |
| ์ํฌํ๋ก์ฐ JSON ํ์ผ์ ๋ถ์ํ์ฌ ๋ค์ ๊ธฐ์ค์ผ๋ก ํ๊ฐํ์ญ์์ค. | |
| ## LLM์ด ๋ณผ ์ ์๋ ๊ฒ (JSON ๊ตฌ์กฐ๋ง์ผ๋ก ํ๋จ ๊ฐ๋ฅ) | |
| - ๋ ธ๋ ๊ตฌ์กฐ & ์ฐ๊ฒฐ ๊ด๊ณ (`nodes`, `connections`) | |
| - ์ด๋ค ํธ๋ฆฌ๊ฑฐ์์ ์์ํ๋์ง (์: ChatTrigger, Webhook ๋ฑ) | |
| - ๋ธ๋์น/๋ถ๊ธฐ ์ค๊ณ (IF, Switch, Merge ๋ ธ๋ ๋ฑ) | |
| - ์์ธ ์ฒ๋ฆฌ/์๋ฌ ์ฒ๋ฆฌ ํจํด์ด ์๋์ง | |
| - HTTP ์์ฒญ ๋ ธ๋์์: | |
| - ์ด๋ค API๋ฅผ ํธ์ถํ๋์ง (URL, `api.upstage.ai`, `model: solar-pro2` ๋ฑ) | |
| - ์์ฒญ/์๋ต์ ์ด๋ป๊ฒ ํ์ฒ๋ฆฌํ๋์ง (Code ๋ ธ๋, Set ๋ ธ๋) | |
| - Code ๋ ธ๋์ JS ๋ก์ง ์์ค (๋ฐ์ดํฐ ๋จธ์ง, ํค ๊ด๋ฆฌ, ์์ธ ์ฒ๋ฆฌ ๋ฑ) | |
| - "TODO", "DEACTIVATED", "์์ ํ ๊ฒ" ๊ฐ์ ๋ฏธ์์ฑ ์๊ทธ๋ | |
| - intent ๋ถ๋ฅ โ Switch โ ๊ฐ intent๋ณ ๋ถ๊ธฐ ๊ตฌ์กฐ๊ฐ "๋ซํ ์๋์ง" | |
| - ์ต์ข ์ก์ ๊น์ง ๋๋ฌํ๋์ง (์: ์ด๋ฉ์ผ ๋ฐ์ก, DB ์ ์ฅ ๋ฑ) | |
| ## ํ๊ฐ ํญ๋ชฉ: | |
| ### 1-1. ๊ตฌ์กฐ ์๊ฒฐ์ฑ & ๋ชจ๋ํ (5์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - TriggerโOutput๊น์ง ๊ฒฝ๋ก ์์ฑ, dead node ์์ | |
| - ์ญํ ๊ธฐ๋ฐ ๋ค์ด๋ฐยท๋ชจ๋ํ | |
| #### ์ ์ฒด ๊ฒฝ๋ก ์์ฑ๋ & Dead ๋ ธ๋ ์์ (3์ ) | |
| - ์ต์ 1๊ฐ์ **trigger node** ์กด์ฌ (`type`: `webhook`, `scheduleTrigger`, `chatTrigger` ๋ฑ) | |
| - trigger โ intermediate nodes โ output nodes๋ก ์ด์ด์ง๋ **๋จ์ ์๋ ๊ฒฝ๋ก** ์กด์ฌ | |
| - ์ด๋ค ๋ ธ๋๋ **incoming/outgoing connection ๋ ๋ค ์์**์ด๋ฉด ๊ฐ์ | |
| - output ๋ ธ๋๋ ์ด๋ฉ์ผ, ํ์ผ ์ ๋ก๋, DB, webhook ์๋ต ๋ฑ **์ต์ข ๋ชฉ์ ๊ธฐ๋ฅ์ ๊ฐ๋ ๋ ธ๋** | |
| #### ์ญํ ๊ธฐ๋ฐ ๋ค์ด๋ฐ & ๋ชจ๋ํ (2์ ) | |
| - ๋ ธ๋๋ช ์ด "HTTP Request", "Code" ๊ฐ์ ๊ธฐ๋ณธ๋ช ์ด ์๋ **๊ธฐ๋ฅ ์ค์ฌ ๋ช ๋ช ** (์: "Upstage DP ํธ์ถ", "์์ฝ ํ์ฒ๋ฆฌ") | |
| - ๋ฐ๋ณต ๋ก์ง์ loop / batch ๋ ธ๋๋ก ๋ชจ๋ํ | |
| - ๊ณตํต ์ ์ฒ๋ฆฌ๋ ๋ณ๋ ๋ ธ๋ํ (๋ถ์ฐ X) | |
| ### 1-2. ๋ฐ์ดํฐยท์คํค๋ง ์ผ๊ด์ฑ (5์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - key ์ผ๊ด์ฑ(`text/data/json`) | |
| - ๋ถํ์ํ overwrite ์์ | |
| - merge ์ ํฉ์ฑ, output ํ๋ ๋ณด์กด | |
| #### key ์ผ๊ด์ฑ (2์ ) | |
| - HTTP ๋ ธ๋ ์๋ต ํ๋: `response.data` ๋๋ `body.choices[0].message.content` | |
| - Code/Set ๋ ธ๋์์ output key ์ผ๊ด์ฑ: ๋ค์ ๋ ธ๋์์ ์ฐธ์กฐํ๋ key์ ์ผ์น | |
| - `{{ $json.XXX }}` ํํ์์์ key ์คํ/๋ถ์ผ์น ์์ | |
| #### ๋ถํ์ํ overwrite ์์ & output ํ๋ ๋ณด์กด (2์ ) | |
| - Set ๋ ธ๋๋ก "๋์ผํ key๋ฅผ ์ฌ๋ฌ ๋ฒ" overwriteํ์ง ์์ | |
| - "์ด์ ๋จ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์กด"ํ๋ฉด์ ์ ํ๋๋ฅผ ์ถ๊ฐํ๋ ํจํด | |
| - ์ต์ข ๋ ธ๋๊น์ง "ํ์ํ ํ๋"๊ฐ ์ ์ง๋จ | |
| #### Merge ๋ ธ๋ ์ ํฉ์ฑ (1์ ) | |
| - Merge ๋ ธ๋์์ key collision ์ฒ๋ฆฌ ๋ช ํ (`mode: "merge"`, `"append"`, `"chooseBranch"` ๋ฑ) | |
| - ๋ณํฉ ํ schema๊ฐ ๋ค์ ๋ ธ๋ ์ ๋ ฅ๊ณผ ํธํ | |
| ### 1-3. ๋ถ๊ธฐ/์์ธ ์ฒ๋ฆฌ (5์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ์๋ฏธ ์๋ ์กฐ๊ฑด ๋ถ๊ธฐ | |
| - fallback/default ๊ฒฝ๋ก ์กด์ฌ | |
| #### ์๋ฏธ ์๋ ์กฐ๊ฑด ๋ถ๊ธฐ (3์ ) | |
| - IF / Switch ๋ ธ๋์์ ์กฐ๊ฑด ๋ก์ง ๋ช ํ (์: `intent === "์ง๋ฌธ"` / `response.status === 200`) | |
| - ๋ถ๊ธฐ ํ ๊ฐ ๊ฒฝ๋ก๊ฐ **์๋ฏธ ์๋ ์ฐจ์ด**๋ฅผ ๊ฐ๋ ์ฒ๋ฆฌ๋ก ์ด์ด์ง | |
| #### Fallback / Default ๊ฒฝ๋ก ์กด์ฌ (2์ ) | |
| - Switch ๋ ธ๋์ `default` ์ผ์ด์ค ์กด์ฌ | |
| - IF ๋ ธ๋์ false ๊ฒฝ๋ก์๋ ์ต์ํ์ ์ฒ๋ฆฌ ๋๋ ๋ช ์์ "๋ฌด์๋ต" ๋ ธ๋ | |
| - ์์ธ ๋ฐ์ ์ **์ต์ํ์ ์ฌ์ฉ์ ์๋ต ๋ฐํ** | |
| ## ์ถ๋ ฅ ํ์: | |
| JSON ํ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅํ์ญ์์ค: | |
| { | |
| "๊ตฌ์กฐ_์๊ฒฐ์ฑ_๋ฐ_๋ชจ๋ํ": { | |
| "์ ์ฒด_๊ฒฝ๋ก_์์ฑ๋_๋ฐ_dead๋ ธ๋_์์": <0-3>, | |
| "์ญํ ๊ธฐ๋ฐ_๋ค์ด๋ฐ_๋ชจ๋ํ": <0-2>, | |
| "์๊ณ": <0-5>, | |
| "ํ๊ฐ": "<๊ตฌ์กฐ ์๊ฒฐ์ฑ ๋ฐ ๋ชจ๋ํ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "๋ฐ์ดํฐ_์คํค๋ง_์ผ๊ด์ฑ": { | |
| "key_์ผ๊ด์ฑ": <0-2>, | |
| "๋ถํ์ํ_overwrite_์์_๋ฐ_outputํ๋_๋ณด์กด": <0-2>, | |
| "merge_๋ ธ๋_์ ํฉ์ฑ": <0-1>, | |
| "์๊ณ": <0-5>, | |
| "ํ๊ฐ": "<๋ฐ์ดํฐ ์คํค๋ง ์ผ๊ด์ฑ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "๋ถ๊ธฐ_์์ธ_์ฒ๋ฆฌ": { | |
| "์๋ฏธ์๋_์กฐ๊ฑด_๋ถ๊ธฐ": <0-3>, | |
| "fallback_default_๊ฒฝ๋ก": <0-2>, | |
| "์๊ณ": <0-5>, | |
| "ํ๊ฐ": "<๋ถ๊ธฐ/์์ธ ์ฒ๋ฆฌ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "์ด์ ": <0-15>, | |
| "์ข ํฉ_ํ๊ฐ": "<์ ์ฒด์ ์ธ ํ๊ฐ ์์ฝ>" | |
| } | |
| """ | |
| # ============================================================================= | |
| # 2. ์ ์คํ ์ด์ง ์ ํ ํ์ฉ๋ ์ฌ์ฌ ๊ธฐ์ค (15์ ) | |
| # ============================================================================= | |
| UPSTAGE_CRITERIA = """ | |
| # ์ ์คํ ์ด์ง ์ ํ ํ์ฉ๋ ์ฌ์ฌ ๊ธฐ์ค (15์ ) | |
| โ ๏ธ **์ค์: ์๊ฒฉํ ํ๊ฐ ์์น** | |
| - ์ ์๋ ๋งค์ฐ ์๊ฒฉํ๊ฒ ๋ถ์ฌํ์ญ์์ค. ์๋ฒฝํ์ง ์์ผ๋ฉด ๊ฐ์ ํ์ญ์์ค. | |
| - "๊ฑฐ์ ์์ฑ" ๋๋ "๋๋ถ๋ถ ์ข์"์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ธฐ์ค์ ์ ํํ ์ถฉ์กฑํด์ผ๋ง ์ ์๋ฅผ ๋ถ์ฌํ์ญ์์ค. | |
| - ๋ถํ์คํ๊ฑฐ๋ ๋ช ํํ์ง ์์ ๊ฒฝ์ฐ๋ ๋ฎ์ ์ ์๋ฅผ ๋ถ์ฌํ์ญ์์ค. | |
| - ๊ธฐ์ค์ ์์ ํ ์ถฉ์กฑํ์ง ์์ผ๋ฉด ํด๋น ํญ๋ชฉ์ ๋ํ ์ ์๋ฅผ ๋ถ์ฌํ์ง ๋ง์ญ์์ค. | |
| ์ํฌํ๋ก์ฐ JSON ํ์ผ์ ๋ถ์ํ์ฌ ์ ์คํ ์ด์ง ์ ํ ํ์ฉ๋๋ฅผ ํ๊ฐํ์ญ์์ค. | |
| ## ํ๊ฐ ํญ๋ชฉ: | |
| ### 2-1. API ์ฌ์ฉ ์ ํฉ์ฑ (5์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ๊ณต์ ์๋ํฌ์ธํธ ์ฌ์ฉ | |
| - credential ๋ณด์ | |
| - ๋ชฉ์ ์ ํฉ API ์ ํ | |
| #### ๊ณต์ ์๋ํฌ์ธํธ ์ฌ์ฉ (2์ ) | |
| - `https://api.upstage.ai/v1/solar/...` ๋๋ ๊ณต์ ๋ฌธ์ ๋ช ์ ๊ฒฝ๋ก | |
| - `/chat/completions`, `/document-ai/...` ๋ฑ **๊ณต์ API ์คํ์ ๋ง๋ ๊ฒฝ๋ก** | |
| - custom endpoint / deprecated path ์ฌ์ฉํ๋ฉด ๊ฐ์ | |
| #### Credential ๋ณด์ (1์ ) | |
| - API Key๋ฅผ ์ฝ๋์ ํ๋์ฝ๋ฉํ์ง ์์ (`{{ $credentials.upstageApi.apiKey }}` ๋ฑ credential ์ฐธ์กฐ) | |
| - Authorization ํค๋ ํ์ ์ ํ: `Bearer {{API_KEY}}` | |
| #### ๋ชฉ์ ์ ํฉ API ์ ํ (2์ ) | |
| - **๋ฌธ์ ํ์ฑ** โ Document Parse | |
| - **์๋ฒ ๋ฉ/๊ฒ์** โ Embeddings API | |
| - **๋ํ/์์ฑ** โ Solar Chat | |
| - **์ด๋ฏธ์ง ์ถ์ถ** โ Layout Analysis | |
| - ๋ชฉ์ -API ๋งค์นญ์ด ์ ์ ํ์ง ํ๊ฐ | |
| - ์: "OCR์ด ํ์ํ๋ฐ Chat API๋ง ์ด" ๊ฒฝ์ฐ ๊ฐ์ | |
| ### 2-2. Prompt / System ์ค๊ณ (5์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ๋ช ํํ ์ญํ (system) | |
| - JSON/schema ๊ฐ์ ๋ ฅ | |
| - ๊น๋ํ ํ๋กฌํํธ | |
| #### ๋ช ํํ ์ญํ (system message) (2์ ) | |
| - `messages[0].role === "system"`์ ์ญํ /์ ์ฝ/์ถ๋ ฅ ํ์ ์ ์ | |
| - ์: "๋๋ ํ์๋ก ์์ฑ ์ ๋ฌธ๊ฐ์ ๋๋ค. ์๋ ํ์์ผ๋ก๋ง ์ถ๋ ฅํ์ญ์์ค." | |
| - system message ์์ผ๋ฉด ๊ฐ์ | |
| #### JSON / schema ๊ฐ์ ๋ ฅ (2์ ) | |
| - `response_format: { type: "json_object" }` ๋๋ prompt์ "JSON๋ง ์ถ๋ ฅ" ๋ช ์ | |
| - Structured Output ์ฌ์ฉ ์ `schema` ํ๋ ์ ์ ์ฌ๋ถ | |
| - ์: ์๋ ๋ถ๋ฅ, ํ๋ ์ถ์ถ ์ "๋ฐ๋์ {intent: ..., entities: ...} ํ์" ์ง์ | |
| #### ๊น๋ํ ํ๋กฌํํธ (๋ถํ์ ๋ฐ๋ณต X) (1์ ) | |
| - ๋์ผ ์ง์ ์ค๋ณต ์์ (์: "JSON์ผ๋ก ์ถ๋ ฅํ์ธ์"๋ฅผ system/user ์์ชฝ์ ๋ฐ๋ณต X) | |
| - ํ๋กฌํํธ๊ฐ "๋ช ํยท๊ฐ๊ฒฐยท๊ตฌ์กฐํ"๋์ด ์์ | |
| - Few-shot ์์๊ฐ ์๋ค๋ฉด ์ผ๊ด๋ ํ์ | |
| ### 2-3. ๊ธฐ๋ฅ ์กฐํฉยท์ค์ผ์คํธ๋ ์ด์ (5์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - DPโIEโSolar ๋ฑ ๋จ๊ณ์ ํ์ดํ๋ผ์ธ | |
| - ์ /ํ์ฒ๋ฆฌ ์ ์ | |
| - ์ค๋ณต ํธ์ถ ์์ | |
| #### ๋จ๊ณ์ ํ์ดํ๋ผ์ธ (2์ ) | |
| - ๋ฌธ์ ์ ๋ก๋ โ DP๋ก ํ์ฑ โ ํ ์คํธ ์ถ์ถ โ Solar Chat์ผ๋ก ์์ฝ/๋ถ์ ๊ฐ์ **๋ ผ๋ฆฌ์ ํ๋ฆ** | |
| - ๊ฐ ๋จ๊ณ output์ด ๋ค์ ๋จ๊ณ input์ผ๋ก ์์ฐ์ค๋ฝ๊ฒ ์ ๋ฌ | |
| - ์: DP ๊ฒฐ๊ณผ `text`๋ฅผ Chat API `user` ๋ฉ์์ง์ ์ฝ์ | |
| #### ์ /ํ์ฒ๋ฆฌ ์ ์ (2์ ) | |
| - API ํธ์ถ ์ : ํ ์คํธ ์ ์ , ํ๋ ๋งคํ, validation (Code/Set ๋ ธ๋) | |
| - API ํธ์ถ ํ: JSON ํ์ฑ, ํ์ ํ๋ ์ถ์ถ, ์๋ฌ ํธ๋ค๋ง | |
| - ์: Chat ์๋ต์์ `choices[0].message.content`๋ฅผ ์ถ์ถ โ JSON ํ์ฑ โ ๋ค์ ๋จ๊ณ ์ ๋ฌ | |
| #### ์ค๋ณต ํธ์ถ ์์ (1์ ) | |
| - ๋์ผ ์ ๋ ฅ์ ๋ํด ๊ฐ์ API๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ์ง ์์ | |
| - ๋ถํ์ํ "loop ๋ด ๋ฐ๋ณต API ํธ์ถ" X | |
| - batch ์ฒ๋ฆฌ ๋๋ 1ํ concatenate ํ ํธ์ถ ๊ฐ์ ์ต์ ํ ์๋ ์ ๊ฐ์ | |
| ## ์ถ๋ ฅ ํ์: | |
| JSON ํ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅํ์ญ์์ค: | |
| { | |
| "API_์ฌ์ฉ_์ ํฉ์ฑ": { | |
| "๊ณต์_์๋ํฌ์ธํธ_์ฌ์ฉ": <0-2>, | |
| "credential_๋ณด์": <0-1>, | |
| "๋ชฉ์ _์ ํฉ_API_์ ํ": <0-2>, | |
| "์ฌ์ฉ๋_API_๋ชฉ๋ก": ["<API1>", "<API2>"], | |
| "์๊ณ": <0-5>, | |
| "ํ๊ฐ": "<API ์ฌ์ฉ ์ ํฉ์ฑ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "Prompt_System_์ค๊ณ": { | |
| "๋ช ํํ_์ญํ _system_message": <0-2>, | |
| "JSON_schema_๊ฐ์ ๋ ฅ": <0-2>, | |
| "๊น๋ํ_ํ๋กฌํํธ": <0-1>, | |
| "์๊ณ": <0-5>, | |
| "ํ๊ฐ": "<Prompt/System ์ค๊ณ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "๊ธฐ๋ฅ_์กฐํฉ_์ค์ผ์คํธ๋ ์ด์ ": { | |
| "๋จ๊ณ์ _ํ์ดํ๋ผ์ธ": <0-2>, | |
| "์ ํ์ฒ๋ฆฌ_์ ์ ": <0-2>, | |
| "์ค๋ณต_ํธ์ถ_์์": <0-1>, | |
| "์๊ณ": <0-5>, | |
| "ํ๊ฐ": "<๊ธฐ๋ฅ ์กฐํฉ/์ค์ผ์คํธ๋ ์ด์ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "์ด์ ": <0-15>, | |
| "์ข ํฉ_ํ๊ฐ": "<์ ์ฒด์ ์ธ ํ๊ฐ ์์ฝ>" | |
| } | |
| """ | |
| # ============================================================================= | |
| # 3. ์ค์ฉ์ฑ ์ฌ์ฌ ๊ธฐ์ค (30์ ) | |
| # ============================================================================= | |
| PRACTICALITY_CRITERIA = """ | |
| # ์ค์ฉ์ฑ ์ฌ์ฌ ๊ธฐ์ค (30์ ) | |
| โ ๏ธ **์ค์: ์๊ฒฉํ ํ๊ฐ ์์น** | |
| - ์ ์๋ ๋งค์ฐ ์๊ฒฉํ๊ฒ ๋ถ์ฌํ์ญ์์ค. ์๋ฒฝํ์ง ์์ผ๋ฉด ๊ฐ์ ํ์ญ์์ค. | |
| - "๊ฑฐ์ ์์ฑ" ๋๋ "๋๋ถ๋ถ ์ข์"์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ธฐ์ค์ ์ ํํ ์ถฉ์กฑํด์ผ๋ง ์ ์๋ฅผ ๋ถ์ฌํ์ญ์์ค. | |
| - ๋ถํ์คํ๊ฑฐ๋ ๋ช ํํ์ง ์์ ๊ฒฝ์ฐ๋ ๋ฎ์ ์ ์๋ฅผ ๋ถ์ฌํ์ญ์์ค. | |
| - ๊ธฐ์ค์ ์์ ํ ์ถฉ์กฑํ์ง ์์ผ๋ฉด ํด๋น ํญ๋ชฉ์ ๋ํ ์ ์๋ฅผ ๋ถ์ฌํ์ง ๋ง์ญ์์ค. | |
| ์ ์ถ๋ ํ๋ก์ ํธ ์ค๋ช ์ ๋ถ์ํ์ฌ ๋ค์ ๊ธฐ์ค์ผ๋ก ํ๊ฐํ์ญ์์ค. | |
| ## ํ๊ฐ ํญ๋ชฉ: | |
| ### 3-1. ์ค์ ์ ๋ฌด ์ ์ฉ ๊ฐ๋ฅ์ฑ (10์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ๋ฐ๋ณต ์ ๋ฌด ์ ๊ฑฐ | |
| - ์ค์ ์ฌ์ฉ ์๋๋ฆฌ์ค ์ ๋ช | |
| - ์๊ฐ ์ ๊ฐ ํจ๊ณผ ๋ช ํ | |
| **ํต์ฌ ์ง๋ฌธ:** | |
| - ์ด ์ํฌํ๋ก์ฐ๋ ์ค์ ๋ก **์ฌ๋์ด ํ๋ ์์์ ์ ์ผ๋ง๋ ์ค์ด๋๊ฐ?** | |
| - "์ธ์ /๋๊ฐ/๋ฌด์์" ์ค์ผ ์ ์๋์ง ๋ช ํํ๊ฐ? | |
| - ์๋ํ์ **์๊ฐ ์ ๊ฐยท์ค๋ฅ ๊ฐ์** ํจ๊ณผ๊ฐ ๋ถ๋ช ํ๊ฐ? | |
| #### ๋ฐ๋ณต ์ ๋ฌด ์ ๊ฑฐ (3์ ) | |
| - "๋งค์ผ/๋งค์ฃผ ๋ฐ๋ณต๋๋ ์์ "์ ์๋ํํ๋์ง ๋ช ํ | |
| - ์: ์ผ์ผ ๋ฆฌํฌํธ ์์ฑ, ๋ฌธ์ ์๋ ๋ถ๋ฅ, ์ ๊ธฐ ๋ฐ์ดํฐ ์ง๊ณ ๋ฑ | |
| - **๋จ๋ฐ์ฑ ์์ ์ด ์๋, ์ง์ ์ฌ์ฉ ๊ฐ๋ฅ** | |
| #### ์ค์ ์ฌ์ฉ ์๋๋ฆฌ์ค ์ ๋ช (4์ ) | |
| - "๋๊ฐ / ์ธ์ / ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง" ๊ตฌ์ฒด์ ์์ | |
| - ์: "๊ณ ๊ฐ์ผํฐ ์ง์์ด ๋ฌธ์ ์ ์ ์ ์ฆ์ ์คํ", "๋ง์ผํ ํ์ด ์ฃผ๊ฐ ๋ณด๊ณ ์ ์์ฑ ์ ํ์ฉ" | |
| - ์ฌ์ฉ flow๊ฐ ๋ช ํ (trigger ์กฐ๊ฑด, input ์ถ์ฒ, output ํ์ฉ์ฒ) | |
| #### ์๊ฐ ์ ๊ฐ ํจ๊ณผ ๋ช ํ (3์ ) | |
| - "Before (์๋ ์์ N์๊ฐ) โ After (์๋ํ M๋ถ)" ๊ฐ์ **์ ๋์ ํจ๊ณผ** ์ ์ | |
| - ๋๋ "์ค๋ฅ์จ ๊ฐ์ / ์ผ๊ด์ฑ ํฅ์" ๋ฑ **์ง์ ๊ฐ์ ** ๋ช ์ | |
| - ํจ๊ณผ๊ฐ ์ฒด๊ฐ ๊ฐ๋ฅํ ์์ค | |
| ### 3-2. ์๋ํ ํจ๊ณผ ๋ฐ ์ฌ์ฉ์ ํธ์์ฑ (10์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ์๋ํ ํจ๊ณผ ๋ฐ ํ์ต ํธ์์ฑ | |
| - ์ฌ์ฌ์ฉ ๋๋ ์ผ๋ฐํ ๊ฐ๋ฅํ ๊ตฌ์กฐ | |
| **ํต์ฌ ์ง๋ฌธ:** | |
| - "์ด ์๋ํ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅธ ์ฌ๋ยท๋ค๋ฅธ ์กฐ์งยท๋ค๋ฅธ ๋ฐ์ดํฐ์์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ฐ?" | |
| - "ํน์ ์ํฉ์๋ง ๋์ํ๋ ํดํน ๊ฐ์ ๊ตฌ์กฐ๊ฐ ์๋๊ฐ?" | |
| - "์ ๋ ฅ ๊ตฌ์กฐยท์ถ์ํยท๊ตฌ์ฑ ์์๊ฐ ํ์ฅ์ฑ์ ๊ณ ๋ คํ๋๊ฐ?" | |
| #### ์ฌ์ฌ์ฉยท์ผ๋ฐํ ๊ฐ๋ฅ์ฑ (5์ ) | |
| - ํน์ ํ์ฌ/ํ์๋ง ์ข ์๋ ํ๋์ฝ๋ฉ ์ต์ํ | |
| - ์: "์ฐ๋ฆฌ ํ์ฌ ํน์ DB ์คํค๋ง์๋ง ๋์" โ ๋ฎ์ ์ ์ | |
| - ์ ๋ ฅ ํฌ๋งท๋ง ๋ง์ถ๋ฉด ๋ค๋ฅธ ๊ณณ์์๋ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ โ ๋์ ์ ์ | |
| - workflow๊ฐ **์ผ๋ฐํ๋ ๊ตฌ์กฐ** (์: ํ์ผ ์ ๋ก๋ โ ํ์ฑ โ ๋ถ์ โ ์ถ๋ ฅ) | |
| #### ์๋ํ ํจ๊ณผ ๋ฐ ํ์ต ํธ์์ฑ (5์ ) | |
| - ์๋ํ๊ฐ ์ค์ ๋ก ์๊ฐ์ ์ ์ฝํ๊ฑฐ๋ ํจ์จ์ ๋์ด๋๊ฐ? | |
| - ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์๋ ๊ตฌ์กฐ์ธ๊ฐ? | |
| - ํ์ต ํ๋ฆ์ ๋ฐฉํดํ์ง ์๊ณ ์์ฐ์ค๋ฝ๊ฒ ๋ณด์กฐํ๋ ๊ธฐ๋ฅ์ธ๊ฐ? | |
| ### 3-3. ์ฌ์ฉ์ ํธ์์ฑ (10์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ์ต์ข ์ฌ์ฉ์ ์ ์ฅ์์ ์ง๊ด์ ์ผ๋ก ์ธ ์ ์๋๊ฐ? | |
| **ํต์ฌ ์ง๋ฌธ:** | |
| - "๊ธฐ์ ์ง์์ด ์๋ ์ฌ์ฉ์๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๊ฐ?" | |
| - "์ ๋ ฅ์ด ๊ฐ๋จํ๊ณ ์ถ๋ ฅ์ด ๋ช ํํ๊ฐ?" | |
| - "์๋ฌ ๋ฐ์ ์ ์ฌ์ฉ์๊ฐ ์ดํดํ ์ ์๋ ๋ฉ์์ง๊ฐ ์ ๊ณต๋๋๊ฐ?" | |
| #### ์ง๊ด์ ์ธ ์ ๋ ฅ ๋ฐฉ์ (4์ ) | |
| - ์ฌ์ฉ์๊ฐ ์ ๊ณตํด์ผ ํ๋ ์ ๋ ฅ์ด ๋ช ํํ๊ณ ๊ฐ๋จ | |
| - ์: "ํ์ผ ์ ๋ก๋๋ง ํ๋ฉด ๋จ", "๊ฐ๋จํ ์ง๋ฌธ ์ ๋ ฅ" | |
| - ๋ณต์กํ ์ค์ ์ด๋ ๊ธฐ์ ์ง์ ๋ถํ์ | |
| #### ๋ช ํํ ์ถ๋ ฅ ๋ฐ ํผ๋๋ฐฑ (3์ ) | |
| - ๊ฒฐ๊ณผ๋ฌผ์ด ์ฌ์ฉ์๊ฐ ์ดํดํ๊ธฐ ์ฌ์ด ํํ๋ก ์ ๊ณต | |
| - ์: "์์ฝ๋ ํ ์คํธ", "๋ถ๋ฅ ๊ฒฐ๊ณผ์ ์ ๋ขฐ๋", "๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ" | |
| - ์งํ ์ํฉ์ด๋ ์๋ฃ ์๋ฆผ ์ ๊ณต | |
| #### ์๋ฌ ์ฒ๋ฆฌ ๋ฐ ๊ฐ์ด๋ (3์ ) | |
| - ์๋ฌ ๋ฐ์ ์ ์ฌ์ฉ์ ์นํ์ ์ธ ๋ฉ์์ง ์ ๊ณต | |
| - ์: "ํ์ผ ํ์์ด ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค. PDF ๋๋ DOCX๋ฅผ ์ ๋ก๋ํด์ฃผ์ธ์" | |
| - ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ๋จํ ๊ฐ์ด๋๋ ์์ ์ ๊ณต | |
| ## ์ถ๋ ฅ ํ์: | |
| JSON ํ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅํ์ญ์์ค: | |
| { | |
| "์ค์ _์ ๋ฌด_์ ์ฉ_๊ฐ๋ฅ์ฑ": { | |
| "๋ฐ๋ณต_์ ๋ฌด_์ ๊ฑฐ": <0-3>, | |
| "์ค์ _์ฌ์ฉ_์๋๋ฆฌ์ค_์ ๋ช ": <0-4>, | |
| "์๊ฐ_์ ๊ฐ_ํจ๊ณผ_๋ช ํ": <0-3>, | |
| "์๊ณ": <0-10>, | |
| "ํ๊ฐ": "<์ค์ ์ ๋ฌด ์ ์ฉ ๊ฐ๋ฅ์ฑ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "์๋ํ_ํจ๊ณผ_๋ฐ_์ฌ์ฉ์_ํธ์์ฑ": { | |
| "์ฌ์ฌ์ฉ_์ผ๋ฐํ_๊ฐ๋ฅ์ฑ": <0-5>, | |
| "์๋ํ_ํจ๊ณผ_๋ฐ_ํ์ต_ํธ์์ฑ": <0-5>, | |
| "์๊ณ": <0-10>, | |
| "ํ๊ฐ": "<์๋ํ ํจ๊ณผ ๋ฐ ์ฌ์ฉ์ ํธ์์ฑ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "์ฌ์ฉ์_ํธ์์ฑ": { | |
| "์ง๊ด์ ์ธ_์ ๋ ฅ_๋ฐฉ์": <0-4>, | |
| "๋ช ํํ_์ถ๋ ฅ_๋ฐ_ํผ๋๋ฐฑ": <0-3>, | |
| "์๋ฌ_์ฒ๋ฆฌ_๋ฐ_๊ฐ์ด๋": <0-3>, | |
| "์๊ณ": <0-10>, | |
| "ํ๊ฐ": "<์ฌ์ฉ์ ํธ์์ฑ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "์ด์ ": <0-30>, | |
| "์ข ํฉ_ํ๊ฐ": "<์ ์ฒด์ ์ธ ํ๊ฐ ์์ฝ>" | |
| } | |
| """ | |
| # ============================================================================= | |
| # 4. ๋ฌธ์ ํด๊ฒฐ ์ ๊ทผ๋ฒ ์ฌ์ฌ ๊ธฐ์ค (30์ ) | |
| # ============================================================================= | |
| PROBLEM_SOLVING_CRITERIA = """ | |
| # ์ฐฝ์์ฑ / ๋ฌธ์ ํด๊ฒฐ ์ ๊ทผ๋ฒ ์ฌ์ฌ ๊ธฐ์ค (20์ ) | |
| โ ๏ธ **์ค์: ์๊ฒฉํ ํ๊ฐ ์์น** | |
| - ์ ์๋ ๋งค์ฐ ์๊ฒฉํ๊ฒ ๋ถ์ฌํ์ญ์์ค. ์๋ฒฝํ์ง ์์ผ๋ฉด ๊ฐ์ ํ์ญ์์ค. | |
| - "๊ฑฐ์ ์์ฑ" ๋๋ "๋๋ถ๋ถ ์ข์"์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ธฐ์ค์ ์ ํํ ์ถฉ์กฑํด์ผ๋ง ์ ์๋ฅผ ๋ถ์ฌํ์ญ์์ค. | |
| - ๋ถํ์คํ๊ฑฐ๋ ๋ช ํํ์ง ์์ ๊ฒฝ์ฐ๋ ๋ฎ์ ์ ์๋ฅผ ๋ถ์ฌํ์ญ์์ค. | |
| - ๊ธฐ์ค์ ์์ ํ ์ถฉ์กฑํ์ง ์์ผ๋ฉด ํด๋น ํญ๋ชฉ์ ๋ํ ์ ์๋ฅผ ๋ถ์ฌํ์ง ๋ง์ญ์์ค. | |
| ์ ์ถ๋ ํ๋ก์ ํธ ์ค๋ช ์ ๋ถ์ํ์ฌ ๋ค์ ๊ธฐ์ค์ผ๋ก ํ๊ฐํ์ญ์์ค. | |
| ## ํ๊ฐ ํญ๋ชฉ: | |
| ### 4-1. ๋ฌธ์ ์ ์์ ๋ ์ฐฝ์ฑ (10์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ์๋ํ ๋์ ์ ์ ์ด ์๋กญ๊ฑฐ๋, ์ค์ง์ ๋ฌธ์ ๋ฅผ ์ ํฌ์ฐฉํ๋๊ฐ? | |
| **ํต์ฌ ์ง๋ฌธ:** | |
| - "์ด ๋ฌธ์ ๋ ์ค์ ์ฌ์ฉ์ยท์กฐ์ง์ด ๊ฒช๋ '์ง์ง ๋ฌธ์ '์ธ๊ฐ?" | |
| - "๋ฌธ์ ์ ์ ์๊ฐ ์ค์ ์ํฉ๊ณผ ๋ง์๋จ์ด์ง๋๊ฐ?" | |
| - "๋ฌธ์ ์ ์์ ๋ฐฉ์์ด๋ ๊ด์ ์์ ๋ ์ฐฝ์ฑ์ด ์๋๊ฐ?" | |
| #### ์ค์ง์ ๋ฌธ์ ํฌ์ฐฉ (5์ ) | |
| - "~๊ฐ ๋ถํธํ๋ค / ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค / ์ค์๊ฐ ์ฆ๋ค" ๊ฐ์ **๊ตฌ์ฒด์ ๋ฌธ์ ์ํฉ** ์ ์ | |
| - ์ถ์์ ("ํจ์จ ํฅ์") ์๋, ์ธก์ ๊ฐ๋ฅํ ๋ฌธ์ (์: "ํ๋ฃจ 2์๊ฐ ์์", "์ค๋ฅ์จ 30%") | |
| - ๋ฌธ์ ์ ์๊ฐ ๋ช ํํ๊ณ ๊ณต๊ฐ ๊ฐ๋ฅ | |
| - ์ค์ ์ฌ์ฉ์์ pain point๋ฅผ ์ ํํ ํ์ | |
| #### ์ฐจ๋ณํ๋ ๊ด์ ๋ฐ ๋ ์ฐฝ์ฑ (5์ ) | |
| - ๋จ์ "์ด๋ฐ ๊ธฐ๋ฅ ์์ผ๋ฉด ์ข๊ฒ ๋ค"๊ฐ ์๋, **์ ์ง๊ธ ๋ฐฉ์์ด ํ๊ณ์ธ์ง ๋ถ์** | |
| - ๊ฒฝ์ ์๋น์ค/๊ธฐ์กด ๋ฐฉ๋ฒ ๋๋น ์ฐจ๋ณ์ ์ ์ | |
| - ๋ฐ์ดํฐ๋ ์ฌ๋ก ๊ธฐ๋ฐ ๊ทผ๊ฑฐ (์: "ํ์ฌ ์๊ธฐ ์์ ์ 20๋ถ ์์, ์๋ํ ์ 2๋ถ ์์") | |
| - ๋ฌธ์ ๋ฅผ ๋ฐ๋ผ๋ณด๋ ์๋ก์ด ์๊ฐ์ด๋ ์ ๊ทผ ๋ฐฉ์ | |
| ### 4-2. ์๋ฃจ์ ๊ตฌ์ฑ์ ์ฐธ์ ํจ (10์ ) | |
| **ํต์ฌ ํ๊ฐ ํฌ์ธํธ:** | |
| - ๊ธฐ์กด ๋ฐฉ๋ฒ๊ณผ ์ฐจ๋ณํ๋ ์ ๊ทผ์ ํ๋๊ฐ? | |
| - ์ ํ๋ ๋ ธ๋/๋๊ตฌ ๋ด์์ ์ฐฝ์์ ํด๊ฒฐ์ ์๋ํ๋๊ฐ? | |
| **ํต์ฌ ์ง๋ฌธ:** | |
| - "๋จ์ํ API๋ฅผ ๋ฌถ์ด๋์ ๊ตฌ์กฐ์ธ๊ฐ?" | |
| - "๋ฌธ์ ๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ฐ๋ผ๋ณด๊ณ ํด๊ฒฐํ๋ ค ํ๋์ง ๋ ์ฐฝ์ฑ์ด ์๋๊ฐ?" | |
| - "๊ธฐ์ ๊ตฌ์ฑ์ ์กฐํฉ์ด๋ ์๊ฐ์ด ์๋กญ๊ณ ์ค๋๋ ฅ์ด ์๋๊ฐ?" | |
| #### ์ฐจ๋ณํ๋ ์ ๊ทผ (5์ ) | |
| - "DP ํธ์ถ + Chat ํธ์ถ"๋ง์ผ๋ก ๋๋๋ ๊ฒ ์๋, **์ ๋ต์ ์กฐํฉ** | |
| - ์: โ ๋ฌธ์ ํ์ฑ โ โก ํค์๋ ์ถ์ถ โ โข ์ธ๋ถ DB ๊ฒ์ โ โฃ ์ต์ข ๋ณด๊ณ ์ ์์ฑ ๊ฐ์ **๋ค๋จ๊ณ ๋ก์ง** | |
| - ๋๋ "์กฐ๊ฑด ๋ถ๊ธฐ + ๋ฐ๋ณต + ๋ณํฉ" ๊ฐ์ **๋ณต์ก๋ ์๋ ๊ตฌ์กฐ** | |
| - ๊ฐ ๋จ๊ณ๊ฐ ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ฒฐ๋๊ณ ํ์์ฑ์ด ๋ช ํ | |
| #### ์ฐฝ์์ ํด๊ฒฐ (5์ ) | |
| - ๊ธฐ์กด ํ ํ๋ฆฟ/์์ ๋ฅผ ๊ทธ๋๋ก ๊ฐ์ ธ์จ ๊ฒ ์๋, **๋ฌธ์ ํด๊ฒฐ์ ํนํ๋ ์ค๊ณ** | |
| - ์: "intent ๋ถ๋ฅ ํ ๊ฐ intent๋ณ ๋ง์ถค ํ๋กฌํํธ" / "๋ฌธ์ ํ์ ๋ณ ๋ค๋ฅธ ํ์ฑ ์ ๋ต" ๋ฑ | |
| - ์ฐฝ์์ ์์ด๋์ด๋ ๋ ํนํ workflow ํจํด (์: ํผ๋๋ฐฑ ๋ฃจํ, ๋ค์ค ์์ด์ ํธ ์๋ฎฌ๋ ์ด์ ๋ฑ) | |
| - ์ ํ๋ ๋๊ตฌ ๋ด์์ ์ฐฝ์์ ํด๊ฒฐ์ ์๋ํ๋๊ฐ? | |
| ## ์ถ๋ ฅ ํ์: | |
| JSON ํ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅํ์ญ์์ค: | |
| { | |
| "๋ฌธ์ _์ ์์_๋ ์ฐฝ์ฑ": { | |
| "์ค์ง์ _๋ฌธ์ _ํฌ์ฐฉ": <0-5>, | |
| "์ฐจ๋ณํ๋_๊ด์ _๋ฐ_๋ ์ฐฝ์ฑ": <0-5>, | |
| "์๊ณ": <0-10>, | |
| "ํ๊ฐ": "<๋ฌธ์ ์ ์์ ๋ ์ฐฝ์ฑ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "์๋ฃจ์ _๊ตฌ์ฑ์_์ฐธ์ ํจ": { | |
| "์ฐจ๋ณํ๋_์ ๊ทผ": <0-5>, | |
| "์ฐฝ์์ _ํด๊ฒฐ": <0-5>, | |
| "์๊ณ": <0-10>, | |
| "ํ๊ฐ": "<์๋ฃจ์ ๊ตฌ์ฑ์ ์ฐธ์ ํจ ์ ์ฒด์ ๋ํ ๊ตฌ์ฒด์ ํ๊ฐ>" | |
| }, | |
| "์ด์ ": <0-20>, | |
| "์ข ํฉ_ํ๊ฐ": "<์ ์ฒด์ ์ธ ํ๊ฐ ์์ฝ>" | |
| } | |
| """ | |
| # ============================================================================= | |
| # ํ๊ฐ ์ฌ๊ฒํ ๊ธฐ์ค | |
| # ============================================================================= | |
| REVIEW_CRITERIA = """ | |
| # ํ๊ฐ ์ฌ๊ฒํ ๊ธฐ์ค | |
| ๋ค์ ํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ฌ๊ฒํ ํ๊ณ , ์ ์๊ฐ ์ ์ ํ์ง ํ์ธํ์ญ์์ค. | |
| ## ์๋ณธ ๋ฐ์ดํฐ: | |
| {data} | |
| ## ์ฌ์ฌ ๊ธฐ์ค: | |
| {criteria} | |
| ## ์ด๊ธฐ ํ๊ฐ ๊ฒฐ๊ณผ: | |
| {initial_score} | |
| ## ์ฌ๊ฒํ ์์ฒญ์ฌํญ: | |
| โ ๏ธ **์ค์: ์๊ฒฉํ ์ฌ๊ฒํ ์์น** | |
| - ์ด๊ธฐ ํ๊ฐ๊ฐ ๋๋ฌด ํํ๋ค๋ฉด ๋ฐ๋์ ์ ์๋ฅผ ๋ฎ์ถ์ญ์์ค. | |
| - "๊ฑฐ์ ์์ฑ" ๋๋ "๋๋ถ๋ถ ์ข์"์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๊ธฐ์ค์ ์์ ํ ์ถฉ์กฑํด์ผ๋ง ์ ์๋ฅผ ๋ถ์ฌํ์ญ์์ค. | |
| - ๋ถํ์คํ๊ฑฐ๋ ๋ช ํํ์ง ์์ ๊ฒฝ์ฐ๋ ๋ณด์์ ์ผ๋ก ๋ฎ์ ์ ์๋ฅผ ์ ์งํ๊ฑฐ๋ ๋ ๋ฎ์ถ์ญ์์ค. | |
| 1. ์ ์๊ฐ ์ฌ์ฌ ๊ธฐ์ค์ ๋ถํฉํ๋๊ฐ? (๋๋ฌด ํํ์ง ์์๊ฐ?) | |
| 2. ํ๊ฐ๊ฐ ๋๋ฌด ๊ด๋ํ์ง ์์๊ฐ? (์๊ฒฉํ๊ฒ ํ๊ฐ๋์๋๊ฐ?) | |
| 3. ๋ชจ๋ ํญ๋ชฉ์ด ๊ณต์ ํ๊ณ ์๊ฒฉํ๊ฒ ํ๊ฐ๋์๋๊ฐ? | |
| 4. ํ๊ฐ ๊ทผ๊ฑฐ๊ฐ ์ถฉ๋ถํ ๊ตฌ์ฒด์ ์ธ๊ฐ? | |
| 5. ์ธ๋ถ ํญ๋ชฉ ์ ์์ ํฉ๊ณ๊ฐ ์๊ณ/์ด์ ๊ณผ ์ผ์นํ๋๊ฐ? | |
| 6. ์ด๊ธฐ ํ๊ฐ๊ฐ ๋๋ฌด ํํ๋ค๋ฉด ๋ฐ๋์ ์ ์๋ฅผ ๋ฎ์ถ์๋๊ฐ? | |
| ## ์ถ๋ ฅ ํ์: | |
| JSON ํ์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅํ์ญ์์ค: | |
| {{ | |
| "์ฌ๊ฒํ _๊ฒฐ๊ณผ": "<์ ์ง|์์ >", | |
| "์์ _ํ์_์ด์ ": "<์์ ์ด ํ์ํ ๊ฒฝ์ฐ, ๊ทธ ์ด์ >", | |
| "์ต์ข _์ ์": {{ | |
| ... (์๋ณธ๊ณผ ๋์ผํ ํ์์ ์ ์ ๊ฐ์ฒด, ํ์์ ์์ ๋ ์ ์) | |
| }}, | |
| "์ฌ๊ฒํ _์๊ฒฌ": "<์ฌ๊ฒํ ์๊ฒฌ>" | |
| }} | |
| """ | |