GPT-5가 출시되면서 Function Calling에 Free-Form Function Calling과 Context-Free Grammar (CFG)를 지원하는데, 이게 숨은 보석이다.
Free-Form은 결과를 JSON이 아니라 SQL, Python script 등의 코드등을 결과로 받거나 XML, CSV 같은 형태로도 받을 수 있다. 다만 plain-text로 주는 형태라서 주의가 필요하다. 이건 예전에도 프롬프트 트릭으로 쓰곤했던거라 그냥 맘이 좀 편해졌다(?)정도.
CFG가 대박인데, Lark와 Regex를 지원한다.
Lark CFG는 문법 규칙을 정의하는 방식으로, 결과만 말하자면 Function Calling의 출력 형식을 내가 마음대로 제어 할 수 있다는 뜻.
예를 들면 다음은 덧셈 뺄셈 형식으로 출력을 강제한다.
—출력—
2 + 2 - 1
—Lark CFG—
start: expr
expr: INT (SP (ADD|SUB) SP INT)*
ADD: "+"
SUB: "-"
SP: " "
INT: /[0-9]+/
—
조금 더 실용적인(?) 예를 들면 다음같은 구성의 출력을 강제 할 수 있다.
—출력—
NAME: Jin
AGE: 18
JOB: Software Engineer
—Lark CFG—
start: (name_entry | age_entry | job_entry)+
name_entry: "NAME:" WS* NAME_VAL
age_entry : "AGE:" WS* AGE_VAL
job_entry : "JOB:" WS* JOB_VAL
NAME_VAL: /[^\n]+/
JOB_VAL : /[^\n]+/
AGE_VAL : /[0-9]+/
WS: /[ \t]+/
%ignore WS
—
이걸 Function Calling을 호출할 때 JSON Schema 대신 넣으면, 원하는 형식으로 강제해서 출력한다.
여백이 작아(?) 아주 간단한 예만 들었는데, 조금만 생각해봐도 진짜 어마어마하게 유용하게 사용될 수 있다는 걸 쉽게 알 수 있다.
다음 내용이 궁금하다면?
이미 회원이신가요?
2025년 8월 8일 오후 3:49