๐ TL;DR
JSON ๋ชจ๋๋ JSON ๊ตฌ๋ฌธ์ ๊ฐ์ ํ์ง๋ง ์คํค๋ง ์ค์๋ ๋ณด์ฅํ์ง ์์ต๋๋ค โ ํ๋ ๋๋ฝ, ์๋ชป๋ ํ์ , ์ ํจํ์ง ์์ enum ๊ฐ์ ํ๋กฌํํธ ์์ ์ด ํ์ํฉ๋๋ค. ์ธ ๊ฐ์ง ๊ธฐ๋ฒ์ผ๋ก ์ด ๊ฒฉ์ฐจ๋ฅผ ํด์ํ ์ ์์ต๋๋ค: (1) ํ๋กฌํํธ์ JSON ํ ํ๋ฆฟ์ผ๋ก ์คํค๋ง๋ฅผ ์ง์ ์๋ฒ ๋ฉํ๊ธฐ, (2) ์ ํจํ ์ถ๋ ฅ ์์ ํ๋ ํฌํจํ๊ธฐ, (3) ํ์ ยทํฌ๋งทยทnull ์ฒ๋ฆฌ๋ฅผ ๋ค๋ฃจ๋ ํ๋๋ณ ์ง์์ฌํญ ์ถ๊ฐํ๊ธฐ. ๋ฐฐํฌ ์ 20๊ฐ ์ผ์ด์ค ํ ์คํธ ์ธํธ์์ 95% ์ด์์ ํต๊ณผ์จ์ ๋ชฉํ๋ก ํ์ญ์์ค. API ๊ฐ์ ์๋ ์์ ํ ํ๋กฌํํธ์๋ JSON ๋์ YAML์ ์ฌ์ฉํ์ญ์์ค โ ๋ชจ๋ธ์ด ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ๋ ์ ๊ฒ ์์ฑํฉ๋๋ค.
ํ๋กฌํํธ ์ค๊ณ๊ฐ ๊ตฌ์กฐํ ์ถ๋ ฅ ์ ๋ขฐ๋๋ฅผ ๊ฒฐ์ ํฉ๋๋ค
๐ In One Sentence
๊ตฌ์กฐํ ์ถ๋ ฅ ์ ๋ขฐ๋๋ ํ์ฑ ๊ฐ๋ฅํ๊ณ , ๋ชจ๋ ํ์ ํ๋๋ฅผ ํฌํจํ๋ฉฐ, ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ฉํ๊ณ , ์ ํจํ enum ๊ฐ์ ๊ฐ์ง ๋ชจ๋ธ ์๋ต์ ๋น์จ์ ๋๋ค โ JSON ๋ชจ๋๋ ์ด ๋ค ๊ฐ์ง ์ค ์ฒซ ๋ฒ์งธ๋ง ๋ณด์ฅํฉ๋๋ค.
๐ฌ In Plain Terms
JSON ๋ชจ๋๋ฅผ ๋ง์ถค๋ฒ ๊ฒ์ฌ๊ธฐ๋ผ๊ณ ์๊ฐํ์ญ์์ค: ๊ตฌ๋ฌธ ์ค๋ฅ๋ ์ก์ง๋ง ์๋ฏธ ์ค๋ฅ๋ ์ก์ง ๋ชปํฉ๋๋ค. ๋ฌธ์๋ ๋ง์ถค๋ฒ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ๊ณ ๋ ์ฌ์ ํ ํ๋ฆด ์ ์์ต๋๋ค. JSON ๋ชจ๋์๋ง ์์กดํ๋ ํ๋กฌํํธ๋ ๋ง์ถค๋ฒ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ ๋ฌธ์์ ๊ฐ์ต๋๋ค โ ๊ตฌ์กฐ์ ์ผ๋ก ์ ํจํ์ง๋ง ์ ์ฌ์ ์ผ๋ก ๋ถ์์ ํ๊ฑฐ๋ ์๋ชป๋ ํ์ ์ผ ์ ์์ต๋๋ค.
JSON ๋ชจ๋์ tool_use API๋ ํ์ฑ ๊ฐ๋ฅํ JSON์ ๊ฐ์ ํ์ง๋ง ํ๋ ์์ฑ๋, ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ํ์ , ์ ํจํ enum ๊ฐ์ ๋ณด์ฅํ์ง ์์ต๋๋ค โ ์ด๋ฌํ ์คํจ๋ API ๋ณ๊ฒฝ์ด ์๋ ํ๋กฌํํธ ์์ค์ ์์ ์ด ํ์ํฉ๋๋ค. ๊ฐ์ฅ ํํ ๊ตฌ์กฐํ ์ถ๋ ฅ ์คํจ๋ ๊ตฌ๋ฌธ์ ์ ํจํ JSON ๋ด๋ถ์์ ๋ฐ์ํฉ๋๋ค: ๋ชจ๋ธ์ด ์ ํ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ๋๋ฝ๋ ํ์ ํ๋, ISO 8601 ๋์ ์๋์ ๋ฌธ์์ด("์ง๋ ํ์์ผ")๋ก ํฌ๋งท๋ ๋ ์ง, ์คํ๋ ์ฝ์ด๊ฐ ์๋ enum ๊ฐ, null ๋์ ๋น ๋ฌธ์์ด์ ๋ฐํํ๋ nullable ํ๋.
์ธ ๊ฐ์ง ํ๋กฌํํธ ์์ค ๊ฐ์ ์ด ์ ๋ขฐ๋ ๊ฒฉ์ฐจ๋ฅผ ์ผ๊ด๋๊ฒ ํด์ํฉ๋๋ค. ์คํค๋ง ์๋ฒ ๋ฉ์ ์ถ๋ ฅ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ๊ฒ ํฉ๋๋ค. ์ ํจํ ์ถ๋ ฅ ์์ ํ๋๊ฐ ํฌ๋งท ๋ชจํธ์ฑ์ ์ ๊ฑฐํฉ๋๋ค. ํ๋ ์์ค ์ง์์ฌํญ์ด ํ์ ๋ฐ null ์ฒ๋ฆฌ ์ค๋ฅ๋ฅผ ์์ฑ๋๋ค. ์ด ์ธ ๊ฐ์ง๋ฅผ ํฉ์น๋ฉด ๋ค์ดํฐ๋ธ JSON ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ถ์ ๊ด๊ณ์์ด GPT-5.5, Claude 4.6 Sonnet, Gemini 2.5 Pro์์ ๊ตฌ์กฐํ ์ถ๋ ฅ ์ ๋ขฐ๋๋ฅผ 95% ์ด์์ผ๋ก ๋์ ๋๋ค.
| ์คํจ ์ ํ | ํ๋กฌํํธ์์์ ์์ธ | ํ๋กฌํํธ ์์ |
|---|---|---|
| ํ์ ํ๋ ๋๋ฝ | ๋ชจ๋ธ์ด ์์ฐ์ด ์ค๋ช ์์ ํ๋๊ฐ ์ ํ์ ์ด๋ผ๊ณ ์ถ๋ก ํจ | ๊ฐ ํ์ ํ๋๋ฅผ ๋ช ์์ ์ผ๋ก ํ์: "title REQUIRED" ๋๋ ํ์ ํ๋๋ฅผ ๋ณ๋๋ก ๋์ด |
| ์๋ชป๋ ๋ฐ์ดํฐ ํ์ | ํ์ ์ด๋ ธํ ์ด์ ์๋ ๋ชจํธํ ํ๋๋ช | ํ๋กฌํํธ์ ํ์ ์ด๋ ธํ ์ด์ ์ถ๊ฐ: "amount (integer, not string)" |
| ์ ํจํ์ง ์์ enum ๊ฐ | enum์ด ์์ ํ ๋์ด๋์ง ์์ ๋ชจ๋ธ์ด ๊ทธ๋ด๋ฏํ ๊ฐ์ ๋ง๋ค์ด๋ | ๋ชจ๋ enum ๊ฐ์ ๋ช ์์ ์ผ๋ก ๋์ด: "status: one of 'active', 'inactive', 'pending'" |
| null vs ๋น ๋ฌธ์์ด ํผ๋ | null๊ณผ ""๋ฅผ ๊ตฌ๋ถํ๋ ์ง์์ฌํญ ์์ | "์ ์ ์์ผ๋ฉด null์ ๋ฐํํ์ญ์์ค. ์ ์ ์๋ ๊ฐ์ ๋น ๋ฌธ์์ด์ ์ ๋ ๋ฐํํ์ง ๋ง์ญ์์ค." ์ถ๊ฐ |
| ์ ์ธ๋์ง ์์ ์ถ๊ฐ ํ๋ | ๋ชจ๋ธ์ด ์คํค๋ง์ ์๋ ์ ์ฉํ ์ปจํ ์คํธ๋ฅผ ์ถ๊ฐํจ | "์ง์ ๋ ํ๋๋ง ๋ฐํํ์ญ์์ค. ์คํค๋ง์ ๋์ด๋์ง ์์ ํ๋๋ฅผ ์ถ๊ฐํ์ง ๋ง์ญ์์ค." ์ถ๊ฐ |
๐ JSON ๋ชจ๋๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค
API ๊ฐ์ JSON ๋ชจ๋๋ฅผ ์ฌ์ฉํ ๋๋ ์คํค๋ง-์ธ-ํ๋กฌํํธ, ํ๋ ์ง์์ฌํญ, ์ถ๋ ฅ ์์๊ฐ ํ์ํฉ๋๋ค. JSON ๋ชจ๋์ ํ๋กฌํํธ ์คํค๋ง ์ค๊ณ๋ ์ํธ ๋ณด์์ ์ด๋ฉฐ ๋์์ด ์๋๋๋ค. JSON ๋ชจ๋๋ ๊ตฌ๋ฌธ ์คํจ๋ฅผ ๋ฐฉ์งํ๊ณ ํ๋กฌํํธ ์ค๊ณ๋ ์ค์ ์คํจ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
ํ๋กฌํํธ์ ์คํค๋ง๋ฅผ ์ง์ ์๋ฒ ๋ฉํ๊ธฐ
์์ ์ถ๋ ฅ ์คํค๋ง๋ฅผ ์์ฐ์ด ์ค๋ช ์ด ์๋ JSON ํ ํ๋ฆฟ์ผ๋ก ํ๋กฌํํธ์ ์ง์ ์๋ฒ ๋ฉํ์ญ์์ค. ์์ฑ ์ ์ ๊ตฌ์กฐ๋ฅผ ํ์ธํ ๋ชจ๋ธ์ ์ฐ๋ฌธ ์ค๋ช ๋ง ๋ฐ์ ๋ชจ๋ธ๋ณด๋ค ํ๋ ๋๋ฝ๊ณผ ํ์ ์ค๋ฅ๋ฅผ ๋ ์ ๊ฒ ๋ง๋ค์ด๋ ๋๋ค.
์คํค๋ง-์ธ-ํ๋กฌํํธ๋ ์ถ๋ ฅ์์ ์์ํ๋ ์ ํํ ํฌ๋งท์ ์ฌ์ฉํฉ๋๋ค: ํ๋๋ช , ์ค์ฒฉ ๊น์ด, ๊ฐ ํ๋ ์ด์คํ๋. ์คํค๋ง ํ ํ๋ฆฟ์ ์์ ์ง์ ๋ค์, ์์ ์์ ๋ฐฐ์นํ์ญ์์ค. ์์ ํ์ ์ ์ ๋ฌํ๋ ํ๋ ์ด์คํ๋ ๊ฐ์ ์ฌ์ฉํ์ญ์์ค: `"amount": 0`์ ์ ์๋ฅผ, `"amount": 0.00`์ ๋ถ๋์์์ ์, `"created_at": "YYYY-MM-DDTHH:MM:SSZ"`๋ ์์ํ๋ ISO 8601 ํฌ๋งท์ ์ ๋ฌํฉ๋๋ค.
๐ TypeScript ์คํ์ผ ํ์ ์ด๋ ธํ ์ด์ ์ฌ์ฉ
JSON ๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์๋ ํ๋กฌํํธ์์๋ ์คํค๋ง ํ ํ๋ฆฟ ๋ด๋ถ์ TypeScript ์คํ์ผ ํ์ ์ด๋ ธํ ์ด์ ์ ์ฃผ์์ผ๋ก ์ถ๊ฐํ์ญ์์ค: `"amount": 0 // float, USD, ์์์ 2์๋ฆฌ`. ์ด๋ ๊ฒ ํ๋ฉด ๋ณ๋์ ํ๋ ์ง์์ฌํญ ์น์ ์์ด๋ ์คํค๋ง ๊ตฌ์กฐ ๋ด์ ํ์ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
๐ ํ๋ ์์๊ฐ ์ค์ํฉ๋๋ค
์คํค๋ง ํ ํ๋ฆฟ์์ ํ์ ํ๋๋ฅผ ๋จผ์ , ์ ํ์ ํ๋๋ฅผ ๋ค์์, nullable ํ๋๋ฅผ ๋ง์ง๋ง์ ๋์ดํ์ญ์์ค. ๋ชจ๋ธ์ ๋ฌด์์ ํฌํจํ ์ง ๊ฒฐ์ ํ ๋ ์์ ๋์จ ์์์ ๋ ๋ง์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํฉ๋๋ค โ ์ฒซ ๋ฒ์งธ๋ก ๋์ด๋ nullable ํ๋๋ ๋ชจ๋ธ์ด ๊ฐ์ ๋ํด ๋ถํ์คํ ๋ ๋์ค์ ๋์ด๋ ํ์ ํ๋๋ณด๋ค ๋๋ฝ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
โ ์์ฐ์ด ์ค๋ช ๋ง ์ฌ์ฉ
๋ค์ ํ ์คํธ์์ ์ฃผ๋ฌธ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ์ถํ์ฌ JSON์ผ๋ก ๋ฐํํ์ญ์์ค. ์ฃผ๋ฌธ ID, ๊ณ ๊ฐ๋ช , ์ด ๊ธ์ก, ์ฃผ๋ฌธ ํญ๋ชฉ, ์ฃผ๋ฌธ ์ํ๋ฅผ ํฌํจํ์ญ์์ค. ํ ์คํธ: {{text}}
โ JSON ํ ํ๋ฆฟ์ผ๋ก ์คํค๋ง ์๋ฒ ๋ฉ
๋ค์ ํ ์คํธ์์ ์ฃผ๋ฌธ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ์ถํ์ฌ ๋ค์ ์คํค๋ง์ ์ ํํ ์ผ์นํ๋ JSON์ผ๋ก ๋ฐํํ์ญ์์ค: { "order_id": "string", "customer_name": "string", "total_amount": 0.00, "status": "string", "items": [ { "name": "string", "quantity": 0, "unit_price": 0.00 } ] } ์ ํจํ JSON๋ง ๋ฐํํ์ญ์์ค. JSON ๊ฐ์ฒด ์ธ๋ถ์ ํ ์คํธ๋ฅผ ํฌํจํ์ง ๋ง์ญ์์ค. ํ ์คํธ: {{text}}
์ ํจํ ์ถ๋ ฅ ์์ ํ๋ ์ ์ํ๊ธฐ
ํ๋กฌํํธ์ ๊ตฌ์ฒด์ ์ด๊ณ ์ค์ ์ ์ธ ์ถ๋ ฅ ์์ ํ๋๋ฅผ ์ถ๊ฐํ๋ฉด ์คํค๋ง๋ง ์๋ ํ๋กฌํํธ๋ณด๋ค ๊ตฌ์กฐํ ์ถ๋ ฅ ์ ๋ขฐ๋๊ฐ 5โ8 ํผ์ผํธ ํฌ์ธํธ ๋์์ง๋๋ค. ์์๋ ๋ชจ๋ธ์๊ฒ ์์ํ๋ ์ ํํ ํฌ๋งท, ํ๋ ์์, ๊ฐ ์คํ์ผ, ๋ฐ์ดํ ๋ฐฉ์์ ๋ณด์ฌ์ค๋๋ค โ ์คํค๋ง ์ ์๋ง์ผ๋ก๋ ์์จ ์ ์๋ ๋ชจํธ์ฑ์ ์ค์ ๋๋ค.
์คํค๋ง ํ ํ๋ฆฟ ๋ค์์ ์์๋ฅผ ๋ฐฐ์นํ๊ณ ๋ช ํํ๊ฒ ๋ผ๋ฒจ์ ๋ถ์ด์ญ์์ค("์ถ๋ ฅ ์์:" ๋๋ "์ ํจํ ์๋ต ์์:"). ์ค์ ์ ์ธ ํ๋ ์ด์คํ๋ ๊ฐ์ ์ฌ์ฉํ์ญ์์ค โ "foo", "bar", "example"์ด ์๋ โ ๋ชจ๋ธ์ด ๊ฐ ์คํ์ผ์์ ํ์ตํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ ์ง์ ISO 8601์ ์ฌ์ฉํ๋ค๋ฉด ISO 8601 ๋ ์ง๋ฅผ ๋ณด์ฌ์ฃผ์ญ์์ค. ๊ฐ๊ฒฉ์ ์์์ ๋ ์๋ฆฌ๊ฐ ์๋ค๋ฉด `13`์ด ์๋ `12.99`๋ฅผ ๋ณด์ฌ์ฃผ์ญ์์ค.
๐ ์์ ํ๋๋ก ๋ณดํต ์ถฉ๋ถํฉ๋๋ค
๋ ๋ฒ์งธ ์์๋ ์ ๋ ฅ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์๋ฏธ ์๊ฒ ๋ฌ๋ผ์ง๋ ๊ฒฝ์ฐ์๋ง ๊ฐ์น๊ฐ ์์ต๋๋ค โ ์๋ฅผ ๋ค์ด ์ ํ ์ ํ์ ๋ฐ๋ผ ํน์ ํ๋๊ฐ ์กฐ๊ฑด๋ถ๋ก ์กด์ฌํ๋ ๊ฒฝ์ฐ. ๋ ์์๋ฅผ ์ด๊ณผํ๋ฉด ๋๋ถ๋ถ์ ๊ตฌ์กฐํ ์ถ๋ ฅ ์์ ์์ ํ๋กฌํํธ ๊ธธ์ด ๋น์ฉ์ด ์ ๋ขฐ๋ ์ด๋์ ์ด๊ณผํฉ๋๋ค.
โ ๏ธ ์ฌ์ํ ํ๋ ์ด์คํ๋ ๊ฐ์ ํผํ์ญ์์ค
"foo", "bar", "test" ๋๋ `0`์ ํ๋ ์ด์คํ๋๋ก ์ฌ์ฉํ๋ ์์๋ ๋ชจ๋ธ์๊ฒ ์ด๊ฒ๋ค์ด ์ ํจํ ๊ฐ์ด๋ผ๊ณ ๊ฐ๋ฅด์นฉ๋๋ค. ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ํํ๋ ๊ฐ์ ์ฌ์ฉํ์ญ์์ค โ ์ค์ ์ ํ๋ช , ์ค์ ์ ์ธ ํ์ , ์ค์ ๋ ์ง ๋ฌธ์์ด.
โ ์คํค๋ง๋ง โ ์ถ๋ ฅ ์์ ์์
์๋ ๋ฆฌ๋ทฐ์์ ์ ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ์ถํ์ฌ ์ด ์คํค๋ง์ JSON์ผ๋ก ๋ฐํํ์ญ์์ค: { "product_name": "string", "rating": 0, "sentiment": "string", "key_features": ["string"] } ๋ฆฌ๋ทฐ: {{review}}
โ ์คํค๋ง + ์ค์ ์ ์ธ ์ถ๋ ฅ ์์ ํ๋
์๋ ๋ฆฌ๋ทฐ์์ ์ ํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์ถ์ถํ์ฌ ์ด ์คํค๋ง์ JSON์ผ๋ก ๋ฐํํ์ญ์์ค: { "product_name": "string", "rating": 0, "sentiment": "string", "key_features": ["string"] } ์ถ๋ ฅ ์์: { "product_name": "WH-1000XM5 ํค๋ํฐ", "rating": 4, "sentiment": "positive", "key_features": ["๋ ธ์ด์ฆ ์บ์ฌ๋ง", "30์๊ฐ ๋ฐฐํฐ๋ฆฌ", "ํธ์ํ ์ฐฉ์ฉ๊ฐ"] } ๋ฆฌ๋ทฐ: {{review}}
๊ณ ์ํ ์ถ๋ ฅ์ ์ํ ํ๋ ์์ค ์ง์์ฌํญ ์์ฑ
ํ๋ ์ ํ์ฑ์ด ์ค์ํ ํ๋ก๋์ ํ๋กฌํํธ์์๋ ํ์ ํ๋๋ง๋ค ๋ฐ์ดํฐ ํ์ , ์์ ํฌ๋งท, null ์ฒ๋ฆฌ, ํด๋น๋๋ ๊ฒฝ์ฐ ํ์ฉ enum ๊ฐ์ ํฌํจํ๋ ์ง์์ฌํญ์ ํ๋์ฉ ์ถ๊ฐํ์ญ์์ค. ํ๋ ์์ค ์ง์์ฌํญ์ ํ์ ์ค๋ฅ๋ฅผ ์ ๋ฐํ๋ ๋ชจํธ์ฑ์ ์์ฑ๋๋ค โ "amount"๋ผ๋ ํ๋๋ ๋ช ์์ ์ธ ํ์ ์ง์์ฌํญ ์์ด๋ ๋ฌธ์์ด, ์ ์, ๋ถ๋์์์ ๋ชจ๋๊ฐ ๋ ์ ์์ต๋๋ค.
ํ๋ ์ง์์ฌํญ์ ์คํค๋ง ํ ํ๋ฆฟ ๋ค์, ์์ ์์ ๋ณ๋ ์น์ ์ ๋ฃ์ผ์ญ์์ค. ์น์ ์ "ํ๋ ์๊ตฌ์ฌํญ:" ๋๋ "์คํค๋ง ๊ท์น:"์ด๋ผ๋ ๋ผ๋ฒจ์ ๋ถ์ด์ญ์์ค. ๊ฐ ์ง์์ฌํญ์ ํ ๋ฌธ์ฅ์ผ๋ก ์ ์งํ์ญ์์ค.
| ํ๋ ํ์ | ์ง์์ฌํญ ํจํด | ์์ ์ง์์ฌํญ |
|---|---|---|
| ๋ฌธ์์ด | ํฌ๋งท, ์ต๋ ๊ธธ์ด, ๊ธ์ง ๋ฌธ์ | "title (string, ์ต๋ 100์, HTML ํ๊ทธ ์์)" |
| ์ซ์ | ์ ์ vs ๋ถ๋์์์ , ์ ๋ฐ๋, ๋จ์ | "price (float, ์์์ ์ ํํ 2์๋ฆฌ, USD, ํตํ ๊ธฐํธ ์์)" |
| ๋ ์ง | ํฌ๋งท, ํ์์กด | "created_at (string, ISO 8601: YYYY-MM-DDTHH:MM:SSZ, UTC ํ์์กด)" |
| Enum | ๋ชจ๋ ํ์ฉ ๊ฐ์ ์ ํํ ๋์ด | "status (string, ์ ํํ ๋ค์ ์ค ํ๋: 'active', 'inactive', 'pending')" |
| Boolean | true/false๋ง โ yes/no/1/0 ๊ฑฐ๋ถ | "is_verified (boolean, true ๋๋ false๋ง โ 1/0์ด๋ yes/no ๋ถ๊ฐ)" |
| Nullable | null vs ๋น ๋ฌธ์์ด vs ์๋ต ์ ์ฒ๋ฆฌ | "description (string ๋๋ null โ ์ ์ ์์ผ๋ฉด null, ๋น ๊ฒ์ผ๋ก ์๋ ค์ง ๊ฒฝ์ฐ ๋น ๋ฌธ์์ด)" |
| ๋ฐฐ์ด | ์ต์/์ต๋ ํญ๋ชฉ, ํญ๋ชฉ ํ์ , ๋น ๋ฐฐ์ด ์ฒ๋ฆฌ | "tags (๋ฌธ์์ด ๋ฐฐ์ด, 0โ5๊ฐ ํญ๋ชฉ, ์์ผ๋ฉด [] ๋ฐํ โ null ์ ๋ ๋ถ๊ฐ)" |
๐ ํ๋ ์ง์์ฌํญ ์ถ๊ฐ ์์
๋ค์ ๊ฒฝ์ฐ์ ํ๋ ์ง์์ฌํญ์ ์ถ๊ฐํ์ญ์์ค: (1) ํน์ ํฌ๋งท ์๊ตฌ์ฌํญ์ด ์๋ ํ๋(ISO ๋ ์ง, ํตํ ์ ๋ฐ๋), (2) enum ํ๋, (3) nullable์ด๋ฉฐ null/๋น ๋ฌธ์์ด ๊ตฌ๋ถ์ด ์ค์ํ ํ๋, (4) ํ ์คํธ ์ธํธ์์ ํด๋น ํ๋๊ฐ 10% ์ด์ ์คํจํ๋ ๊ฒฝ์ฐ. "title"์ด๋ "name"์ฒ๋ผ ๋จ์ํ๊ณ ๋ช ํํ ๋ฌธ์์ด ํ๋์๋ ํ๋ ์ง์์ฌํญ์ ๊ฑด๋๋ฐ์ญ์์ค.
โ ์คํค๋ง๋ง โ ํ๋ ์ง์์ฌํญ ์์
๋ค์ ํ๋๊ฐ ์๋ JSON์ ๋ฐํํ์ญ์์ค: { "invoice_id": ..., "amount": ..., "due_date": ..., "status": ..., "line_items": [...] }
โ ์คํค๋ง + ํ๋ ์์ค ์ง์์ฌํญ
๋ค์ ํ๋๊ฐ ์๋ JSON์ ๋ฐํํ์ญ์์ค: { "invoice_id": "string", "amount": 0.00, "due_date": "YYYY-MM-DD", "status": "string", "line_items": [{"description": "string", "quantity": 0, "unit_price": 0.00}] } ํ๋ ์๊ตฌ์ฌํญ: - invoice_id: string, ํ์ INV-XXXXXX (์: INV-004821) - amount: float, ์์์ 2์๋ฆฌ, ์ธ๊ธ ํฌํจ USD ํฉ๊ณ - due_date: string, ISO 8601 ๋ ์ง (YYYY-MM-DD), datetime ์๋ - status: string, ์ ํํ ๋ค์ ์ค ํ๋: 'paid', 'unpaid', 'overdue', 'cancelled' - line_items: ๊ฐ์ฒด ๋ฐฐ์ด, 1๊ฐ ์ด์, ํญ๋ชฉ ์์ผ๋ฉด [] ๋ฐํ - ๊ฒฐ์ ํ ์ ์๋ ํ๋๋ null ๋ฐํ
API์๋ JSON, ํ๋กฌํํธ์๋ YAML, ํ ์ด๋ธ ๋ฐ์ดํฐ์๋ CSV ์ ํ
์ถ๋ ฅ์ด JSON ๊ฐ์ ๋ฅผ ์ฌ์ฉํ ์ ์๋ API๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ JSON์ ์ฌ์ฉํ์ญ์์ค. API ๊ฐ์ ์๋ ์์ ํ ํ๋กฌํํธ์๋ YAML์ ์ฌ์ฉํ์ญ์์ค โ ๋ซ๋ ์ค๊ดํธ, ์ด์ค์ผ์ดํ ์ํ์ค, ํํ ์ผํ ์ธ์์ด ํ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ด YAML์์ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ๋ ์ ๊ฒ ์์ฑํฉ๋๋ค. CSV๋ ๋จ์ ํ ์ด๋ธ ๋ฐ์ดํฐ์๋ง ์ฌ์ฉํ์ญ์์ค.
์์ ํ(API ๊ฐ์ ์์) ํ๋กฌํํ ์์ JSON๊ณผ YAML์ ์ ๋ขฐ๋ ์ฐจ์ด๋ ๊ตฌ๋ฌธ ๋ณต์ก์ฑ์์ ๋น๋กฏ๋ฉ๋๋ค. JSON์ ๋ชจ๋ ๋ฌธ์์ด์ ๋ฐ์ดํ๋ก ๊ฐ์ธ๊ณ , ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ์ค๊ดํธ๋ก ๋ซ๊ณ , ๋ชจ๋ ์ผํ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. YAML์ ๋์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค โ ๋ชจ๋ธ์ด ๋ ์ผ๊ด๋๊ฒ ์ฒ๋ฆฌํฉ๋๋ค. ํธ๋ ์ด๋์คํ: YAML ์ถ๋ ฅ์ JSON์ ํ์๋ก ํ๋ ๋ค์ด์คํธ๋ฆผ ์์คํ ์ ๊ณต๊ธํ๊ธฐ ์ ๋ณํ์ด ํ์ํฉ๋๋ค.
- ๋ค์ด์คํธ๋ฆผ ์์คํ ์ JSON ํ์๊ฐ ์๊ณ API ๊ฐ์ ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉด JSON์ ์ฌ์ฉํ์ญ์์ค โ ๊ฐ์ ๊ฐ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ์์ ํ ์ ๊ฑฐํฉ๋๋ค.
- API ๊ฐ์ ์์ด ์์ฑํ๊ณ ํ์์ ๋ค์ด์คํธ๋ฆผ ์ฒ๋ฆฌ ์ JSON์ผ๋ก ๋ณํํ๋ค๋ฉด YAML์ ์ฌ์ฉํ์ญ์์ค.
- ๋จ์ ํ ์ด๋ธ ๋ฐ์ดํฐ์๋ง CSV๋ฅผ ์ฌ์ฉํ์ญ์์ค โ ์ ์ ์ค์ฒฉ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ด ํ์ํ ์๊ฐ JSON์ด๋ YAML๋ก ์ ํํ์ญ์์ค.
- ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ์ถ๋ ฅ์๋ง Markdown ํ ์ด๋ธ์ ์ฌ์ฉํ์ญ์์ค โ ์ถ๊ฐ ๋๊ตฌ ์์ด๋ ๊ธฐ๊ณ ํ๋ ๋ถ๊ฐ์ ๋๋ค.
| ํฌ๋งท | API ๊ฐ์ ์๋ ์ ๋ขฐ๋ | ์ต์ ์ฉ๋ | ํผํด์ผ ํ ๊ฒฝ์ฐ |
|---|---|---|---|
| JSON | ์คํค๋ง-์ธ-ํ๋กฌํํธ๋ก 80โ85% | API, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ ์์ ์๋น์ | API ๊ฐ์ ์์ด ๋ณต์กํ ์ค์ฒฉ์ด ํฌํจ๋ ๊ฒฝ์ฐ |
| YAML | ์คํค๋ง-์ธ-ํ๋กฌํํธ๋ก 88โ92% | ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ์ถ๋ ฅ, ์ค์ ์คํ์ผ ๋ฐ์ดํฐ, API ๊ฐ์ ์๋ ๊ฒฝ์ฐ | ๋ค์ด์คํธ๋ฆผ ์์คํ ์ด ๋ณํ ๋จ๊ณ ์์ด JSON์ ์๊ตฌํ๋ ๊ฒฝ์ฐ |
| XML | ์คํค๋ง-์ธ-ํ๋กฌํํธ๋ก 85โ90% | ๋ฌธ์ ๋ณํ, ๋ ๊ฑฐ์ ์์คํ ํตํฉ | ๋จ์ ํค-๊ฐ ๋ฐ์ดํฐ (XML์ด ๋ถํ์ํ๊ฒ ์ฅํฉํด์ง) |
| CSV | ๋จ์ ๋ฐ์ดํฐ์์ 95%+ | ํ ์ด๋ธ ๋ฐ์ดํฐ, ์คํ๋ ๋์ํธ ๋ด๋ณด๋ด๊ธฐ, ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ | ๋ฐ์ดํฐ์ ์ค์ฒฉ ๋๋ ๊ณ์ธต์ ๊ตฌ์กฐ๊ฐ ์๋ ๊ฒฝ์ฐ |
| Markdown ํ ์ด๋ธ | ๋จ์ ํ ์ด๋ธ์์ ๋์ | ๋ณด๊ณ ์, ๋ฌธ์, ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ํ ์ด๋ธ ์ถ๋ ฅ | ๊ธฐ๊ณ ํ๋ ๊ฐ๋ฅํ ๋ค์ด์คํธ๋ฆผ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ |
โ ๏ธ YAML-JSON ๋ณํ ๋น์ฉ
ํ๋กฌํํธ ์ ๋ขฐ๋๋ฅผ ์ํด YAML์ ์ฌ์ฉํ๊ณ ๋ค์ด์คํธ๋ฆผ ์ฒ๋ฆฌ์ JSON์ด ํ์ํ๋ค๋ฉด ํ์ดํ๋ผ์ธ์ ๋ณํ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ์ญ์์ค. Python์ yaml.safe_load()์ Node.js์ js-yaml์ด ํ ์ค๋ก ์ฒ๋ฆฌํฉ๋๋ค. ํ ์ ์ฒด์ YAML์ ์ ์ฉํ๊ธฐ ์ ์ด๋ฅผ ์ํคํ ์ฒ์ ๋ฐ์ํ์ญ์์ค.
์๋ชป๋ ์ถ๋ ฅ์ ๋ชจ๋ธ ์ค์ค๋ก ์์ ํ๊ฒ ํ๊ธฐ
๊ตฌ์กฐํ ์ถ๋ ฅ ํ๋กฌํํธ๊ฐ ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํ๋ฉด ์๋ ์ง์์ฌํญ, ์๋ชป๋ ์ถ๋ ฅ, ๊ตฌ์ฒด์ ์ธ ์ ํจ์ฑ ๊ฒ์ฌ ์ค๋ฅ๋ฅผ ํฌํจํ๋ ์์ ํ๋กฌํํธ๋ฅผ ์ ์กํ์ญ์์ค. ๋ชจ๋ธ์ ์ ์ฒด ํ๋กฌํํธ ์ฌ์์ฑ ์์ด 60โ75%์ ๊ฒฝ์ฐ์ ์์ ์ ์๋ชป๋ ์๋ต์์ ์ ํจํ ์ถ๋ ฅ์ ๋ณต๊ตฌํฉ๋๋ค.
์์ ํ๋กฌํํธ์๋ ์ธ ๊ฐ์ง ํ์ ๋ถ๋ถ์ด ์์ต๋๋ค: (1) ์ถ๋ ฅ์ด ์ด๋ป๊ฒ ๋ณด์ฌ์ผ ํ๋์ง์ ๋ํ ์ฌ์ค๋ช (์คํค๋ง ๋๋ ํฌ๋งท), (2) ๋ชจ๋ธ์ด ๋ฐํํ ๊ทธ๋๋ก์ ์๋ชป๋ ์ถ๋ ฅ, (3) ๊ตฌ์ฒด์ ์ธ ์ ํจ์ฑ ๊ฒ์ฌ ์ค๋ฅ โ "ํ์ ํ๋ 'invoice_id' ๋๋ฝ", "amount๊ฐ ๋ฌธ์์ด์ด์ง๋ง float์ด์ด์ผ ํจ". ์ด ์ธ ๋ถ๋ถ ๊ตฌ์กฐ๋ ๋ชจ๋ธ์๊ฒ ๋ค๋ฅธ ์คํจ๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ์๋ต์ ์ฌ์์ฑํ๋ ๋์ ํน์ ๋ฌธ์ ๋ฅผ ์์ ํ๊ธฐ์ ์ถฉ๋ถํ ์ปจํ ์คํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๐ ์์ ์ด ๋ ๋ฒ ์คํจํ๋ฉด ๊ธฐ๋ณธ ํ๋กฌํํธ๋ฅผ ์์ ํ์ญ์์ค
์์ ํ๋กฌํํธ๊ฐ ๋ ๋ฒ์งธ ์๋์์๋ ์ ํจํ ์ถ๋ ฅ์ ์์ฑํ์ง ๋ชปํ๋ฉด ๋ฌธ์ ๋ ์ ๋ ฅ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ธฐ๋ณธ ํ๋กฌํํธ์ ์์ต๋๋ค. ์ฌ์๋๋ฅผ ์ค๋จํ๊ณ ์คํจ ํจํด์ ์ง๋จํ์ญ์์ค: ์ด๋ค ํ๋๊ฐ ์ด๋ค ์ ๋ ฅ ์กฐ๊ฑด์์ ์คํจํ๋์ง. ์์ค์์ ์คํจ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋ ์ง์์ฌํญ์ด๋ ์คํค๋ง ๋ณ๊ฒฝ์ ์ถ๊ฐํ์ญ์์ค.
โ ๏ธ ์์ ํ๋กฌํํธ๋ ์ง์ฐ ์๊ฐ๊ณผ ๋น์ฉ์ ์ถ๊ฐํฉ๋๋ค
๊ฐ ์์ ํ๋กฌํํธ๋ ํด๋น ํธ์ถ์ API ๋น์ฉ๊ณผ ์ง์ฐ ์๊ฐ์ ๋ ๋ฐฐ๋ก ๋๋ฆฝ๋๋ค. ์์ ํ๋กฌํํธ๋ ์ฃ์ง ์ผ์ด์ค ์คํจ(์ถ๋ ฅ์ 10% ๋ฏธ๋ง)์๋ง ์ฌ์ฉํ์ญ์์ค. ๊ตฌ์กฐํ ์ถ๋ ฅ ํ๋กฌํํธ๊ฐ 10% ์ด์ ์คํจํ๋ค๋ฉด ํ๋ก๋์ ์ ์์ ๋ฃจํ๋ฅผ ๊ตฌ์ถํ๋ ๋์ ๊ธฐ๋ณธ ํ๋กฌํํธ๋ฅผ ์์ ํ์ญ์์ค.
โ ๋ชจํธํ ์ฌ์๋ โ ์ค๋ฅ ์ปจํ ์คํธ ์์
์ ํจํ์ง ์์ ์ถ๋ ฅ์ ๋ฐํํ์ จ์ต๋๋ค. ๋ค์ ์๋ํ์ฌ ์ ํจํ JSON์ ๋ฐํํ์ญ์์ค. {{original_prompt}}
โ ์คํค๋ง, ์ถ๋ ฅ, ๊ตฌ์ฒด์ ์ค๋ฅ๊ฐ ํฌํจ๋ ์์ ํ๋กฌํํธ
์ด์ ์๋ต์ด ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํ์ต๋๋ค. ์๋ ๋์ด๋ ์ค๋ฅ๋ง ์์ ํ์ฌ ์ฌ๋ฐ๋ฅธ JSON์ ๋ฐํํ์ญ์์ค. ์์ ์คํค๋ง: { "invoice_id": "string", "amount": 0.00, "status": "string" } ์ด์ ์๋ต: { "invoice_id": null, "amount": "150.00", "status": "PAID" } ์ ํจ์ฑ ๊ฒ์ฌ ์ค๋ฅ: - invoice_id๊ฐ null์ด์ง๋ง ํ์ ๋ฌธ์์ด ํ๋์ ๋๋ค โ ์ ๋ ฅ์์ ์ถ์ถํ์ญ์์ค. - amount๊ฐ ๋ฌธ์์ด("150.00")์ด์ง๋ง float(150.00)์ด์ด์ผ ํฉ๋๋ค. - status๋ ์๋ฌธ์์ฌ์ผ ํฉ๋๋ค: 'PAID' ๋์ 'paid' ์ฌ์ฉ ์์ ๋ JSON ๊ฐ์ฒด๋ง ๋ฐํํ์ญ์์ค.
๋ฐฐ์ด, enum, nullable ํ๋๋ฅผ ์ํ ํ๋กฌํํธ ํจํด
๋ฐฐ์ด, enum, nullable ํ๋๋ ์คํค๋ง-์ธ-ํ๋กฌํํธ๋ง์ผ๋ก๋ ๋ฐฉ์งํ ์ ์๋ ๊ตฌ์กฐํ ์ถ๋ ฅ ์คํจ์ ์ธ ๊ฐ์ง ๊ฐ์ฅ ํํ ์์ธ์ ๋๋ค. ๊ฐ๊ฐ์ ํ๋กฌํํธ์์ ํน์ ์ง์์ฌํญ ํจํด์ด ํ์ํฉ๋๋ค.
| ๋ฐ์ดํฐ ํ์ | ํํ ์คํจ | ๋ฐฉ์งํ๋ ํ๋กฌํํธ ํจํด |
|---|---|---|
| ๋ฐฐ์ด (0๊ฐ ํญ๋ชฉ) | ๋ชจ๋ธ์ด [] ๋์ null ๋ฐํ | "ํญ๋ชฉ์ด ์์ผ๋ฉด ๋น ๋ฐฐ์ด []์ ๋ฐํํ์ญ์์ค. ๋ฐฐ์ด ํ๋์ null์ ์ ๋ ๋ฐํํ์ง ๋ง์ญ์์ค." |
| ๋ฐฐ์ด (1๊ฐ ์ด์) | ํญ๋ชฉ์ด ํ๋๋ง ๋ฐ๊ฒฌ๋๋ฉด ๋ฐฐ์ด ๋์ ๋จ์ผ ๊ฐ์ฒด ๋ฐํ | "ํญ๋ชฉ์ด ํ๋๋ฟ์ด๋๋ผ๋ ํญ์ ๋ฐฐ์ด์ ๋ฐํํ์ญ์์ค. ๋จ์ผ ํญ๋ชฉ์ ๋ํ๋์ด์ผ ํฉ๋๋ค: {...}" |
| Enum (2โ5๊ฐ ๊ฐ) | ๋ชจ๋ธ์ด ์ ์ฌํ ๊ฐ์ ์ฝ์ด๋ก ์ฐ๊ฑฐ๋ ๋ง๋ค์ด๋ | "status: ์ ํํ ๋ค์ ์ค ํ๋: 'active', 'inactive', 'pending' โ ์ฝ์ด๋ ๋ณํ ๋ถ๊ฐ" |
| Enum (6๊ฐ ์ด์ ๊ฐ) | ๋ชจ๋ธ์ด ๋ชฉ๋ก์ ์๋ ๊ฐ์ ๋ง๋ค์ด๋ | ๋ชจ๋ ๊ฐ์ ๋ฒํธ ๋ชฉ๋ก์ผ๋ก ๋์ดํ ๋ค์: "์ ๋ชฉ๋ก์ ๊ฐ๋ง ์ฌ์ฉํ์ญ์์ค. ๊ฐ์ ์ฝ์ด๋ก ์ฐ๊ฑฐ๋ ๊ฒฐํฉํ์ง ๋ง์ญ์์ค." |
| Nullable ํ๋ | ๋ชจ๋ธ์ด null ๋์ "" ๋ฐํํ๊ฑฐ๋ ํ๋๋ฅผ ์์ ํ ์๋ต | "๊ฐ์ ์ ์ ์์ผ๋ฉด null์ ๋ฐํํ์ญ์์ค. ๋น ๊ฒ์ผ๋ก ์๋ ค์ง ๊ฒฝ์ฐ์๋ง ๋น ๋ฌธ์์ด ''์ ๋ฐํํ์ญ์์ค. ํญ์ ํ๋๋ฅผ ํฌํจํ์ญ์์ค โ ์๋ตํ์ง ๋ง์ญ์์ค." |
| ์ ์ vs ๋ถ๋์์์ | ์ ์๊ฐ ํ์ํ ๊ณณ์ ๋ถ๋์์์ ๋ฐํ, ๋๋ ๋ ๋ค ๋ฌธ์์ด | "score (integer โ ์์์ ์์, ์: 4.0์ด ์๋ 4)" ๋๋ "price (float โ ์์์ ์ ํํ 2์๋ฆฌ, ์: 13์ด ์๋ 12.99)" |
| ์ค์ฒฉ ๊ฐ์ฒด | ๋ชจ๋ธ์ด ์ค์ฒฉ ๊ฐ์ฒด๋ฅผ ํ๋ซ ํค๋ก ์ถ์ (์: {"address": {"city": ...}} ๋์ "address.city") | ์คํค๋ง ํ ํ๋ฆฟ์ ์ ์ ํ ๋ค์ฌ์ฐ๊ธฐ๋ก ์์ ํ ์ค์ฒฉ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ์ญ์์ค. ์ค์ฒฉ์ ๋ํ ์์ฐ์ด ์ค๋ช ์ ๋น๋ฒํ๊ฒ ํ๋ซ ํค๋ก ์ถ์๋ฉ๋๋ค. |
โ ๏ธ null vs undefined vs ์๋ต
JSON์๋ undefined ๊ฐ์ด ์์ง๋ง ๋ชจ๋ธ์ ๋๋๋ก ์๋ ๊ฒ์ฒ๋ผ ๋์ํฉ๋๋ค โ null์ ๋ฐํํ๋ ๋์ ๊ฐ์ด ์ ์ ์๋ค๊ณ ์๊ฐํ ๋ ํ๋๋ฅผ ์์ ํ ์๋ตํฉ๋๋ค. ๋ค์ด์คํธ๋ฆผ ์ฝ๋๊ฐ obj.hasOwnProperty() ๊ฐ์ ๊ฒ์ฌ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์๋ต๋ ํ๋๋ null ํ๋์ ๋ค๋ฆ ๋๋ค. "null์ด๋๋ผ๋ ์คํค๋ง์ ๋ชจ๋ ํ๋๋ฅผ ํญ์ ํฌํจํ์ญ์์ค."๋ฅผ ์ถ๊ฐํ์ญ์์ค.
๐ ์ค์ฒฉ๋ enum์ ๋ ๊ตฌ์ฒด์ ์ธ ์ง์๊ฐ ํ์ํฉ๋๋ค
์ค์ฒฉ ๊ฐ์ฒด ์์ enum์ ์ต์์ enum๋ณด๋ค ์คํ๊ฐ ๋๊ฑฐ๋ ์ฝ์ด๋ก ์ฐ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ค์ฒฉ ๊ฐ์ฒด ์์ enum์ด ์๋ค๋ฉด ์ผ๋ฐ ํ๋ ๊ท์น ์น์ ๋ฟ๋ง ์๋๋ผ ์คํค๋ง ํ ํ๋ฆฟ์์ ํด๋น ํ๋๊ฐ ๋ํ๋๋ ๊ณณ ๊ฐ๊น์ด์ ์ง์์ฌํญ์ ๋ฐ๋ณตํ์ญ์์ค.
ํ๋กฌํํธ์ ๊ตฌ์กฐํ ์ถ๋ ฅ ์ ๋ขฐ๋ ์ธก์
๊ตฌ์กฐํ ์ถ๋ ฅ ํ๋กฌํํธ๋ฅผ ํ๋ก๋์ ์ ๋ฐฐํฌํ๊ธฐ ์ 20๊ฐ ์ผ์ด์ค ํ ์คํธ ์ธํธ์์ 95% ์ด์์ ํต๊ณผ์จ์ ๋ชฉํ๋ก ํ์ญ์์ค. 95% ๋ฏธ๋ง์ด๋ฉด ํ๋ก๋์ ์คํจ๊ฐ ์ถฉ๋ถํ ์์ฃผ ๋ฐ์ํ์ฌ ๋ค์ด์คํธ๋ฆผ ์์ ๋ฃจํ๊ฐ ํ์ํฉ๋๋ค โ ์ด๋ ์คํจํ๋ ๋ชจ๋ ํธ์ถ์ ์ง์ฐ ์๊ฐ์ ์ถ๊ฐํ๊ณ API ๋น์ฉ์ ๋ ๋ฐฐ๋ก ๋๋ฆฝ๋๋ค.
์ ์ฒด๊ฐ ์๋ ํ๋ ์์ค์์ ์ ๋ขฐ๋๋ฅผ ์ธก์ ํ์ญ์์ค. ์ ์ฒด ํต๊ณผ์จ 95%์ด์ง๋ง enum ํ๋ ํ๋์์ ํต๊ณผ์จ 60%์ธ ํ๋กฌํํธ๋ ์๋ ค์ง ํ๋ก๋์ ์คํจ ๋ชจ๋๋ฅผ ๊ฐ์ง ํ๋กฌํํธ์ ๋๋ค. ํ๋ ์์ค ์ธก์ ์ ์ด๋ค ์ง์์ฌํญ์ ์ถ๊ฐํ๊ฑฐ๋ ๊ฐํํด์ผ ํ๋์ง ์ ํํ ์๋ ค์ค๋๋ค.
- 1๋ชจ๋ ์คํค๋ง ํ๋์ ๋ํ ํต๊ณผ/์คํจ ๊ธฐ์ค์ ์ ์ํ์ญ์์ค. ๊ฐ ํ๋์ ๋ํด: ํ์ ์ด ์ฌ๋ฐ๋ฅธ์ง, ํ์ ํ๋๊ฐ ์กด์ฌํ๋์ง, enum ๊ฐ์ด ํ์ฉ ๋ชฉ๋ก์ ์๋์ง, ๋ ์ง ํฌ๋งท์ด ํ์ํ ํจํด๊ณผ ์ผ์นํ๋์ง. ์๊ฐ์ ๊ฒ์ฌ๊ฐ ์๋ ํ๋ก๊ทธ๋๋ฐ์ ๊ฒ์ฌ๋ก ์์ฑํ์ญ์์ค. ์ด ๋จ๊ณ๊ฐ ํ ์คํธ ์ค๋ผํด์ ์์ฑํฉ๋๋ค.
- 220๊ฐ ์ผ์ด์ค ํ ์คํธ ์ธํธ๋ฅผ ๊ตฌ์ถํ์ญ์์ค. ์ ์ ๊ฒฝ๋ก ์ ๋ ฅ 10๊ฐ(์ผ๋ฐ์ ์ด๊ณ ์ ํ์ฑ๋ ๋ฐ์ดํฐ), ์ฃ์ง ์ผ์ด์ค 5๊ฐ(์ ํ์ ํ๋ ๋๋ฝ, ๊ธด ํ ์คํธ, ํน์ดํ ๊ฐ, ๋ค๊ตญ์ด ์ฝํ ์ธ ), ์ ๋์ ์ ๋ ฅ 5๊ฐ(ํ๋ ๊ฐ์ ํฌํจ๋ ์ง์์ฌํญ, ๊ทน๋จ์ ์ธ ๋ ์ง, ๋ชจํธํ ํ์ ). ์ค์ ๋ฐ์ดํฐ ๋๋ฉ์ธ์์ ํ์ค์ ์ธ ์ ๋ ฅ์ ์ฌ์ฉํ์ญ์์ค.
- 3temperature 0์์ ์คํํ๊ณ ํ๋๋ณ ํต๊ณผ/์คํจ๋ฅผ ๊ธฐ๋กํ์ญ์์ค. ๊ฒฐ์ ๋ก ์ ์ด๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ์ํด temperature 0์์ 20๊ฐ ์ผ์ด์ค๋ฅผ ๋ชจ๋ ์คํํ์ญ์์ค. ์ ์ฒด ๊ฒฐ๊ณผ๋ฟ๋ง ์๋๋ผ ๊ฐ ํ ์คํธ ์ผ์ด์ค์์ ๊ฐ ํ๋๊ฐ ํต๊ณผํ๋์ง ์คํจํ๋์ง ๊ธฐ๋กํ์ญ์์ค. ํ๋ ์์ค ์คํจ ํจํด์ด ์ด๋ค ์ง์์ฌํญ์ด ๋๋ฝ๋์๋์ง ํ์ ํฉ๋๋ค.
- 4๊ฐ์ฅ ๋ฎ์ ํต๊ณผ์จ ํ๋๋ฅผ ์์ ํ๊ณ ์ฌํ ์คํธํ์ญ์์ค. ํ๋ ์ง์์ฌํญ ํ๋๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ฐํํ์ญ์์ค: ํ์ , ํฌ๋งท, null ์ฒ๋ฆฌ, enum ๊ฐ. 20๊ฐ ์ผ์ด์ค๋ฅผ ๋ชจ๋ ๋ค์ ์คํํ์ญ์์ค. ํ๊ฒ๋ ์ง์์ฌํญ ์ถ๊ฐ ํ๋๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒด ํต๊ณผ์จ์ 5โ15 ํผ์ผํธ ํฌ์ธํธ ๋์ ๋๋ค. ์ ์ฒด ํต๊ณผ์จ์ด 95% ์ด์์ ๋๋ฌํ ๋๊น์ง ๋ฐ๋ณตํ์ญ์์ค.
- 5๋ ๋ฒ์งธ ๋ชจ๋ธ๋ก ํ๋กฌํํธ๋ฅผ ๊ฒ์ฆํ์ญ์์ค. ๋์ผํ ํ๋กฌํํธ๋ก ๋ ๋ฒ์งธ ๋ชจ๋ธ์์ ์ ์ฒด 20๊ฐ ์ผ์ด์ค๋ฅผ ์คํํ์ญ์์ค. GPT-5.5์์ 95%+์ด์ง๋ง Claude 4.6 Sonnet์์ 70%์ธ ํ๋กฌํํธ๋ ๋ชจ๋ธ ์ข ์์ ์ ๋๋ค. ๋ ๋ชจ๋ธ ๋ชจ๋์์ ํต๊ณผํ ๋งํผ ๋ช ์์ ์ธ ์ง์์ฌํญ์ ์ถ๊ฐํ๊ฑฐ๋, ์ด๋ค ๋ชจ๋ธ๋ก ๊ฒ์ฆ๋์๋์ง ๋ฌธ์ํํ๊ณ ์ฌํ ์คํธ ์์ด ์ ํํ์ง ๋ง์ญ์์ค.
๐ temperature 0์์ ํ ์คํธ๋ฅผ ์คํํ์ญ์์ค
๊ฒฐ์ ๋ก ์ ์ด๊ณ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ ค๋ฉด temperature 0์์ ๊ตฌ์กฐํ ์ถ๋ ฅ ํ ์คํธ ์ธํธ๋ฅผ ์คํํ์ญ์์ค. temperature 0์์ ํต๊ณผํ๋ ํ๋กฌํํธ๋ ์ค๊ณ์ ์ ๋ขฐํ ์ ์์ต๋๋ค โ ์ด์ด ์ข์ ๊ฒ์ด ์๋๋๋ค. ํ๋กฌํํธ๊ฐ ๊ฒฐ์ ๋ก ์ ์ผ๋ก 95%+๋ฅผ ํต๊ณผํ ํ์๋ง temperature๋ฅผ ๋์ด๊ณ , ๊ทธ ๋ค์ ์ ๋ขฐ๋๊ฐ ์ ์ง๋๋์ง ํ์ธํ๊ธฐ ์ํด ์ temperature์์ ํ ์คํธ ์ธํธ๋ฅผ ๋ค์ ์คํํ์ญ์์ค.
๐ ๋ค์ค ๋ชจ๋ธ ๋น๊ต๋ฅผ ์ํด PromptQuorum ์ฌ์ฉ
PromptQuorum์ 20๊ฐ ์ผ์ด์ค ํ ์คํธ ์ธํธ๋ฅผ GPT-5.5, Claude 4.6 Sonnet, Gemini 2.5 Pro์์ ๋์์ ์คํํ๊ณ ํ๋ ์์ค ํต๊ณผ์จ์ ๋๋ํ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฅผ ํตํด ์ธ ๋ฒ ๋์ ํ ๋ฒ์ ์คํ์ผ๋ก ๋ชจ๋ธ ์ข ์ ์คํจ๋ฅผ ํ์ ํ ์ ์์ต๋๋ค.
๊ตฌ์กฐํ ์ถ๋ ฅ ํ๋กฌํํธ์ 5๊ฐ์ง ํํ ์ค์
๊ตฌ์กฐํ ์ถ๋ ฅ ํ๋กฌํํธ์ 5๊ฐ์ง ๊ฐ์ฅ ํํ ์ค์๋ ๋ชจ๋ ๋์ผํ ์ฆ์ โ ๊ฐํ์ ๋๋ ์ฒด๊ณ์ ์คํจ โ ์ ๋ง๋ค์ด๋ด์ง๋ง ๋ค๋ฅธ ์์ ์ด ํ์ํฉ๋๋ค. ์ง์์ฌํญ์ ์ถ๊ฐํ๊ธฐ ์ ์ ์ด๋ค ์ค์๋ฅผ ํ๋์ง ์ง๋จํ๋ฉด ์๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค.
โ ์คํค๋ง๋ฅผ ์๋ฒ ๋ฉํ๋ ๋์ ์์ฐ์ด๋ก ์ค๋ช
Why it hurts: ์์ฐ์ด ์ค๋ช ์ ๋ชจํธํฉ๋๋ค โ "ํญ๋ชฉ ๋ชฉ๋ก"์ ๋ฐฐ์ด, ์ผํ๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด, ๋๋ ๋ฒํธ ๋ชฉ๋ก์ ์๋ฏธํ ์ ์์ผ๋ฉฐ "ํฉ๊ณ"๋ ๋ฌธ์์ด์ด๋ ๋ถ๋์์์ ๋ชจ๋๊ฐ ๋ ์ ์์ต๋๋ค.
Fix: ์์ ์คํค๋ง๋ฅผ JSON ํ ํ๋ฆฟ์ผ๋ก ํ๋กฌํํธ์ ์ง์ ์๋ฒ ๋ฉํ์ญ์์ค. ํ ํ๋ฆฟ์ ์ฐ๋ฌธ ์ค๋ช ์ด ์๋ ๊ตฌ์กฐ๋ฅผ ํตํด ํ๋๋ช , ์ค์ฒฉ ๊น์ด, ๊ฐ ํ์ ์ ๋ณด์ฌ์ค๋๋ค.
โ ๋๋ฝ๋๊ฑฐ๋ ์ ์ ์๋ ๊ฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ง์ ํ์ง ์์
Why it hurts: ๋ชจ๋ธ์ ์ ์ ์๋ ํ๋์ null์ ๋ฐํํ๋ ๋์ ๊ทธ๋ด๋ฏํ ๊ฐ์ ๋ง๋ค์ด๋ ๋๋ค โ ๋ ์ง๋ "unknown"์ด ๋๊ณ , ๊ธ์ก์ 0์ด ๋๊ณ , ๋๋ฝ๋ ID๋ "N/A"๊ฐ ๋ฉ๋๋ค โ ์ด ์ค ์ด๋ ๊ฒ๋ ํ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ์ง ๋ชปํฉ๋๋ค.
Fix: ๋ชจ๋ nullable ํ๋์ ๋ช ์์ ์ธ null ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐํ์ญ์์ค: "์ ๋ ฅ์์ ๊ฐ์ ๊ฒฐ์ ํ ์ ์์ผ๋ฉด null์ ๋ฐํํ์ญ์์ค. ๊ฐ์ ์ถ์ธกํ๊ฑฐ๋ ๋ง๋ค์ด๋ด์ง ๋ง์ญ์์ค. ๋น ๋ฌธ์์ด์ ๋ฐํํ์ง ๋ง์ญ์์ค."
โ ํ๋กฌํํธ๋ฅผ ๊ฐ๋ฐํ ๋ชจ๋ธ์์๋ง ํ ์คํธ
Why it hurts: ๊ตฌ์กฐํ ์ถ๋ ฅ ์ ๋ขฐ๋๋ ๋ชจ๋ธ๋ง๋ค ํฌ๊ฒ ๋ค๋ฆ ๋๋ค โ ์คํค๋ง ์ ์ฝ์ ๋ํ ๋ค๋ฅธ ์ง์์ฌํญ ๋ฐ๋ฅด๊ธฐ ๋์ ๋๋ฌธ์ GPT-5.5์์ 95%์ธ ํ๋กฌํํธ๊ฐ Claude 4.6 Sonnet์์ 70%๋ก ์คํจํ ์ ์์ต๋๋ค.
Fix: ๋ชจ๋ธ์ ๋ฌด๊ดํ ๊ฒ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ ์ ๋ชจ๋ ๊ตฌ์กฐํ ์ถ๋ ฅ ํ๋กฌํํธ๋ฅผ ์ต์ 2๊ฐ ๋ชจ๋ธ๋ก ์คํํ์ญ์์ค. PromptQuorum ๋๋ ์ง์ API ํธ์ถ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋ชจ๋ธ์์ ํ๋กฌํํธ๋ฅผ ํ ์คํธํ์ญ์์ค.
โ ์ ํํ ๊ฐ์ ํ๋กฌํํธ๋ก ์คํจํ ์ถ๋ ฅ์ ์ฌ์๋
Why it hurts: temperature 0์์ ์ฌ์๋๋๋ ์คํจ ํ๋กฌํํธ๋ ๋งค๋ฒ ๊ฐ์ ์คํจ๋ฅผ ์์ฑํฉ๋๋ค. ๋ ๋์ temperature์์๋ ๋ค์ํ์ง๋ง ์ฌ์ ํ ์คํจํ๋ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค โ ๋ค๋ฅธ ์ค๋ฅ, ๊ฐ์ ๊ทผ๋ณธ ์์ธ.
Fix: ๊ตฌ์ฒด์ ์ธ ์ ํจ์ฑ ๊ฒ์ฌ ์ค๋ฅ์ ์๋ชป๋ ์ถ๋ ฅ์ด ํฌํจ๋ ์์ ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์คํจ ํจํด(์ด๋ค ํ๋, ์ด๋ค ์ ๋ ฅ ์ ํ)์ ์ง๋จํ๊ณ ๊ธฐ๋ณธ ํ๋กฌํํธ์ ํ๊ฒ๋ ํ๋ ์ง์์ฌํญ์ ์ถ๊ฐํ์ญ์์ค.
โ JSON ๋ชจ๋๋ฅผ ์์ ํ ๊ตฌ์กฐํ ์ถ๋ ฅ ์๋ฃจ์ ์ผ๋ก ์ทจ๊ธ
Why it hurts: JSON ๋ชจ๋๋ ํ์ฑ ๋ถ๊ฐ ์ถ๋ ฅ์ ๋ฐฉ์งํ์ง๋ง ์คํค๋ง ์ค์ ์คํจ๋ ๋ง์ง ๋ชปํฉ๋๋ค โ JSON ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ธ์ ์ฌ์ ํ ๋๋ฝ๋ ํ๋, ์๋ชป๋ ํ์ , ์ ํจํ์ง ์์ enum ๊ฐ์ด ์๋ ์ ํจํ JSON์ ๋ฐํํ ์ ์์ผ๋ฉฐ, ์ด ๋ชจ๋๊ฐ ๋ค์ด์คํธ๋ฆผ ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํฉ๋๋ค.
Fix: API ๊ฐ์ JSON ๋ชจ๋๋ฅผ ์ฌ์ฉํ ๋๋ ํญ์ ์คํค๋ง-์ธ-ํ๋กฌํํธ์ ํ๋ ์ง์์ฌํญ์ ํฌํจํ์ญ์์ค. API ์ค์ ์ ๊ตฌ์กฐํ ์ถ๋ ฅ๊ณผ JSON ๋ชจ๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค โ ์ด ๊ฐ์ด๋๋ ํ๋กฌํํธ ์์ค์ ๋ณด์ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๊ตฌ์กฐํ ์ถ๋ ฅ ํ๋กฌํํ ์ ๊ดํ ๊ฐ์ฅ ํํ ์ง๋ฌธ๋ค์ JSON ๋ชจ๋์ ํ๋กฌํํธ ์ค๊ณ์ ๊ฒฝ๊ณ, ํฌํจํ ์์ ์, ์คํจํ๋ ํ๋กฌํํธ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
JSON ๋ชจ๋๊ฐ ์์ผ๋ฉด ์คํค๋ง-์ธ-ํ๋กฌํํธ๊ฐ ๋ถํ์ํ๊ฐ์?
์๋๋๋ค. JSON ๋ชจ๋๋ ํ์ฑ ๊ฐ๋ฅํ JSON ๊ตฌ๋ฌธ์ ๊ฐ์ ํ์ง๋ง ์คํค๋ง ์ค์๋ ๋ณด์ฅํ์ง ์์ต๋๋ค. JSON ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ธ์ ์ฌ์ ํ ํ์ ํ๋๊ฐ ๋๋ฝ๋๊ฑฐ๋, ์๋ชป๋ ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ฉํ๊ฑฐ๋, ์ ํจํ์ง ์์ enum ๊ฐ์ ํฌํจํ๋ ์ ํจํ JSON์ ๋ฐํํ ์ ์์ต๋๋ค. ์คํค๋ง-์ธ-ํ๋กฌํํธ์ ํ๋ ์ง์์ฌํญ์ ์คํค๋ง ์ค์ ์คํจ๋ฅผ ๋ค๋ฃจ๊ณ , JSON ๋ชจ๋๋ ํ์ฑ ๋ถ๊ฐ ์ถ๋ ฅ๋ง ๋ฐฉ์งํฉ๋๋ค. ๋ ์ ๊ทผ ๋ฐฉ์์ ์ํธ ๋ณด์์ ์ด๋ฉฐ ๋์์ด ์๋๋๋ค.
ํ๋กฌํํธ์ ์ถ๋ ฅ ์์๋ฅผ ๋ช ๊ฐ๋ ํฌํจํด์ผ ํ๋์?
์์ ํ๋๋ก ๋ณดํต ์ถฉ๋ถํ๋ฉฐ ๊ฐ์ฅ ํฐ ์ ๋ขฐ๋ ํฅ์์ ๊ฐ์ ธ์ต๋๋ค. ๋ ๋ฒ์งธ ์์๋ ์ ๋ ฅ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์๋ฏธ ์๊ฒ ๋ฌ๋ผ์ง๋ ๊ฒฝ์ฐ์๋ง ๊ฐ์น๊ฐ ์์ต๋๋ค โ ์๋ฅผ ๋ค์ด ์ ๋ ฅ ์ ํ์ ๋ฐ๋ผ ํน์ ํ๋๊ฐ ์กฐ๊ฑด๋ถ๋ก ํ์ํ ๊ฒฝ์ฐ. ๋ ์์๋ฅผ ์ด๊ณผํ๋ฉด ๋๋ถ๋ถ์ ๊ตฌ์กฐํ ์ถ๋ ฅ ์์ ์์ ํ๋กฌํํธ ๊ธธ์ด ๋น์ฉ์ด ์ ๋ขฐ๋ ์ด๋์ ์ด๊ณผํฉ๋๋ค.
API ๊ฐ์ ์์ด ๊ตฌ์กฐํ ์ถ๋ ฅ์ JSON ๋๋ YAML์ ์ฌ์ฉํด์ผ ํ๋์?
API ๊ฐ์ ์์ด ์์ฑํ๊ณ ์ถ๋ ฅ์ JSON์ ํ์๋ก ํ๋ ์์คํ ์์ ํ์ฑํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ YAML์ ์ฌ์ฉํ์ญ์์ค. ๋ซ๋ ์ค๊ดํธ, ์ด์ค์ผ์ดํ ์ํ์ค, ํํ ์ผํ ์ถ์ ์ด ํ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ด YAML์์ ๊ตฌ๋ฌธ ์ค๋ฅ๋ฅผ ๋ ์ ๊ฒ ์์ฑํฉ๋๋ค. ์ถ๋ ฅ์ด JSON์ ํ์๋ก ํ๋ API, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ๋ค์ด์คํธ๋ฆผ ์์คํ ์ผ๋ก ์ง์ ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ JSON์ ์ฌ์ฉํ์ญ์์ค. ํฌ๋งท์ ๊ด๊ณ์์ด ํญ์ ํ์ฑํ๊ณ ์ ํจ์ฑ์ ๊ฒ์ฌํ์ญ์์ค.
๊ตฌ์กฐํ ์ถ๋ ฅ ํต๊ณผ์จ์ด 70%์ธ ํ๋กฌํํธ๋ฅผ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
์ ์ฒด๊ฐ ์๋ ํ๋ ์์ค์์ ํ ์คํธ ์ธํธ๋ฅผ ์คํํ์ญ์์ค. ๊ฐ๋ณ ํต๊ณผ์จ์ด ๊ฐ์ฅ ๋ฎ์ ํ๋๋ฅผ ์ฐพ๊ณ , ํ์ , ํฌ๋งท, null ์ฒ๋ฆฌ๋ฅผ ๋ค๋ฃจ๋ ๋ช ์์ ์ธ ์ง์์ฌํญ ํ๋๋ฅผ ์ถ๊ฐํ ๋ค์ ์ฌ์คํํ์ญ์์ค. ํ๊ฒ๋ ํ๋ ์ง์์ฌํญ ํ๋๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒด ํต๊ณผ์จ์ 5โ15 ํผ์ผํธ ํฌ์ธํธ ๋์ ๋๋ค. 95% ์ด์์ ๋๋ฌํ ๋๊น์ง ๋ฐ๋ณตํ์ญ์์ค.
๋ค์ดํฐ๋ธ JSON ๋ชจ๋ ์์ด ๋ชจ๋ธ์์ ์ ๋ขฐํ ์ ์๋ ๊ตฌ์กฐํ ์ถ๋ ฅ์ ์ป์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
ํ๋กฌํํธ์ ์ ์ฒด JSON ์คํค๋ง๋ฅผ ํ ํ๋ฆฟ์ผ๋ก ์๋ฒ ๋ฉํ๊ณ , ์ ํจํ ์ถ๋ ฅ ์์ ํ๋๋ฅผ ํฌํจํ๊ณ , ํ๋ ์์ค ์ง์์ฌํญ์ ์ถ๊ฐํ๊ณ , temperature 0์์ ์คํํ์ญ์์ค. ๋ชจ๋ ์ถ๋ ฅ์ ํ์ฑํ๊ณ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ฉฐ, ์ ํจ์ฑ ๊ฒ์ฌ ์คํจ์ ๋ํด ์์ ํ๋กฌํํธ๋ฅผ ์ ์กํ์ญ์์ค. ์ ์ค๊ณ๋ ํ๋กฌํํธ๋ ๋ค์ดํฐ๋ธ JSON ๋ชจ๋ ์์ด temperature 0์์ ๋๋ถ๋ถ์ ๋ชจ๋ธ์์ 85โ92%์ ์ ๋ขฐ๋๋ฅผ ๋ฌ์ฑํฉ๋๋ค.
๊ตฌ์กฐํ ์ถ๋ ฅ ํ๋กฌํํธ์ ์ฌ๋ฐ๋ฅธ ํ ์คํธ ์ธํธ ํฌ๊ธฐ๋ ์ผ๋ง์ธ๊ฐ์?
์ต์ 20๊ฐ: ์ ์ ๊ฒฝ๋ก ์ ๋ ฅ 10๊ฐ(์ผ๋ฐ์ ์ด๊ณ ์ ํ์ฑ๋ ๋ฐ์ดํฐ), ์ฃ์ง ์ผ์ด์ค 5๊ฐ(ํน์ดํ ๊ฐ, ์ ํ์ ํ๋ ๋๋ฝ, ๊ธด ์ ๋ ฅ), ์ ๋์ ์ ๋ ฅ 5๊ฐ(๋ชจ๋ธ์ ์ค๋ํ ์ ์๋ ๊ฐ, ํ๋ ๊ฐ์ ํฌํจ๋ ์ง์์ฌํญ, ๋ชจํธํ ํ์ ). ์ด ํฌ๊ธฐ๋ ๊ณผ๋ํ ์ค์ ์๊ฐ ์์ด ๊ฐ์ฅ ํํ ์คํจ ๋ฒ์ฃผ๋ฅผ ํ์ ํฉ๋๋ค.
์์ ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํด์ผ ํ ๋์ ๊ธฐ๋ณธ ํ๋กฌํํธ๋ฅผ ์์ ํด์ผ ํ ๋๋ ์ธ์ ์ธ๊ฐ์?
์คํจ๊ฐ ๋๋ฌผ ๋ โ ์ถ๋ ฅ์ 10% ๋ฏธ๋ง โ ๊ทธ๋ฆฌ๊ณ ํน์ดํ ์ฃ์ง ์ผ์ด์ค ์ ๋ ฅ์ผ๋ก ์ธํ ๊ฒฝ์ฐ ์์ ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํ์ญ์์ค. ์คํจ๊ฐ ์ฒด๊ณ์ ์ธ ๊ฒฝ์ฐ โ ์ฌ๋ฌ ํ ์คํธ ์ผ์ด์ค์์ ๋์ผํ ํ๋๊ฐ ๋๋ฝ๋๊ฑฐ๋ ๋์ผํ ํ์ ์ค๋ฅ๊ฐ ๋ํ๋๋ ๊ฒฝ์ฐ โ ๊ธฐ๋ณธ ํ๋กฌํํธ๋ฅผ ์์ ํ์ญ์์ค. ์์ ํ๋กฌํํธ๋ ์คํจ๋ง๋ค ์ง์ฐ ์๊ฐ๊ณผ API ๋น์ฉ์ ์ถ๊ฐํ๋ฉฐ, ๋ ๋์ ๊ธฐ๋ณธ ํ๋กฌํํธ๋ ์คํจ๋ฅผ ์์ ํ ๋ฐฉ์งํฉ๋๋ค.
์คํค๋ง์์ ํ๋ ์์๊ฐ ๊ตฌ์กฐํ ์ถ๋ ฅ ์ ๋ขฐ๋์ ์ํฅ์ ๋ฏธ์น๋์?
์. ํ์ ํ๋๋ฅผ ๋จผ์ , ์ ํ์ ๋๋ nullable ํ๋๋ฅผ ๋ง์ง๋ง์ ๋ฐฐ์นํ์ญ์์ค. ๋ชจ๋ธ์ ๋ฌด์์ ํฌํจํ ์ง ๊ฒฐ์ ํ ๋ ์คํค๋ง์ ์ ์์์ ๋ ๋ง์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํฉ๋๋ค. ์ฒซ ๋ฒ์งธ๋ก ๋์ด๋ nullable ํ๋๋ ๋ชจ๋ธ์ด ๊ฐ์ ๋ํด ๋ถํ์คํ ๋ ๋์ค์ ๋์ด๋ ํ์ ํ๋๋ณด๋ค ์๋ต๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด ์์ ํจ๊ณผ๋ GPT-5.5์ Claude 4.6 Sonnet ๋ชจ๋์์ ์ผ๊ด๋ฉ๋๋ค.
๊ด๋ จ ์๋ฃ
- ๊ตฌ์กฐํ ์ถ๋ ฅ๊ณผ JSON ๋ชจ๋: ์ฌ์ฉ ์๊ธฐ ๋ฐ ๋ฐฉ๋ฒ โ ๋ชจ๋ธ ์ค์ ํ ์ด๋ธ๊ณผ ํจ๊ป GPT-5.5, Claude, Gemini๋ฅผ ์ํ API ์์ค JSON ๋ชจ๋ ์ค์
- ๊ตฌ์กฐํ ์ถ๋ ฅ์ ์ํ ์ต์ ๋๊ตฌ (2026) โ ๊ตฌ์กฐํ ์ถ์ถ ์ํฌํ๋ก๋ฅผ ์ํ Instructor, Outlines, Pydantic AI, LangChain ๋น๊ต
- ์ถ๋ ฅ ์ ์ด ๋ฐฉ๋ฒ: ํฌ๋งท, Temperature, ์ ์ฝ ๋์ฝ๋ฉ โ ์ ์ฝ ๋์ฝ๋ฉ ๋ฉ์ปค๋์ฆ, ๊ตฌ์กฐํ ์์ ์ ์ํ temperature์ top-p, stop ์ํ์ค
- ํ๋กฌํํธ ํ์ง ํ๊ฐ ๋ฐฉ๋ฒ: ์งํ, ํ ์คํธ, ์ฒดํฌ๋ฆฌ์คํธ โ 20๊ฐ ์ผ์ด์ค ํ ์คํธ ์ธํธ ๊ตฌ์ฑ, ์ด์ง ํต๊ณผ/์คํจ ์ ์, LLM-as-judge ๋ฃจ๋ธ๋ฆญ
- ์ฌ๋ฌ ๋ชจ๋ธ์์ ํ๋กฌํํธ๋ฅผ ํ ์คํธํ๋ ๋ฐฉ๋ฒ โ ๋ชจ๋ธ๋ณ ์คํจ๋ฅผ ์ฐพ๊ธฐ ์ํด GPT-5.5, Claude 4.6 Sonnet, Gemini 2.5 Pro์์ ๋์ผํ ํ๋กฌํํธ ์คํ
- ์ ๋ก์ท vs ํจ์ท ํ๋กฌํํ โ ํ๋กฌํํธ์ ์์๋ฅผ ์ถ๊ฐํ ์๊ธฐ์ ๋ค์ํ ์์ ์ ํ์ ๋ง๋ ์์ ์
์ถ์ฒ
- OpenAI ๊ตฌ์กฐํ ์ถ๋ ฅ ๋ฌธ์ โ OpenAI API์ response_format ๋ฐ JSON ๋ชจ๋ ๊ธฐ์ ์ฌ์
- Anthropic tool use ๋ฌธ์ โ Claude์ tool_use ํ๋ผ๋ฏธํฐ๊ฐ API ์์ค์์ ๊ตฌ์กฐํ ์ถ๋ ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ
- Google Gemini GenerationConfig ๋ฌธ์ โ ๋ค์ดํฐ๋ธ JSON ์ถ๋ ฅ์ ์ํ Gemini์ responseMimeType ์ค์
- BAML ๋ฒค์น๋งํฌ: ๊ตฌ์กฐํ ์ถ๋ ฅ ์ ํ๋ ํธ๋ ์ด๋์คํ โ ์ฌ๋ฌ ๋ชจ๋ธ์์ ์ ์ฝ ์์ฑ๊ณผ ๋น์ ์ฝ ์์ฑ ๊ฐ์ ์ ๋ขฐ๋ ์ฐจ์ด์ ๋ํ ์ฆ๊ฑฐ
- NIST AI ์ํ ๊ด๋ฆฌ ํ๋ ์์ํฌ โ ํ๋ก๋์ ์์คํ ์์ AI ์ถ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํ ๊ฑฐ๋ฒ๋์ค ์์น