トークンを無駄にしない:LLMコストを97%削減する方法

Dev.to / 2026/4/8

💬 オピニオンIdeas & Deep AnalysisTools & Practical Usage

要点

  • この記事では、多くのLLMアプリが、未使用のフィールドを含むAPIのJSONレスポンス全文をモデルに送信することで、無駄にお金を使っていると主張している。
  • 「メタデータ税」として、ID、ネストされたオブジェクト、膨大なメタデータなどにより、大きなレスポンスのペイロードがトークン使用量を増やす一方で、モデルの出力の品質向上にはつながらない点を強調している。
  • どのフィールドをLLMに渡すかを最小化し、モデルが実際に必要とする項目だけを抽出することを推奨している(例:注文の詳細すべてではなく、名前やメールだけを取得する)。
  • 暗に示される結果として、AIパイプラインで不要なトークンを削ることで、LLMコストを最大97%削減できるとされている。

AIパイプラインに隠れた“税金”

GPTやClaudeを使って開発しているなら、たぶんこんなことをしてきたはずです:

  • APIを呼び出す

  • 大きなJSONレスポンスを受け取る

  • そのまま全量をLLMに送る

一見、害がなさそうですよね?

違います。

使ってもいないものに、静かにお金を燃やしています。

「メタデータ税」

たとえば、APIがこんなものを返してくるとします:

{
  "order": {
    "id": 123,
    "user": {
      "name": "Midhun",
      "email": "midhun@email.com"
    },
    "items": [ ... 100 objects ... ],
    "metadata": { ... tons of fields ... }
  }
}

ここで考えてみてください:

あなたのLLMは実際に何を必要としているのでしょうか?

おそらく、これだけです:

{
  "name": "Midhun",
  "email": "midhun@email.com"
}

ここに問題があります

LLMは“役に立つもの”にはこだわりません。

あなたにすべてに対して請求します。

  • フルのJSON → 約1500トークン

  • 有用なデータ → 約60トークン

必要以上に約25倍も払っています。

しかもこれがすべてのリクエストで起きます。

「手作業でパースすればいい」

もちろん…できます

user = data.get("order", {}).get("user", {})
email = user.get("email")

では、こう想像してください:

  • 10以上のフィールド

  • 深くネストされた構造

  • 複数のAPI

結局こうなります:

  • 防御的なヌルチェック

  • 壊れやすいパースロジック

  • どこにでも繰り返し出てくる定型文

難しいわけではありません…ただ面倒で、エラーが起きやすいだけです。

⚡ より賢いアプローチ:データを事前処理する

LLMに生のJSONを送る代わりに:

まずきれいにします

必要なものだけを取り出す小さな抽出ステップを使います。

たとえば:

{
  "data": {...},
  "queries": {
    "email": ".order.user.email",
    "name": ".order.user.name"
  }
}

出力:

{
  "email": "midhun@email.com",
  "name": "Midhun"
}

あなたが思っている以上に重要な理由

ざっくり計算してみましょう:

ペイロード トークン コスト(1k回あたり)
生のJSON 1500 約$45
整えたJSON 60 約$1

これは97%削減です

これをさらに:

  • 日次リクエスト数

  • 本番のスケール

に掛け算してください。

これは最適化ではありません。

これはコスト管理です。

じゃあ、実際にどうやるの?

選択肢は2つあります:

選択肢1:ローカルでパースする

  • JSONPathライブラリを使う

  • 独自ロジックを書く

  • それをサービス横断で保守する

選択肢2:前処理レイヤーを使う

同じパースロジックを繰り返すのに疲れて、私はこのための小さなツールを作ることにしました。

基本的にはこうです:

「サービスとしてのJSONクエリエンジン」

あなたは次を送ります:

  • 生のJSON

  • クエリ

返ってきます:

  • きれいで、最小限のペイロード

セットアップも、依存関係もありません。

実際のユースケース

このパターンは意外と役に立ちます:

AIパイプライン

LLMに送る前にトークン使用量を減らす

Webhooks

次からペイロードを整える:

  • Stripe

  • Shopify

  • GitHub

ログ&アナリティクス

大規模なデータセットから関連するフィールドだけを抽出する

⚡ 小さな変更、大きな効果

返却形式: {"translated": "翻訳されたHTML"}

ほとんどの開発者はこう最適化します:

  • プロンプト

  • モデルの選択

しかし無視しています:

送信しているデータ

ここにこそ、本当の無駄があります。

最終的な考え

AIの時代では:

効率=利益

プロンプトを最適化する前に、

まず入力を最適化してみてください。

どれだけ節約できるか、きっと驚くはずです。

気になったなら

このアイデアを、あなたが試せるシンプルなAPIにしました:

JSON PowerExtract(RapidAPIで利用可能)

今日は自分のパイプラインでトークン節約効果をテストできるように、Free Tier(毎月500リクエスト)を入れました。