다섯 살도 알 수 있게 · AI
구조화 출력이 뭐예요?
구조화 출력(JSON 출력)을 앵무새에게 칸이 그려진 양식을 주고 그 칸에만 쓰게 하는 이야기로 풀어봤어요.
답은 맞는데 모양이 매번 달라요. 기계는 못 읽어요.앵무새 답을 장부 프로그램에 넣고 싶어요. 그런데 어제는 날짜가 앞, 오늘은 이름이 앞. 기계는 어디가 뭔지 몰라요.
앵무새는 말로 답하는 새예요. 칸이 없으면 자유롭게 써요.쪽지에 "짧게 써 줘"라고 해도 모양은 그때그때 달라요. 사람은 다 알아듣지만 기계는 정해진 칸이 있어야 읽어요.
구조화 출력은 칸이 그려진 종이를 주고, 그 칸에만 쓰게 하는 거예요.칸 이름과 종류를 미리 정해요. 앵무새는 그 칸만 채워요. 기계는 이름 칸, 날짜 칸을 바로 찾아 읽어요.
칸 이름과 종류를 미리 정해요이름은 글자, 금액은 숫자
없는 값은 빈칸지어내지 말고 비워 두기
사람 말은 빼요기계가 읽어요 — 인사말은 안 돼요
칸을 벗어나면 다시검사해서 틀리면 다시 쓰게
같은 내용이라도 칸에 쓰면 기계가 읽어요.칸에는 이름이 붙어 있어요. 기계는 이름 칸을 보고 이름을, 금액 칸을 보고 숫자를 꺼내요. 모양이 늘 같으니 매번 돼요.
칸이 맞다고 사실이 맞는 건 아니에요. 내용 확인은 따로 해요.금액 칸에 숫자가 들어 있어도 지어낸 숫자일 수 있어요 — 그럴듯 앵무새는 양식 안에서도 그래요. 그리고 도구 부탁도 이 양식으로 써요.
한 줄로
구조화 출력 = 앵무새에게 칸이 그려진 양식을 주고 그 칸에만 쓰게 하기. 기계가 바로 읽어요. 칸이 맞아도 내용이 맞다는 뜻은 아니에요.
Structured output / JSON mode. 모델의 응답을 미리 정한 스키마(JSON Schema 등)에 맞는 형태로만 내게 하는 기능이에요. 필드 이름·타입·열거형을 정하고, 응답을 파싱·검증해서 실패하면 재시도해요. 함수 호출(도구 호출)도 같은 원리로 인자를 스키마에 맞춰 내는 거예요. 형식이 맞아도 값의 사실성은 따로 검증해야 해요.
어른들은 이렇게 불러요
- 구조화 출력
Structured output - 칸에만 쓰기. 앵무새 답을 기계가 읽을 수 있는 모양으로 고정해요.
- JSON 모드
JSON mode - 가장 흔한 양식 종류. 중괄호와 따옴표로 된 칸 목록. 거의 모든 프로그램이 읽어요.
- 스키마
Schema - 양식의 설계도. 칸 이름, 종류(글자·숫자·예/아니오), 꼭 있어야 하는 칸을 미리 적어요.
- 함수 호출과의 관계
Relation to function calling - 도구 부탁도 양식. 어떤 도구를 어떤 값으로 쓸지 칸에 써서 넘겨요. → 도구 상자
- 검증
Validation - 양식 검사. 칸이 다 있는지, 종류가 맞는지 기계가 먼저 확인해요.
- 파싱 실패 재시도
Retry on parse failure - 칸을 벗어나면 다시 쓰게. 가끔 양식이 깨져요. 틀린 부분을 알려 주고 한 번 더 시켜요.
- 열거형
Enum - 정해진 값만. 예: 상태 칸엔 대기·완료·취소 중 하나만. 새 낱말은 안 돼요.
- 프롬프트
Prompt - 조련 쪽지. 양식을 주는 것도 쪽지의 일부예요. → 조련 쪽지
다음 이야기
콩을 하나씩 바로 보여주기 →