(*이미지 출처: 챗GPT 생성)
우리는 보통 '자연어' 형태로 챗GPT에게 질문을 많이 합니다. 그게 편하기도 하고 자연스럽기 때문이겠지요. 그런데 챗GPT에 질문할 때 JSON 형식*으로 요청하면 결과가 더 잘 나올 수 있다는 것을 한 강연에서 들었습니다. 그 강사는 AI에게 질문할 프롬프트를 전문적으로 의뢰받아서 작성하는 전문가였기 때문에 그 말에 믿음이 갔습니다. 그래서 실제로 제가 해 봐도 비슷한 결과가 나오는지 확인해 보고 싶었습니다. (*JSON에 관한 설명은 글 아래에 있습니다. 이 글을 읽다가 중간에 의문이 생기시는 분들은 읽고 오셔도 좋을 것 같습니다.)
어떤 질문을 할까 생각하다가, 최근 제가 가수 윤하의 음악에 새삼스레 빠졌다는 사실이 떠올라, 그에 관해 질문을 던져 보기로 했습니다.
나:
가수 윤하의 바이오그래피와 디스그래피에 관해 알려 줘.
챗GPT:
가수 윤하(본명: 고윤하, 1988년 4월 29일 출생)는 대한민국의 싱어송라이터이자 프로듀서로...(생애와 앨범들에 관한 1페이지 정도 되는 설명이 출력됨).
대충 질문한 것만큼 딱 그 수준의 개요를 알려줍니다. 하지만 제가 관심이 있는 것은 윤하의 음악 중 특정 앨범에 수록된 곡들, 그리고 그 가사들에 관한 해석에 관한 정보였습니다. 그래서 어떻게 곡과 관련된 내용만 자세하게 알려주게 할까 생각해 보다가, 일단 다음과 같이 질문했습니다.
나:
가수 윤하의 최근 두 앨범에 속한 곡들과, 해당 곡 가사의 해석에 관해서 알려 줘.
챗GPT:
<ENT THEORY : Final Edition> (2022)
이 앨범은...(앨범 개요 설명).
주요 수록곡 및 해석
1. 오르트구름
- (설명)
2. 사건의 지평선
- (설명)
3. Black Hole
- (설명)
<GROWTH THEORY> (2024)
이 앨범은...(앨범 개요 설명)
주요 수록곡 및 해석
1. 맹그로브
- (설명)
2. 죽음의 나선
- (설명)
3. 태양물고기
- (설명)
(개요 정리 및 끝)
나쁘지 않은 대답이었지만, 곡 목록을 챗GPT가 일방적으로 고른 것은 불만이었습니다. 왜냐하면 제가 궁금했던 것은 두 앨범에서 제가 '좋아요' 표시를 했던 곡들이었기 때문이었습니다. 그래서, 이번에는 조금 접근 방식을 바꾸되 다음과 같은 두 가지 방식으로 질문했습니다.
<질문 1>은 평소 제가 하는 것과 마찬가지로 평범하게 자연어로 한 질문입니다.
내가 '좋아요' 표시한 윤하의 곡들은 다음과 같아:
- <Growth Theory: Final Edition>: 죽음의 나선, 맹그로브, 퀘이사, 포인트 니모, 기특해
- <End Theory: Final Edition>: 오르트구름, 별의 조각, 사건의 지평선, 잘 지내
이 곡들의 가사를 해석해 줘.
<질문 2>는 JSON 형식에 맞춰 입력한 질문입니다.
{
"instruction": "다음 윤하의 곡들의 가사를 해석해 줘.",
"liked_songs": [
{
"album": "Growth Theory: Final Edition",
"tracks": [
"죽음의 나선",
"맹그로브",
"퀘이사",
"포인트 니모",
"기특해"
]
},
{
"album": "End Theory: Final Edition",
"tracks": [
"오르트구름",
"별의 조각",
"사건의 지평선",
"잘 지내"
]
}
]
}
위의 두 질문은 내용상 동일함에도 불구하고, 답변에는 조금 차이가 났습니다. JSON 형식의 질문에 대한 대답 쪽이 요점을 추가로 정리해 줬고, 전체적인 개요도 좀 더 잘 정리해 주었습니다.
개인적으로 이 외에도 여러 번 실험을 해 본 결과, JSON 형식으로 질문을 했을 때 답변의 품질이 좋아진다는 것을 확인할 수 있었습니다. 그리고 이런 목적이 아니라도 질문을 JSON 형식으로 바꾸어 주는 것은 그 자체로 충분히 의미 있는 작업이 되겠다는 생각이 들었습니다. 왜냐하면 질문을 새롭게 작성하는 과정에서 내용이 구조화되고 불필요한 부분을 제거할 수 있기 때문입니다.
사실 굳이 익숙지 않은 JSON으로 작성하는 것은 두 번 생각해야 하므로 비효율적일 수 있습니다. 하지만 질문해야 할 내용이 길고 복잡한 경우에는, JSON 형태로 정리해 보는 것이 도움이 될 수 있습니다.
만약 내 질문을 JSON으로 바로 작성하는 게 어렵다면, 일단 챗GPT에게 '~~라는 질문을 JSON으로 바꿔 줘'라는 식으로 요청해 변환한 뒤, 이것을 다시 프롬프트에 입력해 답변을 얻는 방법도 있습니다.
아직 AI 초보인 탓에 이 정도 단순한 예밖에 보여드리지 못했지만, 각자 응용하고 발전시켜 활용해 보셔도 좋을 것 같습니다. 저 또한 연습을 해야 할 것 같고요.
JSON(JavaScript Object Notation)은 정보를 정리하고 전달하기 위한 아주 단순한 문법 형식입니다. 쉽게 말해, 컴퓨터가 서로 주고받는 데이터 형식의 일종입니다.
예를 들어 알바 중인 카페의 사장이 종이에 이런 메모를 남겼다고 합시다.
이름: 김지손
나이: 25
직업: 바리스타
특기: 라테아트
이걸 컴퓨터 방식(JSON)으로 적으면 이렇게 됩니다.
{
"이름": "김지손"
"나이": 25,
"직업": "바리스타",
"특기": "라테아트"
}
위와 같은 JSON의 핵심 구조는 "키": 값 형태라고 할 수 있습니다. 즉,
"이름"은 항목 이름(=key)
"김지손"은 실제 내용(=value)
이와 같이, 하나의 정보를 표현할 수 있습니다.
조금 더 복잡한 JSON은 다음과 같은 형태일 수도 있습니다.
{
"책제목": "조선왕조실록",
"저자": "국사편찬위회",
"페이지수": 512,
"보관장소": {
"서재": "2층",
"책꽂이": "A열"
},
"태그": ["역사", "조선", "기록"]
}
시작과 끝에 중괄호를 사용하고, "보관장소"안에 다른 정보(object)를 넣는 경우에는 또 다른 중괄호를 넣습니다.
"태그"처럼 여러 값을 모아놓은 목록(array)을 넣을 수도 있습니다.
사람이 봐도 쉽게 읽고 쓸 수 있고,
컴퓨터도 정확하게 해석할 수 있습니다.
이런 이유로 AI, 웹사이트, 앱 등 대부분의 프로그램이 JSON으로 대화합니다.
정리하면,
{ } 정보 묶음 시작과 끝
"키" 항목 이름
: "키"와 값을 구분
값 실제 정보
[ ] 여러 값을 나열할 때 사용
(끝.)