← 返回信息流
AI 资讯Hacker News·1 天前

Frugon:找出可被更便宜模型替代的LLM调用

原标题:Show HN: Frugon – Find which LLM calls a cheaper model could handle (local, MIT)

速览

Frugon是一款MIT许可的本地工具,能分析LLM调用并识别那些可由成本更低的模型处理的部分。它帮助开发者在保证输出质量的同时降低API费用,且所有分析都在本地运行,保护隐私。适合用于优化AI应用的推理成本。

AI 深度解读

背景

随着大型语言模型(LLM)在各行各业的广泛应用,API 调用成本成为开发团队和独立开发者越来越沉重的负担。许多团队发现,每月 LLM 账单迅速膨胀,但其中相当一部分请求并不需要调用最昂贵、最强大的模型。然而,手动分析日志、判断哪些调用可以路由到更便宜的模型非常繁琐,且容易遗漏。现有方案要么依赖第三方平台导致数据外泄,要么缺乏本地化、细粒度的成本分析能力。

Frugon 正是在这一背景下诞生的——一个完全本地、开源、免费的 LLM 成本分析工具,旨在帮助用户在自己的机器上精确找出哪些 LLM 调用可以使用更便宜的模型替代,从而大幅削减开支。

核心内容

Frugon 是一个 MIT 许可的开源项目,核心功能是分析你的 LLM 调用日志,给出路线建议——将哪些比例的调用切换到更便宜的模型,同时保持可接受的质量。它采用“本地优先”设计,你的数据从不离开你的机器,API 密钥直接发送给你自己的提供商,Frugon 本身不会接收任何数据。

安装与使用

Frugon 可通过 uvx 一次性运行(无需安装),也可通过 pipxpip 永久安装:

# one-shot (no install)
uvx frugon analyze ./logs.jsonl

# permanent install
pipx install frugon
frugon analyze ./logs.jsonl

# for --measure (optional): 通过你自己的提供商密钥采样真实提示,评估候选模型质量
pip install 'frugon[measure]'
frugon analyze ./logs.jsonl --measure

如果还没有日志,可用 frugon analyze --demo 试用内置的大约 56,100 条调用样本。

捕获日志的方式

方式一:使用 Frugon 自带的本地 HTTP 代理 frugon capture,它位于你的应用和 LLM 提供商之间,原样转发所有请求并保存为 JSONL 格式的一行记录。该代理在 localhost 上不增加延迟,且不会向任何 Frugon 端点发起调用。

# 启动代理(默认端口 8787,输出文件 capture.jsonl)
frugon capture --out ./logs.jsonl

# 将你的应用 base URL 指向代理而不是 api.openai.com
OPENAI_BASE_URL=http://127.0.0.1:8787 your-app  # bash / zsh
$env:OPENAI_BASE_URL="http://127.0.0.1:8787"; your-app  # PowerShell (Windows)
# 或在代码中: client = OpenAI(base_url="http://127.0.0.1:8787/v1")

代理支持 --port--out--upstream(覆盖转发目标)、--verbose(每捕获一行打印一条,方便验证)、--proxy(允许通过上游代理路由——默认忽略环境变量 HTTP_PROXY / HTTPS_PROXY,避免 API 密钥经过第三方代理)。

方式二:如果你已经通过中间件或 SDK 回调捕获了日志,只需按以下格式将每个请求/响应写入一行 JSON:

{
  "model": "gpt-4-turbo",
  "request": {
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Summarise this document: ..."}
    ]
  },
  "response": {
    "choices": [{"message": {"content": "Here is the summary: ..."}}]
  },
  "usage": {
    "prompt_tokens": 312,
    "completion_tokens": 84
  },
  "timestamp": "2024-11-01T14:22:01Z"
}

usage.prompt_tokens / usage.completion_tokens 优先使用,缺失时 Frugon 会用自己的分词器回退计算。timestamp 为可选字段,启用后可基于实际观察的时间跨度投影成本。model 是必需字段,其他字段缺失会优雅降级。

分析结果与路由推荐

运行 frugon analyze ./logs.jsonl 后,Frugon 会输出一个表格报告,例如 demo 运行结果(使用 --candidates claude-sonnet-4-5,gpt-4.1,claude-haiku-4-5,gemini-2.5-flash,deepseek-v4-flash):

┌─ frugon · cost analysis ────────────────────────────────────────────────────┐
│ Analyzed 56,100 calls · baseline gpt-5.5 (your current model)               │
│ Current spend $549.46 / mo                                                  │
│                                                                             │
│ Route 36,100 easy calls (64.4%) → deepseek-v4-flash within                  │
│ tolerance                                                                   │
│ Keep 10,000 hard calls (17.8%) → gpt-5.5                                    │
│ Keep 10,000 already on deepseek-v4-flash (17.8%) already optimal            │
│ — no action                                                                 │
│                                                                             │
│ New spend $343.91 / mo                                                      │
│                                                                             │
│ SAVING $205.55 / mo · 37.4% lower                                          │
└─────────────────────────────────────────────────────────────────────────────┘

Candidates considered
claude-sonnet-4-5   $452.23 / mo  17.7% lower  Strong considered
gpt-4.1             $405.89 / mo  26.1% lower  Capable considered
claude-haiku-4-5    $377.82 / mo  31.2% lower  Capable considered
gemini-2.5-flash    $356.35 / mo  35.1% lower  Strong considered
deepseek-v4-flash   $343.91 / mo  37.4% lower  Strong recommended

报告显示了当前花费、推荐方案(将哪些比例的“简单”调用路由到更便宜的模型,哪些“困难”调用保留原模型)、预期节省金额。每个候选模型都列出了在与基线模型相同的质量保持拆分(易调用路由到候选,难调用保留基线)下的新花费,节省最大且质量等级较高者为推荐。若需要确认真实质量,可运行 --measure --judge 对每个候选模型评分。

其他关键参数与功能

  • --report savings.html.md:生成干净、可分享的报告文件,方便放入 PR、Slack 或预算评审。
  • frugon models:列出可用作候选的模型名称(可加过滤子串,如 frugon models gpt-4o)。
  • --verbose:显示更详细的信息,如完全切换到 cheapest 模型的上限节省。
  • 所有计算完全本地执行,即使超过 10 万条记录也流畅。Demo 数据(~56,100 条)只需几秒完成定价。超过 20 万条时可能稍慢,但有实时进度条。
  • 价格与质量数据同步自 LiteLLM 注册表和 LMArena,可通过 frugon update 更新至最新。

适用场景

  • AI 代理构建者:GPT-4o 代理成本高,大部分简单跳转不需要它们。
  • AI 开发团队:月度 LLM 账单是真实的,路由工具能在几天内回本。
  • RAG 与支持:检索+重排序成本低,最终生成答案不一定需要 Opus。
  • 数据 ETL 流水线:批量提取高度重复,小型模型足以胜任。
  • 独立黑客:每省下一美元就是多一美元的跑道。

注意事项

  • 质量评估是离线估算,运行 --measure 可验证真实输出。
  • 推理模型的质量等级对应默认/典型推理投入(reasoning effort),改变 effort 只会影响思考 token 数量,不影响每 token 价格,因此不影响上图所示价格。
  • Frugon 基于 RouteLLM(LMSYS)的公开研究,结果完全取决于你的实际日志,绝不夸大节省。

关键要点

  • 完全本地化:Frugon 在用户自己的机器上处理所有分析,
查看原文 →github.com