토큰
한 줄 정의
AI가 글을 읽을 때 한 입에 삼키는 글자 덩어리
1. 비유로 이해하기
김밥을 통째로 먹지는 않는다. 한 조각씩 썰어 먹는다. AI도 문장을 통째로 보지 않고 잘게 썰어서 본다. 그 한 조각이 토큰이다.
재미있는 건 자르는 위치가 글자 단위도, 단어 단위도 아니라는 점이다. 자주 쓰는 말은 크게 한 덩어리로, 드문 말은 잘게 썰린다.
"the" → ["the"] (1토큰)
"unbelievable" → ["un", "believ", "able"] (3토큰)
"Zbigniew" → ["Z", "big", "nie", "w"] (4토큰)
2. 왜 필요한가
왜 하필 이렇게 자를까
극단 두 가지를 생각해 보면 답이 나온다.
- 세상 모든 단어를 사전에 넣는다 → 사전이 무한히 커진다. 새 단어, 오타, 고유명사를 감당할 수 없다
- 글자 하나씩 자른다 → 사전은 작아지지만 문장이 너무 길어진다
그래서 중간을 택한다. 자주 쓰는 조각들만 모아 둔 중간 크기 사전. 이 방식을 BPE(Byte Pair Encoding)라고 한다. unbelievable을 통째로 외우는 대신 un + believ + able로 쪼개 두면, unbelievably도 believer도 같은 조각으로 만들 수 있다.
에이전트의 세 가지가 전부 토큰으로 결정된다
| 무엇이 | 어떻게 연결되나 |
|---|---|
| 비용 | API 요금이 토큰당 계산된다. 입력 토큰과 출력 토큰의 값이 다르다 |
| 한계 | 컨텍스트 윈도우가 “토큰 몇 개까지”로 정해진다 |
| 속도 | 출력은 토큰을 하나씩 만들어 내보내는 것이다. 토큰 수가 곧 시간이다 |
루프를 돌 때마다 처음부터 다시 보낸다
이게 에이전트 개발에서 가장 큰 골칫거리다.
하네스가 루프를 돌 때마다 대화 기록이 쌓인다. 그런데 모델은 기억이 없다. 그래서 매번 처음부터 전체를 다시 보낸다.
1번째 턴: [시스템 프롬프트 + 도구 설명 + 질문]
2번째 턴: [시스템 프롬프트 + 도구 설명 + 질문 + 답 + 새 질문]
3번째 턴: [ ...................... 전부 다시 ...... + 또 새 질문]
루프를 열 번 돌면 보내는 양이 계속 불어난다. 같은 질문이라도 대화가 길어진 뒤에 하면 더 비싸다. 그래서 오래된 대화를 요약하거나, 필요한 부분만 골라 넣거나, 도구 결과를 잘라내는 컨텍스트 관리라는 기술이 따로 있다.
한국어 사용자가 알아야 할 것
한국어는 영어보다 토큰을 훨씬 많이 잡아먹는다.
영어: "Hello, how are you?" → 약 6토큰
한글: "안녕하세요, 어떻게 지내세요?" → 약 15토큰
대략적인 감으로는 이렇다.
영어 1토큰 ≈ 4글자 ≈ 단어 0.75개
한국어 1토큰 ≈ 1~2글자
같은 내용을 물어도 한국어로 물으면 돈이 더 나간다는 뜻이다.
3. 어디서 만났나
7회차에서 만났다. 에이전트와 하네스를 배우면서 “컨텍스트가 길면 왜 비싸지는가”를 다루는 자리에 토큰이 나왔다.
같은 회차에서 인상적인 비교도 나왔다. 어떤 벤치마크에서 같은 일을 하는 데 CLI는 약 1천 토큰, MCP는 약 4만 토큰을 썼다는 것이다. MCP는 연결해 두는 것만으로 도구 설명서를 통째로 읽어 두기 때문인데, 이 차이가 전부 토큰으로 계산된다.
7회차 — 에이전트, MCP, 스킬 — 범용 AI를 내 전용 조수로
4. 헷갈리는 개념
| 이 용어 | 비슷하지만 다른 것 | 차이 |
|---|---|---|
| 토큰 | 글자 | 토큰 하나가 글자 하나인 경우도 있고 여러 글자인 경우도 있다 |
| 토큰 | 단어 | the는 1토큰이지만 unbelievable은 3토큰이다. 단어 경계와 무관하다 |
| 토큰 | 컨텍스트 윈도우 | 컨텍스트 윈도우는 한 번에 담을 수 있는 토큰의 최대 개수. 그릇의 크기다 |
| 토큰 (글자 조각) | 액세스 토큰 | 인증에 쓰는 열쇠. MCP 서버에 연결할 때 쓰는 그 토큰이다. 문맥상 “토큰 수”, “토큰 비용”이면 글자 조각, “액세스 토큰”, “인증 토큰”이면 열쇠다 |
| 토큰 (글자 조각) | 블록체인 토큰 | 디지털 자산 조각. 공통점은 “쪼갤 수 없는 최소 단위 하나”라는 감각뿐이다 |
5. 많이들 오해하는 지점
ㄱ. “토큰은 단어를 세는 단위”
가장 흔한 오해다. 토큰은 단어 경계와 관계없이 잘린다. 흔한 단어는 통째로 1토큰이고, 드문 단어나 고유명사는 여러 조각으로 쪼개진다. 그래서 “이 글은 몇 단어니까 몇 토큰이겠지”라는 계산은 잘 안 맞는다.
ㄴ. “모델이 내 대화를 기억하고 있다”
기억하지 않는다. 매 턴 전체를 처음부터 다시 읽는다. “아까 말했잖아”가 통하는 건 그 ‘아까’가 매번 통째로 다시 보내지고 있기 때문이다.
이걸 알고 나면 요금 구조가 이해된다. 대화가 길어질수록 매 턴이 점점 비싸진다. 짧은 질문 하나를 던져도, 그 앞에 쌓인 전부가 함께 간다.
ㄷ. “한국어나 영어나 비슷하게 들겠지”
2~3배 차이가 난다. 영어는 조각 사전이 영어 위주로 만들어져 있어서 효율이 좋고, 한국어는 그렇지 않다. 긴 문서를 다루는 에이전트를 만든다면 이 차이가 요금에 그대로 반영된다.