[설명] 정규식 파싱 대신 구조화 출력·함수 호출 제대로 쓰기
Structured Outputs and Function Calling with LLMs
LLM 응답을 정규식으로 긁어 JSON을 추려내는 방식은 이제 안티패턴이다. 핵심은 스키마를 한 번 정의하고, 그 JSON 스키마를 모델에 형식 지시로 넘긴 뒤, 응답을 원본 스키마로 다시 검증하는 흐름이다. 제약 디코딩 기반의 네이티브 구조화 출력은 스키마 유효성을 사실상 보장하며, 스키마 없는 JSON 모드는 약 8~15% 비율로 실패한다고 보고된다. 제공사마다 결이 다른데, OpenAI·Gemini는 response_format/스키마 기반 strict 모드를, Claude는 input_schema를 갖춘 도구 정의(tool use)와 tool_choice 패턴을 쓴다. 또한 vLLM·Ollama 등 셀프 호스팅 런타임도 스키마 기반 출력 제어를 노출한다. 스키마 강제는 호출당 토큰이 다소 늘지만 재시도 비용을 없애므로, 복잡한 스키마는 잘게 쪼개 병렬 호출로 처리하는 편이 비용 효율적이다.
구조화 출력은 프로덕션 LLM 파이프라인의 신뢰성을 좌우하는 기본기로, 제공사별 구현 차이를 알아야 이식성 있는 코드를 짤 수 있다.
원문 출처
agenta.ai