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

댓글 0