AI 에이전트 비용을 60% 절감했습니다. 효과적이었던 방법들을 소개합니다.
요약
자가 치유 AI 에이전트 시스템 운영 중 토큰 비용을 60% 절감한 구체적인 최적화 전략을 소개합니다. 컨텍스트 엔지니어링, 작업 계층별 모델 라우팅, 로컬 모델 활용을 통해 품질 저하 없이 비용 효율성을 극대화하는 방법을 다룹니다.
핵심 포인트
- 상태 요약 헤더([STATUS])를 도입하여 불필요한 대화 이력 재파싱 방지
- 도구 정의를 프롬프트 상단에 배치하여 KV 캐시 재사용률 향상
- 작업 난이도에 따라 Claude와 저비용 모델로 라우팅하여 비용 절감
- 민감한 작업 및 유틸리티 작업에 Ollama 등 로컬 모델 활용
우리는 자가 치유(self-healing) AI 에이전트 시스템(Kaizen Harness — 오픈 소스, GitHub)을 운영하고 있습니다. Council(의회)이 아키텍처에 대해 토론하고, 매일 기술 스캔을 수행하며, 궤적 로깅(trajectory logging) 및 자동 패칭(automated patching)을 진행합니다. 이 과정에서 토큰(Tokens) 비용이 빠르게 쌓입니다. 한 달간의 튜닝 결과, 품질 저하 없이 비용을 60% 절감했습니다. 가장 큰 영향력을 미친 패턴부터 순서대로 소개합니다.
1. 컨텍스트 엔지니어링 (Context engineering): 자신의 이력을 반복해서 읽는 것을 중단하라
이것이 단일 항목 중 가장 큰 성과였습니다. 우리 에이전트들은 3번째 턴(turn) 이후로 변경되지 않은 대화 이력을 다시 파싱(re-parsing)하는 데 토큰의 40-50%를 낭비하고 있었습니다. Manus와 Cognition에서 사용하는 프로덕션 패턴으로부터 도출한 해결책은 다음과 같습니다.
추가 전용 설계 (Append-only design). 모든 에이전트 응답은 전체 이력 요약을 대체하는 [STATUS] 헤더로 시작합니다. 목표, 완료된 단계, 다음 단계. 단 세 줄입니다.
[STATUS] PR 자동 리뷰 패턴 구축 중. 2/4단계 완료 (diff 파서 완료). 다음 단계: council 토론 연결.
모델은 이를 어텐션 앵커(attention anchor)로 취급합니다. 현재 위치를 기억하기 위해 2,000 토큰에 달하는 대화 내용을 다시 읽을 필요가 없습니다.
정적 도구 정의를 우선 배치 (Static tool definitions first). 우리의 도구 레지스트리(tool registry)는 약 800 토큰의 JSON 스키마(JSON schemas)로 구성됩니다. 이를 동적 콘텐츠보다 앞에 배치하면 KV 캐시(KV cache)가 여러 턴에 걸쳐 이를 재사용할 수 있습니다. 프롬프트 중간에 있던 도구 정의를 상단으로 이동함으로써 세션당 약 15%를 절감했습니다.
압축 트리거 (Compaction trigger). 5번째 턴 이후에는 에이전트에게 필요한 모든 것을 요약하는 [CONTEXT UPDATE] 블록을 자동으로 삽입합니다. 이전 컨텍스트를 삭제하지는 않지만, 더 이상 활성 어텐션 윈도우(active attention window)에 머물지 않게 합니다. 이것만으로도 긴 세션의 비용을 35% 절감했습니다.
2. 기본 모델이 아닌 작업 계층(task tier)에 따라 라우팅하라
우리의 기본 설정은 "모든 것에 Claude를 호출하는 것"이었습니다. Claude는 창의적인 추론에 탁월합니다. 하지만 그럴 필요가 없는 작업에 사용하기에는 비용이 많이 듭니다.
우리는 작업을 세 가지 계층으로 나누었습니다:
| 계층 (Tier) | 작업 (Task) | 모델 (Model) | Claude 대비 비용 |
|---|---|---|---|
| Creative (창의적) | 아키텍처 결정, 토론 합성, 대외용 콘텐츠 | Claude Sonnet 4 | 1x |
| ... |
계층 이름은 프롬프트(Prompt)에 포함되어 있습니다. 에이전트는 모델을 선택하기 전에 자신의 작업을 스스로 분류합니다. 단순한 라우팅 (Routing)만으로도 전체 지출을 절반으로 줄일 수 있었는데, 이는 에이전트 작업의 70%가 창의적 추론이 아닌 유틸리티 및 계획 작업이기 때문입니다.
3. 개인적인 작업을 위한 로컬 모델 (Local models)
어떤 실행 작업들은 클라우드 API (Cloud API)에 절대 노출되어서는 안 됩니다. 시스템 상태 점검, 내부 로그, 설정 검증 등이 이에 해당합니다. 우리는 의회 토론 스크립트 (Council debate script)에 Ollama + MLX 모델을 일급 시민 (First-class seats)으로 추가했습니다:
- Qwen3.6 35B MoE (3B active): 추론 (Reasoning) 작업용. 한 번에 3B 파라미터만 활성화되므로 16GB RAM을 탑재한 모든 Mac에서 실행 가능합니다.
- North Mini Code 1B (4-bit): 코드 차이점 (Code diffs) 및 구문 검사 (Syntax checks)용. M4 칩에서 1초 미만으로 수행됩니다.
이 방식은 달러 비용을 줄여주지는 않지만 (무료이므로), 빈도가 높은 작업에 대한 API 지연 시간 (Latency)을 제거합니다. 우리의 자가 치유 루프 (Self-healing loop)는 이제 완전히 로컬에서 실행됩니다. 즉, 실패 감지, 분류
컨텍스트 엔지니어링 (Context engineering) 패턴은 구현 비용이 전혀 들지 않습니다. 다음 에이전트 프롬프트에 [STATUS] 헤더를 적용하여 모델이 히스토리를 다시 요약하는 것을 멈추는지 확인해 보세요. 계층형 라우팅 (Tiered routing)은 이미 OpenRouter를 사용 중이라면 설정 변경만으로 가능합니다.
실제 스크립트가 포함된 리포지토리: Kaizen Harness. 의회 토론 (Council debate) 설정과 모델 레지스트리 (Model registry)는 patterns/council/에 있습니다.
여러분의 가장 큰 토큰 낭비 원인은 무엇인가요?
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기