구조화 출력과 함수 호출, 스키마 강제가 필요한 순간 구분하기
Structured Outputs vs Function Calling (Explainer)
LLM 출력을 안정적으로 다루려면 구조화 출력(Structured Outputs)과 함수 호출(Function Calling)의 차이를 이해해야 한다. JSON 모드는 '유효한 JSON'만 보장하지만, 구조화 출력은 strict: true로 제공한 JSON 스키마를 모델이 반드시 따르도록 제약한다 — 즉 형식뿐 아니라 필드·타입 준수까지 보장된다. 함수 호출은 모델이 어떤 도구를 어떤 인자로 부를지 결정하게 하는 메커니즘이며, 여기에도 스키마 강제를 결합할 수 있다. 실무 구분은 이렇다 — 외부 행동(도구 실행)을 트리거하려면 함수 호출을, 단지 응답을 타입 안전한 JSON으로 받아 후속 코드에 넘기려면 구조화 출력을 쓴다. 둘은 배타적이지 않고 함께 쓰인다. 참고로 OpenAI의 구형 Assistants API는 2026년 8월 26일 종료 예정이므로 신규 설계는 최신 권장 경로(Responses/Agents 계열)를 따르는 것이 안전하다. 한국 팀이 안정적 파이프라인을 만들 때 파싱 실패·재시도 비용을 크게 줄여 준다.
프로덕션 LLM 파이프라인의 흔한 장애가 출력 파싱 실패인데, 스키마 강제 옵션을 제대로 고르면 이 클래스의 버그를 구조적으로 제거할 수 있다.
원문 출처
OpenAI