Issue 01중국 AI
AC POST
중국 AI 목록
掘金2026년 9월 17일 19:54중국어 → 한국어

AI 대화가 길어질수록 느려지고 토큰을 더 쓰는 이유

Agent가 대화가 길어질수록 점점 느려지고 토큰 소모가 늘며 앞서 말한 요구를 잊는 현상을 여행 계획 예시로 설명한다.

중국어 원문을 AI로 번역했습니다. 고유명사와 수치는 원문 표기를 우선하며, 중요한 판단에는 아래 출처 원문을 함께 확인하세요.

Agent가 처음에는 꽤 똑똑하더니, 대화가 길어질수록 점점 느려지고 소모하는 token이 늘어나며, 심지어 앞서 했던 요구를 잊기 시작한다는 걸 느낀 적 있나요?

예를 들어, 국경절 연휴가 다가오는데 Agent에게 여행 계획을 세워달라고 한다고 해봅시다. 목적지, 날짜, 예산, 호텔까지 다 논의한 뒤, “호텔을 좀 더 저렴한 걸로 바꿔줘.”라고 한마디 덧붙였습니다.

이 문장은 아주 짧지만, 제대로 바꾸려면 며칠을 묵는지, 원래 어느 호텔을 골랐는지, 그리고 앞서 어떤 요구가 여전히 유효한지를 알아야 합니다. 만약 검색하고, 호텔 페이지를 읽고, 교통을 비교하는 것까지 필요하다면, 한 번의 답변 뒤에 이미 모델을 여러 번 호출했을 수도 있습니다.

저는 이 예시에서 출발해, 대화 과정에서 무슨 일이 일어나는지, 그리고 우리가 사용 방식을 어떻게 조정할 수 있는지 확실히 설명하고자 합니다.

一、메시지를 보낸 뒤, AI는 어떻게 답할까?

채팅 기록: 당신이 넘겨볼 수 있는 역사.

그것은 장부와 같아서, 당신과 AI의 모든 대화를 저장합니다. 하지만 화면에서 넘겨볼 수 있다고 해서, 그 내용이 원래 그대로, 완전하게 모델에 전달된다는 뜻은 아닙니다.

앱이 역사를 걸러내거나, 일부 원문을 요약으로 대체할 수도 있습니다.

Context: 모델이 이번 턴에 실제로 받은 정보.

중국어로는 보통 “문맥(上下文)”이라고 부릅니다.

이번 작업의 책상이라고 생각하면 됩니다. 그 위에는 시스템 지시, 현재 질문, 일부 채팅 기록, 파일 내용, 도구가 반환한 결과가 있을 수 있습니다.

책상 크기에는 상한이 있는데, 이는 Context Window, 즉 문맥 창에 해당합니다.

이렇게 물을 수도 있습니다. Agent에는 Memory, 즉 기억 기능이 있지 않은가? 예전에 내가 한 말을 기억하지 않을까?

일부 앱은 실제로 당신의 선호나 중요한 정보를 저장해 두었다가, 필요할 때 현재 문맥에 넣습니다. 하지만 이것이 매번 모든 과거 대화를 다 가져온다는 뜻은 아닙니다.

예를 들어, 여행할 때 경제형을 선호한다는 것은 기억했어도, “이번에는 아침 비행기를 타면 안 된다”는 것은 저장하지 않았을 수 있습니다. 어떤 요구가 답변에 영향을 줄 수 있는지는, 그것이 이번 턴 입력에 포함되었는지, 그리고 모델이 그것을 올바르게 사용했는지에 달려 있습니다.

답변은 어떻게 한 단계씩 생성되는가

AI가 이미 완전한 답변을 다 생성해 놓고, 화면에 한 글자씩 표시만 하는 건 아닐까 생각한 적 있나요?

실제로 모델이 글자를 생성하는 것은 원래부터 한 단계씩 뒤로 써 나가는 것입니다. 앞선 내용에 따라 다음 token을 예측하고, 이어 붙인 뒤 다시 계속 생성합니다. 당신이 보는 한 글자씩 표시되는 것은 단순한 재생 효과만이 아닙니다.

token은 짧은 글자 조각으로 이해하면 되며, 반드시 한자 하나도 아니고, 반드시 완전한 단어 하나도 아닙니다.

“다음을 예측한다”는 것은 마지막 글자만 본다는 뜻이 아닙니다. 앞선 문맥이 모두 그다음에 무엇을 생성할지에 영향을 줍니다.

매 단계마다 앞의 내용을 참고해야 한다면, 매번 앞의 내용을 처음부터 다시 계산해야 할까요?

여기서 KV Cache가 역할을 합니다.

모델이 앞의 내용을 처리할 때, 몇 가지 중간 계산 결과가 생깁니다. 그중 두 묶음은 Key와 Value, 줄여서 K와 V라고 불립니다. KV Cache는 이 결과들을 저장해서, 이후 생성이 계속 재사용할 수 있게 합니다.

그것은 책상 옆의 계산 메모와 같습니다. 이미 계산한 부분은 매번 다시 계산할 필요가 없습니다.

하지만 그것은 채팅 기록도 아니고, 어떤 작업 요약도 아닙니다. 채팅이 아직 있다고 해서 이 계산 메모가 반드시 아직 있다는 뜻은 아니며, 계속 재사용할 수 있는지는 구체적인 서비스에 달려 있습니다.

여기서 세 가지가 분리됩니다. 채팅 기록은 장부이고, 문맥은 이번 턴의 책상이며, KV Cache는 생성 과정에서 남은 계산 메모입니다.

二、왜 대화하다 보면 문제가 생길까?

왜 대화가 길어지면 AI가 “멍청해진” 것처럼 보일까?

계속 여행을 예로 들어봅시다. 아침 비행기를 타지 말고, 일정을 좀 여유롭게 해달라고 말했는데, 나중에 아침 6시 항공편을 제시하고 하루를 빽빽하게 채워 넣었습니다.

문맥의 관점에서 보면, 이런 오류에는 두 가지 가능성이 있습니다.

한 가지 가능성은, 요구가 이번 턴 입력에 들어가지 않은 경우입니다. 만약 역사를 압축할 때 “돈은 아끼되, 아침 비행기는 타면 안 된다”가 “경제적인 여행”으로 요약되었다면, 핵심 제약이 사라진 것입니다. 원래 말은 채팅 화면에는 아직 있지만, 모델 눈앞에 반드시 아직 있는 것은 아닙니다.

또 다른 가능성은, 요구가 여전히 입력에 있지만 올바르게 사용되지 않은 경우입니다. 앞에서는 “관광지를 최대한 많이 돌아보자”고 했다가 나중에 “좀 여유롭게”로 바꾸었는데, 옛 계획, 새 요구, 그리고 대량의 호텔 자료가 뒤섞여 있으면, 모델이 낡은 일정을 그대로 따를 수 있습니다.

문맥이 아직 가득 차지 않았는데도 이런 오류가 날 수 있습니다. 용량은 정보를 얼마나 담을 수 있는지를 나타낼 뿐, 모든 세부 사항을 정확히 활용한다고 보장하지는 않습니다. 역사를 압축하는 것은 중요한 정보를 빠뜨릴 위험이 있습니다.

하지만 이것들은 어디까지나 가능한 설명일 뿐입니다. 모델 능력, 작업 난이도, 잘못된 도구 결과도 답변에 영향을 줄 수 있습니다. 한 번 답변이 틀렸다거나, 모델에게 “자기가 왜 잊었는지”를 설명하게 하는 것만으로는 구체적인 원인을 확정할 수 없습니다.

왜 몇 마디 묻지도 않았는데 할당량이 꽤 많이 소모될까?

그 “호텔을 좀 더 저렴한 걸로 바꿔줘”라는 말이 기억나나요? 앞서 말했듯이, 그것은 이전 논의, 호텔 자료, 그리고 일정 전체와 함께 모델에 전달될 수 있습니다. 이 내용들은 모두 이번에 처리해야 할 입력이 됩니다.

당신은 새로 한 문장만 썼지만, 그것이 처리해야 할 것은 아주 긴 한 단락일 수 있습니다. 이전 턴의 답변도 다음 턴에서는 입력의 일부가 될 수 있습니다. 대화가 길어질수록 이렇게 반복해서 딸려 오는 내용이 더 많아질 수 있습니다.

만약 다시 “몇 곳 더 찾아서 가격을 비교해줘”라고 하면, 그것은 먼저 검색하고, 웹페이지를 읽고, 다시 계속 조회한 뒤에야 마지막으로 추천을 정리할 수도 있습니다. 당신은 메시지를 한 번만 보냈지만, 그 이면에서는 이미 모델이 여러 번 작업했을 수 있습니다. 찾아낸 자료도 이후의 각 단계에 따라 들어갈 수 있습니다.

물론, 반복되는 내용은 때때로 캐시를 활용해 계산과 비용을 줄일 수 있습니다. 하지만 캐시가 작업 전체가 무료라는 뜻은 아니며, 새로운 내용과 이후 답변은 여전히 처리해야 합니다.

이것은 또한 왜 관련된 몇 페이지만 읽게 하는 것과 폴더 전체를 하나씩 읽게 하는 것이, 마지막에 같은 질문을 하더라도 소모가 크게 다를 수 있는지도 설명해 줍니다.

왜 한참 동안 답하지 않거나, 답변이 점점 느려질까?

이 내용들은 소모를 늘릴 뿐만 아니라, 당신을 더 오래 기다리게 할 수도 있습니다. 예를 들어 아주 긴 자료를 보내고 간단한 질문을 했는데, 한참을 기다린 끝에야 글자가 나오기 시작하고, 일단 시작되면 그 뒤로는 꽤 순조로울 수 있습니다.

그 앞 시간 동안 그것은 무엇을 하고 있었을까요? 그중 한 가지 작업은, 이번에 받은 질문, 자료, 채팅 기록을 먼저 처리해서 다음 답변 생성을 준비하는 것입니다. 이 단계를 “프리필(Prefill)”이라고 합니다. 처리해야 할 내용이 많을수록 이 단계는 더 오래 걸릴 수 있습니다.

답변 생성을 시작하면, 앞서 말한 과정에 이어집니다. token 하나에 이어 또 token을 써 내려갑니다. 이 단계를 “디코드(Decode)”라고 합니다.

생성할 때 KV Cache를 재사용할 수 있지만, 모델은 여전히 앞선 계산 결과를 읽고 활용해야 합니다. 문맥이 아주 길면 이 부분의 부담도 커질 수 있어서, 글자가 나오기 시작한 뒤에도 계속 빠르다는 보장은 없습니다.

하지만 화면에 아직 글자가 나오지 않는 것은, 그것이 검색 중이거나, 도구를 호출 중이거나, 내부 추론을 하거나, 서비스가 대기열에 있을 때일 수도 있습니다. 기다린 시간만으로는 어느 원인인지 확정할 수 없습니다.

三、Agent를 쓸 때, 어떻게 하면 될까?

1. 먼저 작업과 요구 사항을 명확히 말한다

먼저 AI에게 무엇을 하고 싶은지, 그리고 어떤 조건이 반드시 충족되어야 하는지를 알려줍니다. 예를 들어 여행 계획이라면, 목적지와 날짜 외에도 예산, 아침 비행기를 타지 않는다, 하루에 최대 두 개 관광지만 배치한다는 것도 말할 수 있습니다. 그러면 그것은 처음부터 구체적인 근거를 가지게 되어, 일정이 다 짜인 뒤에 당신이 하나하나 바로잡을 필요가 없습니다.

만약 대화 도중에 마음이 바뀌면, 이전의 어느 요구가 취소되었는지 분명히 말해줍니다.

예를 들어 이렇게 말할 수 있습니다.

앞서 말한 “관광지를 최대한 많이 돌아보자”는 취소. 이제 하루에 최대 두 곳만 배치하고, 호텔과 날짜는 우선 그대로 두고 동선만 조정해줘.

이렇게 하면 그것이 당신이 요구를 보충하는 것인지, 아니면 이전 결정을 뒤집는 것인지 더 쉽게 구분할 수 있습니다. 매번 모든 요구를 다 다시 말할 필요도 없고, 변화가 있을 때 분명히 말하고, 중요한 조건을 빠뜨린 걸 발견했을 때 다시 보충하면 됩니다.

만약 어떤 요구가 매번 같다면, 그것을 고정해 둘 수도 있습니다. 예를 들어 Codex를 쓴다면, 장기적으로 적용되는 규칙을 프로젝트의 AGENTS.md 파일에 써 넣을 수 있습니다. 그것은 AI에게 보여주는 설명서입니다. 예를 들어 “중국어로 답변하기”, “자료를 찾을 때 출처를 붙이기”, “파일을 수정하기 전에 기존 내용을 먼저 읽기” 같은 것입니다. 도구가 지원하는 위치에 두면, Codex가 작업을 시작할 때 자동으로 읽어서, 당신이 매번 수동으로 다시 말할 필요가 없습니다.

이런 파일은 짧고 장기적으로 유효한 약속을 넣기에 적합합니다. 이번 여행의 날짜와 예산은 여전히 구체적인 작업에 따라 전달합니다. 만약 당신이 일반 채팅 앱을 쓴다면, 그것이 유사한 요구를 저장할 수 있는 사용자 지정 지시나 프로젝트 설명을 제공하는지 살펴볼 수 있습니다.

하지만 생략되는 것은 당신이 반복 입력하는 번거로움입니다. 이 규칙들은 여전히 모델이 처리해야 하고, 파일에 써 넣는다고 해서 그것이 결코 빠뜨리지 않는다는 뜻도 아니므로, 가장 핵심적인 결과는 여전히 확인해야 합니다.

2. 찾는 범위를 제한한다

예를 들어 이어폰 한 쌍을 사고 싶고, 이미 세 가지를 골랐다면, 먼저 그것에게 이 세 가지의 자료를 주고, 예산, 그리고 당신이 착용감, 노이즈 캔슬링, 통화 품질 중 무엇을 더 중요하게 여기는지를 말해줍니다. 예전에 본 추천 글 열몇 편을 전부 붙여 넣을 필요는 없습니다.

검색을 도와달라고 할 때도 범위를 더 구체적으로 말할 수 있습니다.

이 세 가지 이어폰을 비교해줘. 주로 통근과 온라인 회의에 사용해. 착용감, 노이즈 캔슬링, 마이크 효과를 중점적으로 보고, 출처 링크를 붙이고, 찾을 수 없는 건 표시해줘.

이렇게 하면 차이를 더 쉽게 알아볼 수 있고, 출처를 따라 확인할 수도 있습니다. 그 이면에서 실제로 몇 개의 웹페이지를 읽었는지는 일반 사용자가 보통 볼 수 없습니다. “답변을 짧게 해줘”라고 해도 백엔드 소모가 반드시 적다고 보장되지는 않습니다. 우리가 직접 할 수 있는 것은 관련 없는 자료를 덜 넣고, 조회할 문제를 구체적으로 말하는 것입니다.

파일을 읽는 것도 마찬가지입니다. 예를 들어 당신이 어떤 강의 소개에서 수업 시간과 과제 요구 사항만 알고 싶다면, 먼저 관련 장을 필요한 설명과 함께 제공하면 됩니다. 질문이 파일 전체에 관련될 때는 완전한 내용을 제공합니다.

3. 대화에서 결과가 나온 뒤에는, 이미 정해진 것을 기록해 둔다

앞의 그 여행으로 돌아가 봅시다. 목적지와 날짜는 이미 정해졌고, 호텔도 골랐으니, 이제 남은 것은 하루하루 어떻게 노는지뿐입니다. 이때 AI에게 먼저 정리해달라고 할 수 있습니다.

새 대화에 복사할 수 있는 여행 기록을 정리해줘. 확정된 날짜, 예산, 호텔, 반드시 지켜야 할 요구 사항을 포함하고, 아직 결정되지 않은 일도 나열해줘. 그저 논의만 했고 내가 확인하지 않은 안은 이미 결정된 것으로 쓰지 마.

잠깐 시간을 내서 한 번 훑어보고, 특히 “아침 비행기를 타지 않는다” 같은 빠뜨리면 안 되는 조건을 확인합니다. 확인한 뒤에는 이 기록을 자신의 문서에 저장합니다. 이후 계속 논의하거나 도구를 바꿀 때, 최신 일정과 함께 제공할 수 있습니다.

만약 원래 대화가 여전히 순조롭다면, 그대로 이어서 씁니다. 만약 그것이 이미 부정된 안을 반복해서 꺼내기 시작하면, 확인한 기록과 최신 일정을 새 대화로 가져가고, 이전에 반복해서 논의했던 옛 안은 더 이상 붙이지 않아, 이런 내용의 간섭을 줄일 수 있습니다.

여기서 기억할 점은, 원래 대화에 요약을 덧붙인다고 해서 앞선 채팅이 따라서 삭제되는 것은 아닙니다. 몇 턴마다 억지로 새로 시작할 필요도 없습니다. 정리는 계속하기 편하도록 하는 것이지, 자신에게 절차를 하나 더 추가하는 것이 아닙니다.

4. 모델을 바꿀 때는 인수인계를 잘한다.

예를 들어 ChatGPT로 메일 한 통을 잘 썼는데, Claude에게 어조를 좀 더 자연스럽게 고쳐달라고 하고 싶습니다.

다른 사람에게 넘겨준다고 생각하면 됩니다. 최신 메일을 보내고, 누구에게 쓰는 것인지, 무엇을 표현하려는 것인지, 그리고 어떤 내용이 이미 확정되었는지를 설명합니다.

이 메일은 선생님께 과제에 대해 논의할 시간을 잡고 싶은 것입니다. 어조를 예의 있고 자연스럽게 고쳐주세요. 제가 나열한 가능한 시간은 유지하고, 제 대신 새로운 약속을 추가하지 마세요.

만약 바로 다른 앱으로 바꾼다면, 이전 채팅과 첨부 파일은 보통 당신이 따로 제공해야 합니다. 만약 같은 앱 안에서 모델만 바꾼다면, 앱이 원래 채팅을 함께 가져올 수 있어서, 반드시 처음부터 다 설명할 필요는 없습니다.

앞서 말한 KV Cache는 모델이 계산할 때의 메모로, 서로 다른 모델은 일반적으로 직접 공유할 수 없습니다. 하지만 인수받는 AI가 필요한 텍스트와 자료를 받기만 하면, 다시 처리해서 계속 당신을 도울 수 있습니다.

다음에 Agent가 또 이미 부정된 안을 꺼내면, 먼저 현재 요구와 최신 버전을 다시 명확히 전달하면 됩니다. 대화를 바꾸거나 도구를 바꿔야 할 때는, 확인한 기록을 함께 가져가면 됩니다.

이것이 모든 모델 문제를 해결해주지는 않지만, 반복 설명과 재작업을 좀 줄여줄 수 있습니다.

저는 자이샤오니엔(宅小年)입니다. 다음 편에서 다시 만나요!

위챗 공식 계정 「宅小年」을 팔로우하고, 더 많은 공유 글을 읽어보세요