🧾 일반 μΆ”λ‘  API κ°€μ΄λ“œ

πŸ”Ή /general 계열 APIλ₯Ό ν™œμš©ν•˜μ—¬ λ¬Έμ„œ 기반 질문-응닡 μš”μ•½μ„ μˆ˜ν–‰ν•˜λŠ” 방법을 μ•ˆλ‚΄ν•©λ‹ˆλ‹€.
πŸ”Ή 곡문 외에 λ‹€μ–‘ν•œ 도메인에 적용 κ°€λŠ₯ν•˜λ©°, μ‚¬μš©μžλŠ” URL(Markdwon) λ˜λŠ” JSON ꡬ쑰둜 닡변을 λ°›μŠ΅λ‹ˆλ‹€.

πŸ“Œ μ‚¬μš© κ°€λŠ₯ν•œ API μ’…λ₯˜

πŸ”Ή /general/inner: λ‚΄λΆ€ λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ 일반 μš”μ•½ μˆ˜ν–‰
πŸ”Ή /general/outer: μ™ΈλΆ€ λͺ¨λΈ(GPT, Claude, Gemini λ“±)을 μ‚¬μš©ν•˜μ—¬ μš”μ•½ μˆ˜ν–‰


βœ… ν”„λ‘¬ν”„νŠΈ μž‘μ„± μ˜ˆμ‹œ

πŸ”Ή ν”„λ‘¬ν”„νŠΈ νŒŒμΌμ€ λ°˜λ“œμ‹œ μ—…λ‘œλ“œν•΄μ•Ό ν•©λ‹ˆλ‹€.
πŸ”Ή [μ˜ˆμ‹œ] μ§ˆλ¬Έμ€ λ‹€μŒκ³Ό 같이 ꡬ성할 수 μžˆμŠ΅λ‹ˆλ‹€:

λ¬Έμ„œ 뢄석 [Q1] 이 λ¬Έμ„œμ˜ μ£Όμš” λ‚΄μš©μ„ μš”μ•½ν•΄μ£Όμ„Έμš”. [Q2] λ°œμ‹ μžμ™€ μˆ˜μ‹ μž 정보λ₯Ό μ •λ¦¬ν•΄μ£Όμ„Έμš”. [Q3] λ¬Έμ„œμ—μ„œ μš”μ²­ν•˜λŠ” μ£Όμš” 쑰치λ₯Ό μš”μ•½ν•΄μ£Όμ„Έμš”. [Q4] λ‚ μ§œ, μž₯μ†Œ, 인λͺ… λ“± μ£Όμš” μ—”ν‹°ν‹°λ₯Ό μΆ”μΆœν•΄μ£Όμ„Έμš”. [Q5] 이 λ¬Έμ„œμ˜ λͺ©μ μ΄λ‚˜ 배경을 κΈ°μˆ ν•΄μ£Όμ„Έμš”.

βœ… Schema JSON μž‘μ„± μ˜ˆμ‹œ

πŸ”Ή schema_file은 선택사항이며, JSON ν˜•μ‹μœΌλ‘œ λ‹΅λ³€ λ°›κΈ° μœ„ν•΄μ„  μž‘μ„±μ΄ ν•„μš”ν•©λ‹ˆλ‹€.
πŸ”Ή μΆ”μΆœμ΄ ν•„μš”ν•œ ν•­λͺ©κ³Ό ν•­λͺ©μ˜ 닡변을 μ •μ˜ν•  λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
πŸ”Ή 특수 ν•­λͺ©μ€ enum λ˜λŠ” type 값을 κ°’μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
    "title": "DocumentSummary",
    "type": "object",
    "properties": {
        "곡문번호": { "type": "string" },
        "곡문일자": { "type": "string" },
        "μˆ˜μ‹ μ²΄": { "type": "string" },
        "μˆ˜μ‹ μž": { "type": "string" },
        "μˆ˜μ‹ μž_μ•½μž": { "type": "string" },
        "λ°œμ‹ μ²΄": { "type": "string" },
        "λ°œμ‹ μž": { "type": "string" },
        "λ°œμ‹ μž_μ•½μž": { "type": "string" },
        "곡문제λͺ©": { "type": "string" },
        "곡문제λͺ©μš”μ•½": { "type": "string" },
        "κ³΅λ¬Έλ‚΄μš©μš”μ•½": { "type": "string" },
        "곡문간연계": { "type": "string" },
        "곡문쒅λ₯˜": {
        "type": "string",
        "enum": ["ν–‰μ •/일반", "기술/μ„±κ³Όλ¬Ό", "회의/기타"]
        },
        "κ³΅λ¬Έμœ ν˜•": {
        "type": "string",
        "enum": ["보고", "μš”μ²­", "μ§€μ‹œ", "νšŒμ‹ ", "계약"]
        },
        "μ²¨λΆ€λ¬Έμ„œμ œλͺ©": { "type": "string" },
        "μ²¨λΆ€λ¬Έμ„œμˆ˜": { "type": "integer" }
    },
    "required": [
        "곡문번호", "곡문일자", "μˆ˜μ‹ μ²΄", "μˆ˜μ‹ μž", "μˆ˜μ‹ μž_μ•½μž",
        "λ°œμ‹ μ²΄", "λ°œμ‹ μž", "λ°œμ‹ μž_μ•½μž", "곡문제λͺ©", "곡문제λͺ©μš”μ•½",
        "κ³΅λ¬Έλ‚΄μš©μš”μ•½", "곡문쒅λ₯˜", "κ³΅λ¬Έμœ ν˜•", "μ²¨λΆ€λ¬Έμ„œμ œλͺ©", "μ²¨λΆ€λ¬Έμ„œμˆ˜"
    ]
}

πŸ“Œ μ£Όμš” 킀·속성 μ„€λͺ…

πŸ”Ή μœ„ JSON μ˜ˆμ‹œλŠ” Schema ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” λ°©μ‹μœΌλ‘œ μž‘μ„±λ˜μ–΄ 있으며, 각 ν‚€μ˜ μ˜λ―ΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

Tip. schemna json을 μ‚¬μš©ν•˜λŠ” 경우, ν”„λ‘¬ν”„νŠΈμ˜ 각 ν•­λͺ©μ— λŒ€ν•œ μ§€μ‹œλ¬Έ(description)을 κ°λΆ„μœΌλ‘œ μ„€μ •ν•΄μ£Όλ©΄ 더 μ’‹μŠ΅λ‹ˆλ‹€.

1. 곡문번호: λ¬Έμ„œ 번호λ₯Ό κΈ°μž…ν•˜μ„Έμš”. (μ˜ˆμ‹œ: Ref. No. SYJV-250031) 2. 곡문일자: 곡문 λ°œν–‰μΌμ„ μž‘μ„±ν•˜μ„Έμš”. (μ˜ˆμ‹œ: Mar / 28 / 2025) 3. μˆ˜μ‹ μ²˜: μˆ˜μ‹  κΈ°κ΄€μ΄λ‚˜ λΆ€μ„œλͺ…을 μž‘μ„±ν•˜μ„Έμš”. (μ˜ˆμ‹œ: Department of Public Works and Highways) ... 16. μ²¨λΆ€λ¬Έμ„œμˆ˜: μ²¨λΆ€λ¬Έμ„œμ œλͺ©μ„ λ°”νƒ•μœΌλ‘œ λ¬Έμ„œμ˜ 개수λ₯Ό μž‘μ„±ν•˜μ„Έμš”.

βœ… μ‚¬μš© 절차 μ•ˆλ‚΄

πŸ”Ή ν•΄λ‹Ή API에 μ—…λ‘œλ“œ κ°€λŠ₯ν•œ νŒŒμΌμ€ 3κ°€μ§€λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€:

FastAPI general μž…λ ₯ ν™”λ©΄ μ˜ˆμ‹œ

πŸ“Œ API 첨뢀 파일 μ„€λͺ…


1️⃣ Markdown ν˜•μ‹ 응닡 μ˜ˆμ‹œ(schema file λ―Έμ—…λ‘œλ“œ)

πŸ”Ή λͺ¨λΈμ€ μ§ˆλ¬Έμ— λŒ€ν•΄ 쀄글 ν˜•μ‹μ˜ 응닡을 μƒμ„±ν•˜λ©°, 응닡 JSONμ—λŠ” λ‹€μŒ ν•„λ“œκ°€ ν¬ν•¨λ©λ‹ˆλ‹€:

FastAPI general κ²°κ³Ό ν™”λ©΄ μ˜ˆμ‹œ

πŸ“Œ μ£Όμš” λ‹΅λ³€ ν‚€ μ„€λͺ…

FastAPI general κ²°κ³Ό ν™”λ©΄ μ˜ˆμ‹œ

2️⃣ ꡬ쑰화 JSON ν˜•μ‹ 응닡 μ˜ˆμ‹œ(schema file μ—…λ‘œλ“œ)

πŸ”Ή /general API에 schema_file을 ν•¨κ»˜ μ—…λ‘œλ“œν•œ 경우, λͺ¨λΈμ€ μ§€μ •λœ JSON Schema에 따라 ν•­λͺ©λ³„ 응닡을 μƒμ„±ν•©λ‹ˆλ‹€.

FastAPI structured 응닡 μ˜ˆμ‹œ

πŸ“Œ μ£Όμš” λ‹΅λ³€ ν‚€ μ„€λͺ…

β€» Claude λͺ¨λΈμ€ 영문 ν•„λ“œλͺ…λ§Œ ν—ˆμš©ν•©λ‹ˆλ‹€.