Skip to main content
Glama
ashritkvs

TraceFlow Compress

by ashritkvs

Distil

서버리스 프롬프트 압축 MCP 커넥터로, 프롬프트를 빠르게 압축하고 Distil 스타일 메트릭(토큰, 비용, 지연 시간, 컴퓨트 부하, 에너지, 탄소)을 반환합니다. 모든 숫자는 측정값이거나 명확히 라벨링된 추정치입니다. 전체 설계는 SPEC.md를 참조하세요.

원본 백서의 Prompt Intelligence + 토큰/비용/컴퓨트/에너지/탄소 레이어를 기반으로 구축되었습니다 (구현 가능한 부분 — GPU 하드웨어 불필요).

주요 기능

  • 브라우저 확장 프로그램: claude.ai, chatgpt.com, gemini.google.com에 직접 입력하는 내용을 압축합니다 — API 키가 필요 없으며, 일반 로그인 채팅 세션 내에서 작동합니다. extension/README.md 참조.

  • LLM 게이트웨이: OpenAI/Anthropic/Gemini용 드롭인 프록시 — base_url을 Distil로 지정하면 모든 요청이 실제 제공업체에 도달하기 전에 압축(선택적으로 거버넌스 적용)되며, 스트리밍도 포함됩니다. 아래 참조.

  • 빠르고 서버리스: 기본 휴리스틱 압축은 순수 Python입니다(~3ms, 모델 불필요, API 키 불필요). 더 높은 품질을 위한 선택적 gpt-4o-mini 모드.

  • MCP 커넥터: 스트리밍 가능한 HTTP를 통해 5개의 도구 + 메트릭 리소스를 노출합니다.

  • Distil 메트릭: 토큰/비용/지연 시간(측정값) + 에너지/탄소/GPU 부하(추정치, 라벨링됨). GPU 의도는 컴퓨트 부하 모델을 통해 보존되며, 가짜로 처리되지 않습니다.

  • 라이브 대시보드 + 공개 /metrics 엔드포인트.

  • 설계상 정직함: 모든 추정치는 estimated: true로 표시되고, 폐쇄형 모델 매개변수는 params_known: false로 표시됩니다.

Related MCP server: token-optimization-mcp

LLM 게이트웨이(드롭인 프록시) — 비즈니스 제품

기존 OpenAI/Anthropic/Gemini 클라이언트를 제공업체에 직접 연결하는 대신 Distil로 지정하세요. Distil이 프롬프트를 압축하고, 사용자의 API 키를 사용하여 실제 제공업체로 전달한 다음, 답변을 그대로 스트리밍합니다 — 요청/응답 형태가 동일하므로 base URL 외에는 코드가 변경되지 않습니다.

your app → Distil (/v1/...)  →  compress + optional governance  →  real provider  →  same answer back to you

한 줄 변경(OpenAI SDK):

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_OWN_OPENAI_KEY",       # unchanged — sent straight through, never stored
    base_url="https://getdistil.vercel.app/v1",
)
resp = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Could you please possibly explain, in a very detailed way, what a REST API is?"}],
)

curl(압축 + 정상 답변 + 절감 헤더 증명):

curl -i https://getdistil.vercel.app/v1/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "Could you please possibly explain, in a very detailed way, what a REST API is?"}]
  }'
# Response body is a normal OpenAI chat.completion object.
# Response headers include:
#   x-distil-original-tokens, x-distil-sent-tokens, x-distil-tokens-saved

Anthropic과 Gemini도 동일한 방식으로 작동합니다 — base URL/경로와 인증 헤더만 변경됩니다(기존 클라이언트 라이브러리가 처리합니다):

제공업체

지정할 Base URL

키 입력 위치

OpenAI

https://getdistil.vercel.app/v1

Authorization: Bearer sk-...

Anthropic

https://getdistil.vercel.app/v1/messages

x-api-key: sk-ant-... (+ anthropic-version)

Gemini

https://getdistil.vercel.app/v1beta/models/{model}:generateContent?key=...

?key=... 또는 x-goog-api-key

동작 방식

  • 사용자의 키, 사용자의 청구서. Distil은 모든 요청에 포함된 Authorization/x-api-key/key를 실제 제공업체에 그대로 전달합니다. Distil은 이를 저장하지 않으며, 메모리에 일방향 해시만 유지하여 요율 제한/계량 식별에만 사용합니다.

  • 기본적으로 압축되는 대상: 모든 user 역할 메시지(OpenAI/Anthropic) 또는 user 역할 contents 항목(Gemini)의 텍스트 — "최신 메시지"와 여기에 붙여넣은 대용량 컨텍스트/문서를 모두 포함합니다. system/system_instruction 및 이전 assistant/model 턴은 그대로 둡니다. 함수/도구 스키마(tools, tool_calls, tool_result 블록)는 절대 건드리지 않습니다.

  • 안전 장치: 압축이나 거버넌스가 어떤 이유로든 예외를 발생시키면, Distil은 호출을 중단하는 대신 원본의 압축되지 않은 요청을 전달합니다.

  • 스트리밍: "stream": true는 먼저 한 번 압축된 후, 제공업체의 SSE 응답이 청크 단위로 버퍼링 없이 그대로 중계됩니다(느린 테스트 소스에 대해 로컬에서 검증됨 — 청크는 제공업체 자체의 주기로 도착하며, 배치되지 않음).

  • 거버넌스 모드x-distil-govern을 통해 설정: off(기본값 log)는 절대 차단하지 않음; log는 분류/PII/주입/모더레이션 검사를 실행하고 위반을 기록하지만 요청은 계속 전달; enforce는 판정이 block일 때 전달 대신 제공업체 형태의 4xx 오류를 반환합니다.

구성 헤더(모두 선택 사항)

헤더

기본값

효과

x-distil-ratio

0.5

유지할 토큰의 목표 비율(0.05–1.0)

x-distil-govern

log

off / log / enforce

x-distil-compress

on

on / off — 거버넌스는 이와 무관하게 독립적으로 실행됩니다

x-distil-compress-system

off

system/systemInstruction 텍스트도 압축

x-distil-enforcement

block

enforce 모드 차단 시: block(요청 중지) 또는 redact(감지된 PII/비밀을 마스킹하고 마스킹된 텍스트를 전달). 격리/승인은 여기서 제공되지 않습니다 — 라이브 프록시 호출에서 이를 지원할 수 없는 이유는 거버넌스 워크플로를 참조하세요.

정직성 참고 사항

  • 압축은 게이트웨이에서 휴리스틱 전용입니다(압축을 위한 요청별 LLM 호출 없음 — 지연 시간과 비용이 두 배가 되기 때문). 문장이 약간 어색하게 읽힐 수 있습니다. 프롬프트에서 답변 품질이 저하되면 x-distil-ratio를 높이고(예: 0.7), 프로덕션에서 의존하기 전에 테스트하세요.

  • 라이브 제공업체 API로 검증되었지 추측이 아닙니다: OpenAI와 Anthropic의 요청/응답/오류/SSE 형태는 api.openai.comapi.anthropic.com에 실제 요청을 보내(잘못된 키로, 실제 오류 봉투를 관찰하기 위해) 응답을 바이트 단위로 검사하여 확인했습니다. Gemini의 generateContent 요청/응답/오류 형태도 동일한 방식으로 검증했으며, 스트리밍 프레이밍(:streamGenerateContent?alt=sse)은 Google REST 예제에 문서화된 SSE 모드이지만 유효한 Gemini 키로 라이브 검증되지는 않았습니다 — 이 경로에 의존하기 전에 테스트하세요.

  • 제공업체 자체 응답 본문의 usage/토큰 수 필드는 제공업체의 실제 권위 있는 숫자입니다(Distil은 건드리지 않습니다). x-distil-* 헤더는 Distil이 압축한 내용에 대한 자체 집계입니다.

빠른 시작(로컬)

pip install -r requirements.txt
python demo.py                    # try the core on a sample
python eval/run_eval.py           # measured eval over sample prompts
pytest tests/                     # test suite
python mcp_server.py              # run the MCP server over stdio
uvicorn api.index:app --port 8000 # run the HTTP server + dashboard
# → open http://localhost:8000/  (dashboard) and /mcp (connector)

MCP 도구

도구

용도

compress_prompt(text, target_ratio?, quality?, target_model?, use_cache?)

압축 + 전체 메트릭. target_model="auto"는 복잡도에 따라 라우팅

route_prompt(text)

복잡도 + 비용 투명성에 따라 소형/대형 모델 추천

analyze_prompt(text)

토큰, 필러, 중복성 (압축 없음)

estimate_savings(text, calls_per_day?, target_model?)

예상 월간 비용/탄소 절감액

get_metrics()

캐시 적중률을 포함한 Distil 집계 메트릭

get_top_prompts(n?)

가장 압축 가능성이 높은 프롬프트 목록

detect_anomalies()

AIOps: 낮은 압축률/토큰/비용 급증 플래그 (IQR 기준)

route_provider_prompt(text)

구성된 모든 공급자 중 특정 공급자 + 모델 추천 (데이터 민감도 인지, 상태 인지, 비용 순위) — 거버넌스 워크플로 참조

redact_text(text)

감지된 PII/비밀값을 [REDACTED:<type>]로 마스킹

check_model_policy(model, tenant?)

예외를 반영하여 허용/거부 정책에 대해 모델 확인

scan_licenses(text)

text에서 참조된 패키지를 라이선스 범주별로 분류

get_audit_log(n?) / export_audit_log(n?, fmt?)

증거 등급 감사 추적 (위반뿐 아니라 모든 거버넌스 결정)

list_review_queue(kind?, n?) / resolve_review(review_id, decision, ...)

격리/승인 큐 — 보류된 프롬프트 목록, 승인 또는 거부

grant_exception(scope, value, tenant?, ttl_hours?, reason?, granted_by?) / list_exceptions() / revoke_exception(id)

패키지/모델 정책 차단의 범위 제한, 시간 제한 재정의

send_test_alert()

DISTIL_ALERT_WEBHOOK_URL로 테스트 알림 전송

리소스: metrics://summary.

compress_prompt 결과에는 분산 추적 스팬(§2.2)도 포함됩니다 — 측정된 하위 단계 타이밍(route, cache_lookup, compress, token_metrics, estimates).

의미론적 캐싱(§8.2) 및 다중 모델 라우팅(§8.4)

  • 캐시 — 2계층, 서버리스 친화적: 정확(정규화 해시) + 유사도 (어휘-코사인, DISTIL_CACHE_THRESHOLD, 기본값 0.92)로 거의 동일한 프롬프트가 이전 압축 결과를 재사용합니다. (ratio, quality, model)별로 네임스페이스가 지정됩니다. 웜 인스턴스별로 적용됩니다. 적중률은 대시보드에 표시됩니다.

  • 라우팅route_prompt / target_model="auto"는 프롬프트 복잡도 (추론 동사, 코드, 구조, 길이)를 점수화하여 소형 vs 대형 모델을 선택하며, 모델별 비용 추정치를 제공하여 선택이 투명하게 이루어집니다.

거버넌스 워크플로

govern의 허용/경고/차단 판정 외에도 Distil은 다음을 지원합니다:

  • 모델 정책DISTIL_MODEL_POLICY_MODE (denylist 기본값 | allowlist)

    • DISTIL_DENIED_MODELS / DISTIL_ALLOWED_MODELS. 게이트웨이에서 확인됨 (요청 본문의 model403 model_not_allowed) 및 process_prompt에서도 확인.

  • 수정 / 격리 / 승인 필요process_prompt(..., enforcement=)"block"(기본값), "redact"(PII/비밀값 마스킹 후 계속), "quarantine"(보안 검토를 위해 보류), 또는 "approval"(승인 대기)입니다. 격리/승인은 즉시 검토 ID를 반환합니다 — resolve_review가 승인하거나 거부할 때까지 아무것도 압축되지 않습니다. 라이브 LLM 게이트웨이는 block/redact만 지원합니다 (x-distil-enforcement 헤더) — 동기 프록시 호출은 사람의 개입을 위해 일시 중지할 수 없으므로 격리/ 승인은 /process + MCP 전용입니다.

  • 예외 워크플로grant_exception(scope, value, tenant?, ttl_hours?, reason?)는 전체 정책을 비활성화하는 대신 패키지 또는 모델 차단에 대한 좁은 범위의 만료 가능한 재정의를 부여합니다. check_packages / check_model_policy에 의해 자동으로 확인됩니다.

  • 라이선스 스캔scan_licenses(text)는 참조된 패키지를 (permissive / weak_copyleft / copyleft / unknown)으로 분류하며 소규모 오프라인 레지스트리를 사용합니다. copyleft 적중 시 거버넌스가 warn으로 상향됩니다(법적 검토 플래그이지 하드 차단이 아님). 알 수 없는 패키지는 추측하지 않고 플래그만 표시됩니다.

  • 감사 추적 — 모든 govern 호출(허용 포함)은 증거 등급 항목을 기록합니다 — 결정 ID, 테넌트, 판정, 사유, 프롬프트 해시

    • 60자 미리보기(전체 프롬프트 내용은 절대 아님) — 위반 로그와 분리되어 감사 볼륨이 /metrics를 오염시키지 않습니다. export_audit_log(fmt="csv")로 감사인에게 전달할 수 있습니다.

  • 알림DISTIL_ALERT_WEBHOOK_URL (+ DISTIL_ALERT_MIN_SEVERITY, 기본값 high)은 거버넌스 차단 또는 격리/ 승인 제출 시 웹훅을 발생시킵니다. 이중 형태 페이로드: Slack 호환 text 필드 및 PagerDuty/Jira 자동화 또는 일반 티켓 수집을 위한 구조화된 distil_event. 안전 장치 — 손상된 웹훅은 이를 트리거한 요청에 절대 영향을 미치지 않습니다.

  • 교차 공급자 라우팅route_provider_prompt(text)는 (route_prompt의 계층 전용 추천과 달리) 실제 공급자 + 모델을 선택합니다: 감지된 PII/비밀값이 있는 프롬프트는 DISTIL_TRUSTED_PROVIDERS(기본값 local)로 제한되며, 이 값이 구성된 경우에 적용됩니다. 후보는 최근 상태 (core.availability, 실제 게이트웨이 트래픽으로 공급됨)로 순위가 매겨진 다음 키가 구성된 모든 공급자에 걸쳐 비용으로 순위가 매겨집니다. OpenAI의 소형/대형 계층만이 아닙니다.

관리 엔드포인트(/audit, /review-queue/*, /exceptions/*, /alerts/test)는 API의 나머지 부분과 동일한 방식으로 게이트됩니다 — DISTIL_ADMIN_KEY를 설정하면 전용 x-admin-key 요구사항이 적용됩니다. Distil에는 그 외의 역할 분리가 아직 없으므로, 설정하지 않으면 유효한 Distil 키로 모두 호출할 수 있습니다.

배포 (서버리스, Vercel)

  1. GitHub에 푸시하고 Vercel로 가져옵니다 (Python / Fluid Compute — 자동 감지).

  2. 환경 변수 설정: CONNECTOR_API_KEY (/mcp 게이트), 선택 사항 OPENAI_API_KEY (품질 모드), 선택 사항 UPSTASH_REDIS_REST_URL + _TOKEN (영구 메트릭; 그렇지 않으면 로컬 JSON 파일 사용).

  3. 커넥터 설정을 통해 Claude에 추가 → https://<app>.vercel.app/mcp.

메트릭 대시보드: https://<app>.vercel.app/.

메트릭 참조

측정 (실제)

추정 (레이블 지정)

입력/출력/절감 토큰, 절감률 %

절감 비용 (USD)

지연 시간 (ms)

절감 에너지 (Wh)

CPU 시간, 최대 RAM

절감 탄소 (g CO₂)

제거된 필러, 중복성 %

GPU-ms 부하 + 절감률 % (2×params×tokens)

레이아웃

core/                 compression + intelligence + estimates + metrics store
core/gateway.py        LLM Gateway request rewriting (no networking; pure logic)
mcp_server.py          FastMCP tools/resource
api/index.py            serverless ASGI entrypoint (MCP + dashboard + /metrics + auth)
api/gateway_routes.py   LLM Gateway HTTP routes (/v1/chat/completions, /v1/messages, /v1beta/...)
dashboard/             static metrics page
eval/                  measured evaluation
tests/                 unit tests (tests/test_gateway.py covers the gateway)

프롬프트 압축 에이전트에서 재사용된 항목

tiktoken 계산, 필러 목록 + 분석 로직, 메트릭 데이터클래스 패턴, OpenAI 연결 (선택적 LLM 경로용).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP proxy that compresses tool schemas on the fly. Up to 98% token reduction, 100% signal preserved verified after every compression. Zero LLM calls, fully deterministic.
    5
    4
    MIT
  • F
    license
    B
    quality
    C
    maintenance
    Local MCP server for token optimization, providing tools to compress code/JSON, optimize prompts, and manage placeholder-based content redaction and hydration to reduce LLM token usage.
    5
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local, zero-cloud MCP server for token and text compression. It provides tools to compress, auto-compress, measure, and decompress text using offline rules, lossless gzip packing, or a local Ollama semantic model.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ashritkvs/distil'

If you have feedback or need assistance with the MCP directory API, please join our Discord server