Show HN: Frugon – Find which LLM calls a cheaper model could handle (local, MIT)
TL;DR Highlight
내 LLM API 비용이 어디서 새는지 로컬에서 분석해주는 오픈소스 CLI 도구로, 비싼 모델 대신 저렴한 모델로 전환 가능한 호출을 골라낸다.
Who Should Read
GPT-4o나 Claude 같은 고가 모델을 API로 호출하고 있는데 월별 LLM 비용이 부담되는 백엔드 개발자나 AI 서비스 운영자.
Core Mechanics
- Frugon은 LLM API 호출 로그(JSONL 형식)를 받아서, 각 호출이 더 저렴한 모델로도 충분히 처리 가능한지 분석해주는 로컬 실행 CLI 도구다.
- 데이터가 외부 서버로 나가지 않고 완전히 로컬에서 동작한다. API 키도 사용자가 직접 자신의 provider에 연결하는 방식이라 보안 측면에서 안전하다.
- 로그를 얻는 방법이 두 가지다. 이미 로그가 있으면 바로 분석할 수 있고, 없으면 frugon capture라는 로컬 HTTP 프록시를 띄워서 앱과 OpenAI 사이에 끼워넣어 자동으로 JSONL 파일로 저장할 수 있다.
- frugon capture를 쓰면 앱의 OPENAI_BASE_URL만 http://127.0.0.1:8787로 바꾸면 된다. 실제 API 요청은 그대로 원본 provider로 포워딩되고, 동시에 로컬 파일에도 저장된다.
- --measure 옵션을 사용하면 실제 프롬프트를 저렴한 후보 모델로 직접 샘플링해서 응답 품질을 비교해볼 수 있다. 이때 pip install 'frugon[measure]'로 추가 의존성을 설치해야 한다.
- --judge 기능도 있어서 저렴한 모델의 응답이 원래 모델과 비교해 '무승부(tie)' 혹은 수용 가능한 수준인지를 LLM-as-a-judge 방식으로 평가한다.
- 설치 없이 uvx frugon analyze ./logs.jsonl 한 줄로 바로 실행 가능하고, 데모 데이터로도 테스트해볼 수 있다(frugon analyze --demo).
- MIT 라이선스 오픈소스이며, Python 기반으로 pyproject.toml과 uv.lock을 사용한다.
Evidence
- 가장 많이 언급된 아이디어는 '입력 토큰을 먼저 분석해서 자동으로 적절한 모델을 라우팅해주는 AI 게이트웨이'에 대한 수요다. Frugon처럼 사후 분석 도구도 좋지만, 실시간으로 요청 복잡도를 판단해서 싼 모델은 Qwen 같은 모델로, 복잡한 건 GPT-5급으로 자동 분기하는 라우터가 필요하다는 의견이 나왔다.
- --judge 커맨드가 응답 품질을 어떻게 평가하는지 궁금하다는 질문이 있었다. 구체적으로 'tie'로 판정하는 기준이 어떤 LLM-as-a-judge 프롬프트 템플릿을 쓰는지 물어봤는데, 원문에는 상세 설명이 없어서 커뮤니티에서도 명확한 답변은 없었다.
- 로컬 모델로의 전환 가능성을 분석하는 기능이 다음 발전 방향이 될 것이라는 의견이 있었다. 이를 위해서는 단순 비용뿐 아니라 응답 시간도 측정 지표로 추가해야 한다는 구체적인 제안이 나왔다. '로컬 모델이 허용 가능한 정확도를 허용 가능한 시간 내에 낼 수 있느냐'가 핵심이라는 것이다.
- OpenInference(OpenTelemetry 기반 ML 관측 표준)와 연계하면 더 유용할 것이라는 의견도 있었다. 모델 라우팅 문제를 '수렴 비용 최소화' 문제로 보고, Evolutionary Algorithm이나 Gradient Descent 식의 접근을 적용할 수 있다는 다소 학문적인 관점도 제시됐다.
- 이 정보를 실제로 어떻게 운영에 적용할 수 있는지 불분명하다는 비판적 시각도 있었다. '비용 분석 결과를 보고 나서 실제로 모델을 바꾸는 작업을 어떻게 자동화할 것인가'라는 operationalize 문제가 해결되지 않으면 단순한 리포트 툴에 그친다는 지적이다.
How to Apply
- 이미 OpenAI SDK로 API를 호출하고 있고 로그가 JSONL 형태로 있다면, uvx frugon analyze ./logs.jsonl 한 줄로 설치 없이 바로 실행해서 어떤 호출이 더 싼 모델로 대체 가능한지 확인할 수 있다.
- 로그가 없는 경우, frugon capture --out ./logs.jsonl로 로컬 프록시를 띄운 다음 앱의 base URL을 http://127.0.0.1:8787로 바꾸면 기존 코드 수정 없이 모든 API 호출이 자동으로 캡처된다. 일정 기간 운영 후 누적된 로그로 분석하면 실제 트래픽 패턴 기반의 비용 절감 포인트를 찾을 수 있다.
- 단순 토큰 수 비교가 아니라 실제 응답 품질도 확인하고 싶다면 pip install 'frugon[measure]'로 추가 설치 후 --measure 옵션을 붙여 실행하면, 실제 프롬프트를 후보 모델로 샘플링해서 품질 차이를 직접 비교해볼 수 있다.
- 여러 provider나 모델 간 비용을 비교하고 싶은 경우, 동일한 JSONL 로그를 대상으로 다른 모델 파라미터를 바꿔가며 analyze를 반복 실행하면 모델별 비용 시뮬레이션 결과를 얻을 수 있다.
Code Example
# 설치 없이 바로 실행
uvx frugon analyze ./logs.jsonl
# 영구 설치 후 실행
pipx install frugon
frugon analyze ./logs.jsonl
# 실제 프롬프트를 후보 모델로 샘플링해서 품질 비교
pip install 'frugon[measure]'
frugon analyze ./logs.jsonl --measure
# 데모 데이터로 테스트
frugon analyze --demo
# 로컬 프록시 캡처 (로그가 없을 때)
frugon capture --out ./logs.jsonl
# 앱에서 base URL 변경 (bash/zsh)
OPENAI_BASE_URL=http://127.0.0.1:8787 your-app
# PowerShell (Windows)
$env:OPENAI_BASE_URL="http://127.0.0.1:8787"; your-app
# Python 코드에서 변경
client = OpenAI(base_url="http://127.0.0.1:8787/v1")Terminology
Related Papers
Claude Code sends 33k tokens before reading the prompt; OpenCode sends 7k
동일한 모델과 작업 환경에서 Claude Code와 OpenCode의 실제 토큰 사용량을 API 레벨에서 측정한 결과, Claude Code가 시스템 프롬프트 오버헤드만으로 OpenCode 대비 4.7배 더 많은 토큰을 소비한다는 것을 확인했다.
Mesh LLM: distributed AI computing on iroh
사무실, 집, 클라우드에 흩어진 GPU들을 하나의 OpenAI 호환 API로 묶어주는 분산 LLM 실행 시스템으로, 비싼 API 비용 없이 큰 모델을 직접 운영할 수 있다.
Jamesob's guide to running SOTA LLMs locally
2천 달러짜리 RTX 3090 한 장부터 4만 달러짜리 RTX PRO 6000 4장 셋업까지, 로컬에서 최신 LLM을 직접 돌리는 방법을 하드웨어 선택·구성·실행 설정까지 통째로 정리한 실전 가이드다.
Faster embeddings: how we rebuilt the ONNX path in Manticore
Manticore Search가 기존 SentenceTransformers/Candle 백엔드를 ONNX Runtime으로 교체해 텍스트 임베딩 생성 속도를 평균 14배 향상시켰다. 별도 모델 서비스 없이 DB 내부에서 직접 임베딩을 처리하는 구조에서 INSERT 속도가 곧 임베딩 속도이기 때문에 이 개선은 실질적인 ingest 처리량 향상으로 직결된다.
Asymmetric Quantization: Near-Lossless Retrieval with 97% Storage Reduction
멀티벡터 검색 모델의 문서 벡터를 1비트 이진값으로 압축하고 쿼리 벡터만 int8로 유지하는 비대칭 양자화 기법으로, 스토리지를 97% 줄이면서 검색 품질 손실을 0.61점(NDCG@10 기준)에 그치게 만든 실제 프로덕션 적용 사례다.
Show HN: Bash4LLM+ – A lightweight, dependency-free Bash wrapper for LLM APIs
Python이나 Node.js 없이 순수 Bash만으로 Groq 등 OpenAI 호환 LLM API를 호출할 수 있는 단일 스크립트 도구로, Termux(Android)를 포함한 모든 Unix 환경에서 동작한다.