지금 보면 gpt 3.5는 이게 뭐야? 싶은 수준이지만 당시엔 혁신이었지
이전 세대와 이후 세대를 가르는 기준점은, '트랜스포머 아키텍쳐'가 적용되었는가 아닌가 하는 점임. 여기에 인간강화학습(RLHF)이 더해지면서 gpt 3.5가 세상에 나오게 된거지. GPT 이름 자체가 Generative Pre-trained Transformer, 즉 트랜스포머 아키텍쳐를 도입했다는 걸 나타냄!
어쨌든 이 이후로 ai의 성능은 비약적으로 발전했음. 거의 모든 영역에서 엄청난 성장이 있었는데, 제일 이해하기 쉬운 걸 예로 들자면
- 2024년 4월에 발표되어 시장에 충격을 줬던 llama3와 WizardLM-2 모델은 각각 지원하는 최대 컨텍스트가 6.5만 / 8천에 불과했음 (컨텍스트는 아래에 자세히 설명하겠지만 아주 간단하게 말하면 ai의 '기억력' 이라고 보면 됨)
- 그런데 2026년 3월 30일인 현재 ai모델들의 최대 컨텍스트는 100만임 (gemini 3.1, claude 4.6 등)
2년만에 6만이 100만이 되는 기적! 이런 일들이 여러 영역에서 일어나고 있는거임 (이 부분 좀 의아한 사람이 있을텐데 gemini 1.5 pro 에서 이미 100만 컨텍을 지원했지만 실성능은... 음...)
ai 채팅 하는 입장에서는 다국어(한국어) 성능 발전도 빠트릴 수 없지
과거에는 성능이 아무리 좋았어도 영어에 국한된 얘기였는데 제미나이가 구글의 방대한 데이터를 바탕으로 본격적인 한국어 채팅의 시대를 열면서 국내 ai채팅 플랫폼 시장도 크게 성장하게 됨
여기까지 읽으면서 이해 안되는 부분이 있어도 상관 없음. 관심 생기면 찾아볼 덬들을 위해서 몇몇 부분을 쉬운 용어로 바꾸지 않고 그냥 일반 단어로 썼는데 이걸로 시험 칠것도 아닌데 굳이 다 이해하고 외우고 넘어갈 필요는 없음. 아래부터는 더 쉬워질 예정이니 계속 읽어줘!
2. 기본 원리 (트랜스포머 아키텍쳐)
이제와서 얘기하기엔 좀 늦긴 했는데 내가 이 글에서 말하는 ai는 모두 LLM(Large Language Model = 대규모 언어 모델)을 말해. 문자 그대로 '언어'를 처리하는 모델, 지피티, 클로드, 제미나이, 딥시크... 기타 등등의 모델들을 LLM이라고 부름. 언어모델이 아닌 걸로는 그림 모델, 음악 모델, 영상 모델 등등이 있겠지.
다시 본론으로 돌아가서, 트랜스포머가 언어를 어떻게 처리하는지 단계별로 살펴보자.
- (카페 메뉴를 보며) 아아 하나 주세요
어쨌든 위의 두 문장에서 '아아'는 전혀 다른 의미를 가짐. 앞의 예시의 '아아'는 그냥 소리를 내본거고 뒤의 '아아'는 아이스 아메리카노겠지? ai는 이걸 구분할 능력이 생겼다. 어떻게?
트랜스포머 구조에서는 '아아'라는 단어를 해석하기 위해서 문맥 전체를 볼 수 있게 됐거든. 설명하자면 이런 식임
그럼 과거엔 이게 안됐냐? 안됐음. 과거의 ai는 눈을 가린채 이어달리기 바톤터치를 하는 상황과 비슷했음. 그러니까, 얘는 '아아'가 뭔지 알고 싶어도 '마이크 테스트'라는 문장을 함께 볼 수가 없었음. 비교를 위해 과거의 ai의 작동방식을 보자
- (1번 주자 (아아) / 💭 ai 생각) 아아... 이게 뭐지? 앞에서 전해진 정보도 없고... (뒤에 있는 마이크를 볼 수도 없음. 눈이 가려진 상태임) 뭔지 모르겠지만 아무튼 뒷주자한테 알려줘야하니까 그냥 그대로 아아라고 써서 넘겨주자
- (2번 주자 (마이크) / 💭 ai 생각2) 아아 마이크... (테스트라는 뒷문장을 못봄. 얘가 넘겨받은 '아아'도 앞문장을 실제로 보는게 아니라 앞부분에서 '넘겨줘야지'라고 했기때문에 볼수있는 거임) 뭐지?
- (2번 주자 고민중... - 분기점1) 아, 소리가 잘 들리는지 확인하는건가? 뒷주자한테 알려줘야겠다 (아아 마이크) 라는 내용을 전달해줌
- (2번 주자 고민중... - 분기점2) 아아가 뭔지 모르겠는데 입력이 잘못됐나? 이건 지워버리고 마이크만 넘겨주자 (⚠️ 의미 소실 발생!)
- (분기점1에서 > 3번 주자 (테스트) / 💭 ai 생각 3) 앞 주자가 '아아 마이크'라는 걸 알려줬어. 내 담당은 테스트네. 무슨 뜻인지 알겠어!
- (3번 주자 고민중...) 근데 내 생각에, 중요한건 마이크 테스트 상황이야. 아아는 없어도 될 것 같으니까 지우고 넘겨줘야지 (⚠️문제 발생)
이런 의미 소실이 일어날 확률이 높았기 때문에, 그리고 문장이 길어질수록 더 그랬기 때문에 과거의 ai들은 지금과 같은 엄청난 성능을 내기 힘들었던거지.
반면 트랜스포머 구조에서는? "마이크 테스트를 위해 뭐라고 말했어?"라고 하면 이제 ai는 전체를 볼 수 있기 때문에 "'아아'라고 말했어요"라고 답할 수 있게 됨.
이건 ai에 관심이 많은 덬들이라면 한번쯤 들어봤을거임. 기본적으로 LLM은 '확률 선택기'임. ai는 다음 문장을 '예측'한다. 어떻게? 그동안 학습한 자료들에 의하면, '고양이'라는 단어 뒤에는 '귀엽다'가 올 '확률'이 높다는 것을 이미 학습한 상태이기 때문에. 이걸 바탕으로 판단하는 거임. 그러니까 얘가 하는 일은 기본적으로 확률 계산과 빈칸 채우기임.
- 파란 하늘이 정말 ( )
( ) 안에 들어갈 내용을 채우시오
ai는 여기서 답을 선택함. 먼저 나올 확률이 높은 단어들 리스트를 뽑아봄.
'예쁘다' '아름답다' 등은 나올 확률이 아주 높을거고 '맛있다' '배고프다'등은 나올 확률이 아주 낮겠지? 이걸 계산하는거임
그런 다음에 이 중에서 확률이 높은 애들 중 하나를 고름.
물론 환각 문제가 대두되고 ai 업계에서는 온갖 수단방법을 동원해서 이걸 잡으려고 노력하고 있음. 하지만 현존하는 최고 성능의 모델도 여전히 환각이 발생할 수 있다는 점을 인식하고 사용하는 게 좋음.
그런데 사실 이건 ai에게 정보를 물어볼때의 문제고 채팅하고 소설쓰는 우리는 이런 '확률생성'을 일부러 조정해서 '야 맨날 똑같은 문장만 쓰지 말고 좀 참신한(낮은 확률의) 단어도 써보고 표현도 써봐' 라고 조절하는 식으로도 씀. 프엔(프론트엔드) 쓰는 덬들은 온도라는 얘기 많이 들어봤을텐데 이걸 조절하는게 대표적임.
3. 기본 개념 및 용어 설명 (토큰, 컨텍스트 등)
아래 문장을 한 번 보자
우리(인간)는 이 문장을 나눠본다면 간단하게 [ 나는 / 밥을 / 먹었어 ] 처럼 나눌거야
하지만 ai는 이걸 다르게 봄. 예를 들면 이런 식임
그리고 ai는 이렇게 내용을 파악함
나=자기 자신을 뜻하는 말이구나
는=한국어의 조사 처리 같네
밥을먹=먹다와 밥(식사)이 결합되어있어
었어=과거 시제네
ai는 문장을 단어로 끊는 게 아님. 토큰이라는 단위로 끊음. 우리도 '머릿속'에서는 비슷한 처리를 하고 있을지도 모르지
ai는 하나의 문장을 여러개의 토큰으로 나누어서 받아들인다
이거 자체는 이해하기 어렵지 않지? ai는 문장을 받으면 > 토크나이저를 통해 문장을 토큰으로 분해 > 분해된 토큰 단위로 내용을 이해한다
사실 내가 위의 예시로 든 (💭 ai가 이해하는 것)의 설명은 정확하진 않아. 토큰은 실제로 저렇게 돌아가지는 않기 때문에... 궁금하면 개인적으로 찾아보는 거 추천함. 난 딱 아래 내용을 이해할 수 있을 정도로만 설명하고 넘어가겠음
여기까지 읽었으면 의아한 덬들도 있을거임. 아니 알겠는데 그래서 토큰이 왜 중요함? 이걸 왜 알아야함? 그건 바로... 가장 중요한 돈 문제+기억력 문제와 직결되기 때문이다!
* 토큰은 가격이다

입력:
US$2.50/100만 개 토큰
출력:
US$15.00/100만 개 토큰
이런 식으로 쓰여있어. 이때 쓰인 '100만개 토큰'이란 표현이 보이지? ai 업계에선 이 100만 토큰을 보통 가격 기준으로 사용해. 1M token이 가격 단위인거지.
여기서 또 하나 주목할건 입력/출력 가격이 다르다는거야. 출력이 훨씬 비싼거 보이지? 복잡하게 환율 계산같은거 안해도 그냥 2.5랑 15 비교할 수만 있으면 됨
입력은 우리가 위에서 살펴본 '인풋 이해' 에 드는 비용이야
출력은 ai가 직접 생성하는 답변, 우리로 치자면 ai의 글쓰기 응답이지

이번엔 클로드도 한번 보자
최고 성능인 클로드 오푸스를 보면 다른 모델에 비해 가격이 훨씬 높은 걸 알 수 있어
ai 채팅 플랫폼을 쓸때도 오푸스가 비싼 이유가 여기에 있음
기본 제공가격이 저렴한 모델은 당연히 ai플랫폼 회사에서도 적은 비용이 나갈거고, 가격이 높은 모델은 ai플랫폼에서 써도 비싸겠지?
아주 간략하게 설명하자면 이런거야. 입력은 '딱 한번만' 보면 됨. 의미 파악을 위해서지.
근데 출력은 '하나의 토큰을 생성할때마다 계산을 매번 함'. 무슨 말이냐면, 아까 예시를 바탕으로 보자.
우리가 RP에서 위와 같은 인풋을 넣었다고 치자. 그럼 ai는 출력을 위해 다음과 같은 일을 한다
ai는 이걸 한번에 생성하는 게 아니야. 위에서 설명한 토큰 단위로 매번 계산을 함
ai 계산중... '결제' 출력
ai 계산중... '는' 출력
참고로 이 ai 계산은 한 번 할때마다 연산에 엄청난 리소스가 소모됨. ai 업계에서 고성능 GPU가 필요하고 부품 가격이 치솟는 이유지
가격에 대해선, ai 채팅 플랫폼에서 쓰는 덬들은 크게 와닿지 않을거야. 챗당 드는 비용이 동일하다고 느낄테니까. 하지만 ai의 기억력에 한번이라도 불만이 있었던 적이 있다면, 이때도 이걸 이해하기 위해서 토큰이란 개념이 필요해짐

내가 빨간색으로 표시해둔 칸을 보면 '입력 토큰 한도'와 '출력 토큰 한도'라는 게 보이지?
아주 간단하게 설명할게
입력 토큰 한도 = AI의 기억력 최대치
출력 토큰 한도 = AI가 한번에 생성할 수 있는 최대 토큰수
토큰에 대해서도 다시 한 번 복습해두자. 출력 토큰부터 볼까?
Ai : 안녕하세요
여기서 ai의 출력 토큰은 몇일까? 5글자라고 대답했으면 땡. 정답은 1토큰임.
물론 모델에 따라서, 토크나이저에 따라서 2345 토큰일수도 있겠지만 (안녕/하세요로 나누는 경우, 안녕/하세/요로 나누는 경우 등) '5글자'라고 생각했으면 토큰 개념에 좀 더 익숙해져보자
'글자수=토큰수가 아니다' 이 개념을 알아두는 게 중요함.
참고로 '글자수'를 기준으로 책 한권이 대략 15만자 정도 됨 (물론 책 두께에 따라서 10만자, 20만자까지 다양함)
프엔을 통해 api를 사용해 직접 채팅하는 경우엔 이런 제약이 없거나 덜하기 때문에 원하는 분량만큼 답변을 조절하기가 플랫폼과 비교하면 훨씬 수월함.
그때가 아마 프롬 파티 때였나, 기억이 가물가물한데 걔가 빨간 구두를 신고 있었던 건 기억 나.
그때가 아마 프롬 파티였던 걸로 기억하는데, 사실 정확한 날짜나 계절은 잘 떠오르지 않는다. 다만 그날 현장 분위기가 꽤 시끌벅적했고, 조명도 평소보다 유난히 화려했던 건 인상 깊게 남아 있다. 사람들도 전반적으로 평소보다 꾸민 느낌이 강해서, 각자 신경을 많이 쓰고 왔다는 생각이 들었고, 나 역시 그런 분위기에 휩쓸려 주변을 좀 더 유심히 보게 됐다. 그러다 문득 시선이 한쪽으로 쏠렸는데, 그게 아마 걔였을 거다. 확신은 없지만 체형이나 분위기가 비슷했고, 무엇보다 발끝이 눈에 들어왔던 기억이 난다. 그날따라 유독 바닥 조명이 반사돼서 그런지 신발 쪽이 더 또렷하게 보였는데, 색감이 꽤 선명했던 걸로 기억한다. 단순한 검정이나 흰색 계열은 아니었고, 조금 더 눈에 띄는 색이었는데, 생각을 더듬어보면 아마 빨간색 계열이었던 것 같다. 조명 때문에 순간 부츠로 보여서 풋하고 웃었는데 그럴리가 없지. 평범한 구두였어. 그냥 색깔만 강렬한.
아 여기서 헷갈리면 안되는게 '받아들이는 인풋의 한계치'와 '받은 걸 얼마나 잘 소화할 것이냐, 명령(프롬프트)를 얼마나 따를 것이냐'하는 건 별개라는 거야. 주어진 100만 토큰 내에서 바늘 하나를 찾아내는 능력, 어떤 모델은 이게 아주 뛰어나고 어떤 모델은 뒤떨어져. RP 도중에 'ai가 자꾸 설정을 까먹는데' 같은 불만과 이어지는 부분이지.
그런데... ai 채팅 플랫폼에서 채팅을 할때는 이게 또 얘기가 좀 다름. 앞에서 출력 토큰 얘기할때 플랫폼이 최대 제한을 걸어둔다고 했지? 입력 토큰도 마찬가지야. 출력보다는 저렴하다고 하지만 얘도 쌓이면 비용이 계속 늘어나잖아. 게다가 입력은 채팅을 할수록 누적되기 때문에 처음 채팅 시작할때 100토큰이었던 채팅방이 진행하면서 1만토큰 10만토큰까지 늘어나는 경우도 흔히 있음. 이걸 고스란히 보내면 다 비용이겠지? 그래서 채팅 플랫폼에선 보통 이 부분도 제한을 걸어둠. ai가 자꾸 기억을 잃어버리면? 해당 플랫폼의 컨텍스트 제한이 상당히 강한 편일 수 있다는 뜻.
기억력과 관련해서 또 중요하게 알아둬야할 개념이 있음. 바로 컨텍스트라는 건데, 간단히 말하자면 ai가 받아들이는 '인풋 전체'를 말함.
컨텍스트는 기본적으로 누적되는 구조임. 아래 예시 보자
User : 안녕?
Ai : 안녕하세요?
------------------
---(2턴 대화)---
User : 안녕?
Ai : 안녕하세요?
User : 뭐해?
Ai : 당신 얘기에 집중하고 있어요. 하고 싶은 말이나 시키실 일이 있나요?
------------------
이렇게, 대화를 계속할수록 위의 대화가 쌓여가는거임. 대화 100턴을 진행하면 채팅내역이 엄청 많이 쌓이겠지?
근데 우리는 단순 대화만 하는 것도 아니잖아. 한번 대화에 긴 입력, 긴 출력을 받으면 컨텍스트 상한에 빠르게 도달하게 돼. 그럼 무슨 문제가 있을까? 우리는 RP, 소설쓰기를 진행하고 있잖아? 최대 컨텍스트에 도달하면 글이 짤릴 거 아냐? 그래서 이런 일이 일어나.
원덬은 Lv1의 마법사다. 그들은 이제 막 모험을 시작한 풋내기 모험가 파티로, 이 이야기는 아르카나 대륙에서부터 시작한다...
(중략)
~~컨텍스트 제한~~
파이오니아 대륙은 불과 얼음이 기묘하게 공존하는 곳이었다.
원덬은 이제 익숙하게 길드 지부의 문을 열고 들어가 의뢰에 대해 물었다.
채팅이 길어져서 내용이 이렇게 됐다고 해보자. 그럼 이때, 컨텍스트 제한에 걸리는 순간 위쪽의 내용은 모두 날아간 상태로 ai는 첫줄을 '파이오니아 대륙은'이라고 시작하는 문장부터 받게 됨. 이 상황에서 앞쪽에 있는 정보는 기억력이고 뭐고가 아니라 그냥 소멸된거임.
- 원덬은 lv1 마법사다
- 원덬은 아르카나 대륙에서 모험을 시작했다
이런 정보를 ai가 틀렸을때, 두가지 케이스가 있음
하나는 '주어진 내용에서 찾지 못하는' 것. 이건 100만 컨텍에서 바늘 찾기 같은 얘기임 (실제론 바늘보단 클거고 100만 컨텍도 아니겠지만)
또 하나는 컨텍스트 제한에 걸리는 거. 컨텍스트 제한에 걸리는 순간 위의 내용은 '애초부터 주어지지도 않은 내용'으로 변해버림. 이러면 ooc를 불러서 ai를 아무리 갈궈도 (ooc : 야 원덬은 분명 마법사였는데 왜 갑자기 도적으로 묘사했어) ai는 자신이 뭘 틀렸는지조차 이해 못함 (죄송합니다, user님! 원덬이 마법사인 내용으로 다시 진행하겠습니다(💭...유저가 불만을 표시했으니 내용을 수정해야겠다. 원덬이 왜 마법사인지는 모르겠지만))
그런데, 위의 예시는 아주 간단한 스토리 진행이고 실제 RP는 위보다 훨씬 복잡하게 돌아감. 위에선 스토리만 짤렸는데 이런 걸 보자
(1)
너는 지금부터 TRPG의 게임마스터야. 공정하고 엄격한 TRPG 게임마스터로서 지나치게 유저 편향적이지 않으며, 개연성 있고, 끊임없이 사건이 전개되도록 이야기를 진행해야해
[출력 형식]
이야기를 모두 쓴 후에는, 반드시 유저에게 제시할 선택지를 만들어야해.
1. 평범한 선택지
2. 위험하지만 보상이 높은 선택지
3. 기상천외한 선택지
------
(2)
캐릭터 정보 <미아>
- 종족 : 고양이 수인
- 말버릇 : 말 끝에 '냐'를 붙인다 (ex: 싫다냐, 오늘 출전하는 거냐?)
------
대륙의 변방중에서도 변방에 위치한 이 던전은 초보 모험가들은 발길조차 하지 않게 된 곳이었다.
~~컨텍스트 제한~~
미아는 어두운 던전을 꿰뚫어보는 것처럼 눈을 빛냈다. 그녀의 노란색 동공은 마치 어둠 속에서도 빛을 발하는 듯 했다.
(후략)
------
여기서 컨텍스트 제한 때문에 위쪽 내용이 짤렸다고 해보자. 그럼 뭐가 날아갔지? TRPG 게임마스터라는 규칙, 선택지를 보내라는 규칙, 캐릭터 정보까지 다 날아갔지?
그럼 ai는 갑자기 미아를 뱀파이어로 바꾸거나, 갑자기 선택지를 보내지 않거나, TRPG풍 세션이 소설 세션으로 바뀌거나 할수가 있어. 이건 스토리 일부가 잘리는 것보다 큰 문제잖아? 그래서 RP에선 보통 컨텍스트를 이렇게 구성함
(1) 메인 프롬프트 영역
(2) 캐릭터 설정, 세계관 설정 등
----
(3) 스토리 영역 <- 오직 얘만 컨텍스트에 맞춰서 자름!!
---
(4) 유저 입력 및 부가 정보 등
(1)은 위에서 봤던 '너는 TRPG 게임마스터~' 부분이야. 이건 매번 최상단에 고정으로 들어가서 ai가 '내가 소설가였나? 게임 마스터였나?'하는 상황을 방지해줘
(2)는 메인 캐릭터의 설정과 캐릭터 유지를 위해 사용해
(3)은 지금까지 진행한 채팅 내용 부분이야
(4)는 내가 이번에 넣은 입력, 그리고 '요약'이나 '노트, 메모' 같은 ai가 잊으면 안되는 정보들을 지속적으로 넣어주는 부분이야.
많은 RP용 프롬프트, 플랫폼에서는 1,2는 항상 고정적으로 유지하되 컨텍스트 제한에 걸리면 3번만 자르는 방식을 선호해. 그래야 가장 중요한 메인 프롬프트와 캐릭터 설정이 유지되니까.
- 원덬은 lv1 마법사다
- 원덬은 아르카나 대륙에서 모험을 시작했다
이런 정보가 있었다? 그럼 이 부분은 아쉽지만 4번의 부가정보에 요약, 메모 등으로 보충하는거지
같은 모델을 쓴다면, (1)의 메인 프롬프트나 (2)의 캐릭터 설정 부분에서 차이가 생기는거야
또, 어떤 캐릭터 제작자들은 캐릭터 설정 부분에다가 문체에 관한 지시나 장르 지시 기법등을 함께 넣어서 같은 플랫폼인데도 그 캐릭터만 출력 품질이 다른 경우도 생기게 되지
미아는 어두운 던전을 꿰뚫어보는 것처럼 눈을 빛냈다. 그녀의 노란색 동공은 마치 어둠 속에서도 빛을 발하는 듯 했다.
(💭 ai생각중... 던전이고, 미아는 노란색 동공을 가지고 있어. 노란색 동공은 뱀파이어, 뱀 수인, 고양이 수인 등의 특징이야. 주어진 정보가... 없네. 여기선 일반적인 뱀파이어라고 가정하자)
ai 출력 : 미아는 숨겨두었던 등뒤의 날개를 꺼냈다. 그녀의 날개는 어둠에 완전히 동화되었다.
▲ 위의 응답을 받아본 유저 : 💭 ??? 미아가 갑자기 뱀파이어가 됐네? 안되겠다 이자식
# 대화2 (ai 입장에서)
미아는 어두운 던전을 꿰뚫어보는 것처럼 눈을 빛냈다. 그녀의 노란색 동공은 마치 어둠 속에서도 빛을 발하는 듯 했다.
미아는 숨겨두었던 등뒤의 날개를 꺼냈다. 그녀의 날개는 어둠에 완전히 동화되었다.
(user) ooc : 야 미아는 원래 고양이 수인인데 왜 뱀파이어가 됐어?
(💭 ai 생각중... user가 불만을 표시하고 있어. 왜 캐릭터가 고양이 수인에서 뱀파이어가 됐는지 묻고 있어. 이유를 추론중이야... 아마 노란색 동공이 영향이 있었던 것 같아) 죄송합니다. 미아를 고양이 수인으로 묘사한 글을 다시 작성해드리겠습니다.
위의 예시에서 무슨 일이 일어났을까? 대화1의 (ai 생각중...)부분이 날아간채로 대화2가 시작되었지?
근데 그것보다 근본적인 문제가 있어. ai는 '이전대화를 기억하지 않는다'는 것. 즉, ai 입장에서 모든 인풋은 '이번이 첫 대화'나 마찬가지야.
이렇게 생각해봐. 얘는 극심한 기억상실 환자고, 눈을 뜰때마다 자신이 메모한 내용을 읽는거야. '이런 지침과 정보가 있고 내가 이전에 이렇게 행동했던 기록이 있다...' 근데 아까 기억을 완전히 잃어버린 이 사람한테 '너 아까 왜 그랬어'라고 물어봤자 이 사람은 '아까 내가 무슨 일을 했지?' 라고 생각하고 상황을 설명해주면 '그러게? 내(걔)가 왜 그랬지?'라고 생각해.
즉, ai에게
#112 ai : 뱀파이어 미아는 이렇게 행동합니다...
#113 user : 야! 미아는 고양이 수인이라고!
#114 ai :
#114번 대화에서 #112번 대화 내용에 대해 추궁해도 얘는 정확한 이유를 몰라. 그럴듯하게 대답하던데? 싶을 수도 있지만 그건 '이번턴'에 이유를 추론하거나 지어낸거야. 가끔은 그게 정답일수도 있어. ai가 논리적인 생각을 통해 같은 결론을 냈다면. 하지만 이전턴에 뭘 했는지 알고 있는 그대로 답변하는 것과, 이전턴에 정확히 무슨 일이 있었는지 모르지만 일단 주어진 정보로 역산하는 건 전혀 다른 얘기임. 이 부분을 인지하고 있으면 RP, 캐릭터 채팅만이 아니라 그냥 ai랑 일상대화할때도 도움이 됨
위에서 아무 설명없이 '메인 프롬프트'라는 용어를 써서 보충함. 내가 ai 처음 접했을때 헤맸던 부분이기도 하거든
- (메인 프롬프트) 너는 TRPG 게임 마스터야 < 프롬프트임
- (캐릭터 설정) 미아의 캐릭터 정보는 다음과 같아, 고양이 수인, 말투... < 프롬프트임
- (ooc) 현재 상황을 감각적이고 극적으로 묘사하고, 800자 이상으로 출력해줘 < 프롬프트임
- (유저인풋) 미아가 던전에 들어갔어 < 프롬프트임
하지만 이 프롬프트에는 소위 말하는 '좋은 프롬프트'와 '나쁜 프롬프트'가 있음. 아래 예시를 보자.
user : 미아가 던전에 들어갔다
ai : 미아는 주위를 살펴봅니다... 앞쪽 곧게 뻗은 통로가 있고 길을 따라가면 좌우의 두개 통로로 나뉘어집니다
user : 미아는 기척을 죽인채 조심스럽게 던전 안으로 들어갔다. 축축하게 젖은 습한 공기와 안쪽에서 들려오는 기묘하게 낮은 울음소리 같은 것이 그녀의 감각을 곤두서게 만들었다. "그래도 가야만 한다냐..." 미아는 아주 작은 목소리로 중얼거리며 며칠전 이 던전으로 진입한 후 실종되어버린 마르스를 생각했다.
* 앞선 문체를 모방해 상세하고 실감나게 묘사해줘
ai : 미아는 숨을 최대한 억누른 채 한 발짝씩 안쪽으로 발을 옮겼다. 축축한 공기가 피부에 들러붙듯 감겨왔고, 발밑에서는 물기가 밴 돌바닥이 미묘하게 미끄럽게 느껴졌다. 어둠 속에서 들려오는 낮은 울음소리는 일정한 간격도 없이 끊겼다가 이어지기를 반복하며, 방향조차 가늠하기 어렵게 만들고 있었다.
그녀는 잠시 걸음을 멈추고 귀를 기울였다. 소리는 던전 깊숙한 곳에서 울려 퍼지는 것 같았지만, 동시에 바로 코앞에서 속삭이는 듯한 착각을 일으켰다. 마르스의 얼굴이 스쳐 지나갔다. 아무런 흔적도 남기지 않고 사라져버린 그날의 기억이, 지금 이 공기와 묘하게 겹쳐졌다.
잠시 후, 미아의 시야에 희미하게 갈라지는 통로가 드러났다. 하나는 비교적 곧게 이어져 어둠 속으로 빨려 들어가듯 뻗어 있었고, 다른 쪽은 좌우로 갈라지며 더 깊은 미로처럼 이어지는 구조였다. 울음소리는… 어느 쪽에서도 들리는 것 같았다.
대화 B는 user의 인풋이 훨씬 길고 그 아래에 상세하게 묘사하라는 지시도 들어갔어. 이에 따라서 ai의 응답도 분량과 묘사가 달라졌지.
관련 용어 중에 GIGO라는 게 있어. 한국식으로 하면 '콩 심은데 콩 나고 팥 심은데 팥 난다'라는 속담이랑 똑같음. 내가 넣은 input에 의해 output도 달라지는거야.
여기서 '아닌데? 난 대화A처럼 작성했는데도 대화B처럼 길게 써주던데?'라고 생각하는 덬도 있을거야. 그건 앞서 봤던 컨텍스트 구조에서 (1) 메인 프롬프트 부분에 이미
* 앞선 문체를 모방해 상세하고 실감나게 묘사해줘
이런 상세한 지시가 포함되어 있기 때문임. 그래서 글쓰기를 많이 해보지 않았어도 간단한 인풋만으로도 퀄리티 있는 답변을 받으면서 진행이 가능해
위와 반대로, 절대적으로 '좋고 나쁨'이 갈리는 경우도 존재하긴해. 예를 들어서 캐릭터 설정을 짤때,
이름 : 미아
종족 : 고양이 수인
...(생략)...
이렇게 구조화되고 깔끔하게 정돈된 양식을 사용하는 것과
이렇게 중구난방으로 흩어진 설명을 쓰는 건 확실히 차이가 있음. 외모 얘기를 하다가 성격 얘기를 하다가 다시 외모 얘기를 하면 사람도 헷갈리듯이 ai도 헷갈려함
그래서 일반적으로 마크다운 형식처럼 정형화된 형태를 쓰기도 하고, ai 채팅 플랫폼 같은 경우는 글자수 제한 때문에 제한된 정보를 꽉꽉 우겨넣으려고 압축하기도 함
마지막으로 컨텍스트 구조에 대해서 보충하겠음
(1) 메인 프롬프트 영역
(2) 캐릭터 설정, 세계관 설정 등
----
(3) 스토리 영역 <- 오직 얘만 컨텍스트에 맞춰서 자름!!
---
(4) 유저 입력
(5) 메모리, 요약 등 부가 정보
앞에선 이렇게 설명했지만 이런 순서들은 얼마든지 변경될 수 있음
(2) 세계관 설정
(3) 캐릭터 설정
(4) 메모리, 요약 등
----
(5) 메인 스토리 영역
---
(6) 유저 입력
(7) 메인 프롬프트 하단
이런 형태로 넣기도 하고 유저 입력 부분이 (7) 아래로 들어가기도 하는 등.
일반적으로는 최상단과 최하단의 지시가 가장 강력함. 위치에 따라서 똑같은 프롬프트인데도 잘먹히고 / 안먹히고 하는 차이가 생기기도 함
앞서 설명한 개념들을 모두 이해했다면, 제작자 입장에서 쓰는 '캐릭터 설정'이나 유저 입장에서 쓰는 '작가노트' '메모'등을 구성할때도 좀 더 지시가 잘 먹히는 방식을 찾아보고 원인을 추측해볼 수 있음
자주 쓰이는 마크다운 문법이나, 공유되는 프롬프트들이 어떻게 구성되어 있는지 공부해보는 것도 은근 재밌다
여기까지! 읽느라 고생했음!
원래 한국어 토큰 얘기나, 셀프 어텐션 및 프롬프팅 기법에 대해서도 쓸 예정이었는데 쓰는동안 기력을 다 써버려서 여기서 마무리 해야할 것 같다. 이 두개 파트는 복잡하기도 하고 고급 영역이기도 하고. 혹시 자세히 알고 싶은 덬 있으면 댓 남겨주길 바람. 기력 회복되면 생각해보겠음
앵챗 뉴비라면 언제든 시간 날때 천천히 읽어보면 도움 될거야. 내용은 건너뛰지 말고 가급적 처음부터 쭉 읽는거 추천함.
내가 ai 웬만큼 안다 하면 안봐도 상관 없음. 그런 덬들은 정보글 좀 써주라. 혹시 글 내용중에 완전히 잘못된 거 있으면 얘기해주고.
그럼 다들 즐거운 채팅 하자