llama.cpp에는 gbnf라는 기능이 있음


대충 뭐하는 기능이냐면 


Request: schedule a call to Alice at 8pm; Command: 이런 input을 넣었을때 원래대로라면



이런식으로 이상하게 반복되거나 문장형으로 출력이 나오지만


만약 여기에

대충 이렇게 생긴 복잡한 명령어를 test.gbnf로 저장해서 실행시키면


이런식으로 원하는 index를 가지고 있는 json 형식으로 출력이 가능하고


실제로 문법이 완벽하게 갖춰진 json 구문인것을 직접 확인할 수 있음


내가 알기로는 이게 llama.cpp에서 문장을 생성하는 단계에서부터 문법적으로 관여를 하는거여가지고 GPT4나 클로드처럼 서버에서 돌아가는건 거기서 지원해주지 않으면 불가능하고 로컬이어도 오픈라우터처럼 다른 서버에서 돌리는걸 받아오는 경우에는 이렇게 문법에 맞춰서 출력하게 하는게 불가능한거로 알고있음


llama.cpp 가지고 하는거에 관심있는 챗붕이들이면 이것도 한번 구경해보면 좋을것 같음