본문 바로가기

인공지능

pxpipe로 Claude Code 비용 60% 절감하는 방법: 대규모 컨텍스트를 이미지로 압축하는 접근

728x90
반응형
728x170

대규모 코드를 다루거나 도구 출력이 많은 환경에서 LLM을 사용할 때 가장 먼저 체감하는 문제는 입력 토큰 비용입니다. 특히 Claude Code처럼 컨텍스트를 넓게 사용하는 워크플로우에서는 시스템 프롬프트, 도구 문서, 과거 히스토리만으로도 비용이 빠르게 증가합니다.
이 글에서는 pxpipe라는 로컬 프록시 도구를 중심으로, 텍스트 컨텍스트를 이미지로 변환해 최대 약 60~70%까지 비용을 절감하는 방식과 그 원리, 장단점, 실제 적용 시 주의사항을 정리합니다.

반응형

pxpipe란 무엇인가

pxpipe는 Claude Code의 입력 토큰을 줄이기 위해 큰 컨텍스트를 이미지(PNG)로 렌더링하는 로컬 프록시입니다.
핵심 아이디어는 간단합니다. 모델이 이미지를 읽을 수 있다면, 텍스트를 그대로 보내는 대신 이미지로 보내 토큰을 덜 쓰자는 접근입니다.

pxpipe는 /v1/messages 요청을 가로채, 비용 효율이 높은 입력 블록을 자동으로 이미지로 바꿔 다시 요청에 삽입합니다. 모델 출력은 압축하지 않기 때문에 응답 스트리밍과 기존 사용 경험은 그대로 유지됩니다.


비용이 줄어드는 핵심 원리

pxpipe의 비용 절감은 토큰 계산 방식의 차이에서 나옵니다.

  • 텍스트 토큰: 실제 Claude Code 트래픽 기준 약 1자 ≈ 1토큰
  • 이미지 토큰: 글자 수가 아니라 픽셀 크기 기준으로 계산
    → 밀집 텍스트 기준 이미지 토큰 1개당 약 3.1자를 담을 수 있음

예를 들어,

  • 약 48,000자의 시스템 프롬프트 + 도구 문서를 텍스트로 보내면 약 25,000 토큰
  • 동일 내용을 1573×1248 PNG 한 장으로 렌더링하면 약 2,700 이미지 토큰

이 차이가 누적되면서 엔드투엔드 청구액 기준 약 59~70% 절감이 발생합니다.


무엇을 이미지로 압축하고, 무엇을 그대로 두는가

pxpipe는 모든 입력을 무작정 이미지로 바꾸지 않습니다. 수익성이 있는 영역만 선별합니다.

이미지로 압축되는 대상

  • 약 6,000자 이상의 대량 tool_result 출력
  • 라이브 테일 뒤쪽의 오래된 접힌 히스토리
  • 정적 시스템 프롬프트와 도구 문서

텍스트로 그대로 유지되는 대상

  • 사용자 메시지
  • 최근 턴 컨텍스트
  • 모델 출력
  • 희소한 prose
  • 너무 작아 이득이 없는 블록
  • 허용 목록 밖 모델

이 덕분에 최신 맥락은 정확도를 유지하면서, 비용만 많이 잡아먹는 과거·정적 컨텍스트를 효율적으로 줄일 수 있습니다.


정확도와 손실 압축의 한계

중요한 부분은 pxpipe가 손실 압축 방식이라는 점입니다.

  • 밀집 이미지 콘텐츠에서 정확한 문자열 회상 능력은 모델별로 차이가 큼
    • Fable 5: 12자 hex 문자열 회상 13/15
    • Opus: 0/15
  • 누락은 에러가 아니라 그럴듯한 오답(confabulation)으로 나타날 수 있음

따라서 다음 값들은 절대 이미지로 압축하면 안 됩니다.

  • ID
  • 해시
  • 시크릿
  • 바이트 단위 정확성이 필요한 값

이런 데이터는 반드시 텍스트로 유지해야 합니다.


지원 모델과 기본 설정

  • 기본 대상 모델
    • claude-fable-5
    • gpt-5.6
  • 옵트인 모델 (기본 비활성화)
    • Opus 4.8
    • GPT 5.5
      → 이미지 컨텍스트 판독 성능이 낮아 명시적 활성화 필요

요청별로 실제 이미지화 여부와 절감량은 ~/.pxpipe/events.jsonl에서 확인할 수 있습니다.


실행 방법과 대시보드

프록시 실행

npx pxpipe-proxy

Claude Code 연결

ANTHROPIC_BASE_URL=http://127.0.0.1:47821 claude
  • 프록시는 127.0.0.1:47821에서 실행
  • 대시보드(http://127.0.0.1:47821/)에서 확인 가능
    • 저장된 토큰 수
    • 텍스트 → 이미지 변환 비교
    • 킬 스위치
    • 실시간 모델 상태

라이브러리 형태로도 사용 가능

프록시 없이도 JS 라이브러리로 직접 활용할 수 있습니다.

import { renderTextToPngs, transformAnthropicMessages } from "pxpipe";

const imgs = await renderTextToPngs(toolResultText);
const { body, applied, info } = await transformAnthropicMessages({
  body: requestBytes,
  model: "claude-fable-5",
});
  • 특정 블록을 텍스트로 고정: options.keepSharp
  • 이미지화된 블록의 원본 반환: options.emitRecoverable
  • Pure JS 런타임으로 Node 및 Edge/Workers 지원

실제 측정 결과와 비용 효과

  • 13,709개 요청 스냅샷 기준
    • $100 → 약 $41 (59% 절감)
  • 이후 8,904개 압축 요청
    • 약 70% 절감
  • SWE-bench Lite 파일럿
    • 정확도 10/10 유지, 요청 크기 −65%

압축된 요청만 보면 절감률은 72~74% 수준이지만, README에서는 전체 청구액 기준 수치만 공식적으로 제시합니다.


728x90

pxpipe는 LLM 비용을 줄이는 방식이 단순한 프롬프트 최적화를 넘어, 입력 표현 자체를 바꾸는 접근이라는 점에서 의미가 큽니다.
특히 코드, JSON, 대규모 도구 출력처럼 밀집 텍스트가 많은 환경에서는 체감 효과가 분명합니다.

다만 손실 압축이라는 특성상 정확성이 필요한 식별자와 시크릿 관리에는 주의가 필요합니다. 이 원칙만 지킨다면, pxpipe는 Claude Code 기반 개발 환경에서 비용과 컨텍스트 한계를 동시에 완화할 수 있는 실용적인 선택지가 될 수 있습니다.

앞으로 이미지 렌더링 개선과 컨텍스트 활용 효율이 더 높아진다면, 대규모 LLM 워크플로우의 기본 구성 요소로 자리 잡을 가능성도 충분해 보입니다.

300x250

https://github.com/teamchong/pxpipe

 

GitHub - teamchong/pxpipe: cut Fable 5 token usage by rendering text context as images

cut Fable 5 token usage by rendering text context as images - teamchong/pxpipe

github.com

728x90
반응형
그리드형