使用 GitHub Actions 构建多模型 LLM 自动化基准测试系统

作者
  • avatar
    姓名
    Nino
    职业
    Senior Tech Editor

在大型语言模型 (LLM) 飞速发展的今天,开发者面临着一个核心挑战:Token 效率。在构建实时信号分析工具(如用于股票市场监控、IoT 传感器跟踪或区块链事件索引的工具)时,将原始时间序列数据直接输入 LLM 可能会导致极其昂贵的成本。你选择的序列化格式直接影响你的运营成本。为了解决这个问题,我们构建了一个自动化的、多供应商基准测试系统,通过 n1n.ai 评估 OpenAI、Anthropic 和 DeepSeek 等主流供应商的数据格式表现。

核心挑战:冗余数据的代价

时间序列数据在结构上非常简单:由时间戳和数值组成。然而,行业标准的序列化格式 JSON 在这种场景下显得异常臃肿。在 JSON 对象数组中,键名(如 "timestamp"、"price")在每一个数据点都会重复出现。在 LLM 的世界里,每一个字符都会计入 Token 总数。对于使用 n1n.ai 提供的高性能模型的开发者来说,减少这种重复不仅是技术优化,更是显著的成本节约手段。

我们发现,虽然 CSV 比 JSON 好,但它仍然包含冗余信息。为了挑战效率极限,我们开发了 TSLN (Time-Series Lean Notation)。这种格式利用了时间规律性和增量编码 (Delta Encoding),在数据进入 API 端点之前对其进行压缩。但为了证明 TSLN 的优越性,我们需要一个健壮、可重复且透明的基准测试系统。

架构设计:GitOps 流水线

我们的基准测试系统采用“一劳永逸”的设计。它每两周运行一次,测试四种数据格式在四个主要 LLM 供应商上的表现,并将结果直接发布到实时仪表板。该架构依赖于三个核心支柱:

  1. 执行层:GitHub Actions 负责调度和环境配置。
  2. 逻辑层:基于 Python 的运行器,通过 n1n.ai 接口与 LLM API 交互(通过聚合平台确保稳定性)。
  3. 展示层:Next.js 前端,从仓库中获取静态 JSON 结果。

测试的数据格式

我们对比了四种不同的序列化策略:

  • JSON:基准格式,完整的对象表示法。
  • CSV:带有标题行的逗号分隔值。
  • TOON (Token-Oriented Object Notation):一种旨在减少空格 Token 的管道分隔格式。
  • TSLN (Time-Series Lean Notation):我们自定义的紧凑格式,使用单一基准时间戳和间隔。

Python 基准测试运行器的实现

系统的核心是一个 Python 脚本,它生成样本数据并根据 GPT-4o mini、Claude 3.5 Sonnet 和 DeepSeek-V3 等模型的真实定价估算成本。以下是 TSLN 格式与 JSON 基准格式的生成逻辑对比:

import json

def generate_benchmark_data(format_name: str, count: int = 100):
    if format_name == "json":
        # 传统的 JSON 格式,键名不断重复
        return json.dumps([
            {"timestamp": f"2024-01-01T09:{str(i).zfill(2)}:00Z", "value": 150.0 + i}
            for i in range(count)
        ])

    elif format_name == "tsln":
        # 基准时间 | 间隔(秒) | 数值序列
        values = [str(150.0 + i) for i in range(count)]
        return "t:2024-01-01T09:00:00Z|i:60|v:" + ",".join(values)

Token 成本计算逻辑

不同供应商的 Token 算法逻辑各异。OpenAI 使用 tiktoken,而 Anthropic 有其专有逻辑。为了提供公平的对比,我们使用了一种标准化的启发式方法(约 4 个字符对应 1 个 Token),并应用了最新的定价层。对于寻求最具竞争力价格的开发者,n1n.ai 提供了一个统一的网关,可以实时对比这些成本。

def run_single_benchmark(provider: str, model: str, format_name: str, data: str):
    input_tokens = len(data) / 4  # 启发式估算用于对比

    # 市场现行价格 (每 100 万 Token 的美元价格)
    pricing = {
        "openai": 0.15,      # gpt-4o-mini
        "anthropic": 0.80,   # claude-3-haiku
        "deepseek": 0.14,    # deepseek-v3
        "google": 0.075      # gemini-1.5-flash
    }

    cost = (input_tokens / 1_000_000) * pricing.get(provider, 1.0)
    return {
        "provider": provider,
        "format": format_name,
        "cost_per_100k": cost * 100
    }

使用 GitHub Actions 实现自动化

为了确保我们的基准测试随着模型更新(如从 GPT-4 转向 OpenAI o3,或 DeepSeek-V2 升级到 V3)而保持即时性,我们使用了 GitHub Actions 工作流。该工作流不仅运行代码,还将结果作为静态 JSON 文件提交回仓库。这种 “GitOps” 方法消除了对数据库的需求,降低了系统复杂度。

name: LLM 基准测试定时任务
on:
  schedule:
    - cron: '0 0 */14 * 0' # 每两周运行一次
  workflow_dispatch: # 允许手动触发

jobs:
  run-benchmarks:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: 配置 Python 环境
        uses: actions/setup-python@v5
        with: { python-version: '3.11' }
      - name: 执行测试脚本
        env:
          N1N_API_KEY: ${{ secrets.N1N_API_KEY }}
        run: python benchmark/run_full_benchmark.py
      - name: 自动提交结果
        run: |
          git config --local user.email "github-actions[bot]@users.noreply.github.com"
          git config --local user.name "GitHub Actions"
          git add public/data/benchmark-results.json
          git commit -m "自动更新基准测试结果"
          git push

前端可视化:React + Recharts

前端基于 Next.js 和 Recharts 构建。由于数据以静态 JSON 形式存储在 public 文件夹中,网站加载速度极快,且可以托管在 Railway 或 Vercel 等平台上,无需任何后端开销。通过 fetch API 即可轻松获取数据:

useEffect(() => {
  // 从 GitHub Actions 生成的静态 JSON 中加载数据
  fetch('/data/benchmark-results.json')
    .then((res) => res.json())
    .then(setData)
}, [])

根据 2026 年 1 月的最新测试数据,不同格式的效率差异令人震惊:

格式平均 Token 数10万数据点成本相比 JSON 节省
JSON1,397$0.0404基准 (Baseline)
CSV698$0.020250.0%
TSLN177$0.005287.3%

专家建议:Token 化与数字处理

开发者常犯的一个错误是假设所有数字的 Token 化开销是相同的。在许多 LLM 分词器中,单个数字占用 1 个 Token,但多位数字可能会被意外拆分。通过使用 TSLN,我们减少了总字符数,从而在统计学上降低了“Token 碎片化”的概率。当你通过 n1n.ai 访问不同模型时,你可以针对不同供应商测试这些格式,观察哪种分词器对你的特定数据分布处理得最高效。

总结

构建多供应商基准测试系统不仅是为了寻找最便宜的模型,更是为了优化你与模型对话的方式。通过 GitHub Actions 实现自动化,并利用 n1n.ai 这样的统一 API 聚合平台,你可以在不增加预算的情况下,维持一个高性能的 RAG 或信号分析系统。

n1n.ai 获取免费 API 密钥。