Headroom: AIエージェントのコストを10分の1にするNetflixのツール

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00Headroomは、AIエージェントが読み込むあらゆるデータを圧縮するオープンソースツールです。
00:00:04ツール呼び出しやコードファイル、RAGデータなどをLLMに送る前に圧縮することで、トークン数を削減します。
00:00:09これにより、同じ回答を得ながらトークンを60%から95%も削減可能です。しかも、この圧縮は可逆的です。
00:00:14モデルが必要になれば、いつでも元の情報を復元して取得できるのです。しかし「圧縮」
00:00:18といえば通常は情報損失を伴います。では、コンテキストの大部分を削除して
00:00:23なおかつ正確な回答を得るにはどうすればいいのでしょうか?非常に興味深い問いですね。チャンネル登録して、その仕組みを見ていきましょう。
00:00:31ClaudeCodeのようなハーネスを使ったことがある方なら、トークンを大量に消費することをご存知でしょう。ツール呼び出しのたびに
00:00:35巨大なJSONログが出力され、そのほとんどがノイズで重要な情報をかき消してしまいます。
00:00:40これらすべてがコンテキストウィンドウに詰め込まれ、その分のコストを支払うことになります。
00:00:45特にOpusをUltraCodeモードで使い、動的ワークフローを実行している場合などは、
00:00:50トークン制限なしで並列サブエージェントが次々と立ち上がります。NetflixのシニアエンジニアであるTejas Chopra氏が
00:00:57Headroomを作成したのはそのためです。これはコンテンツタイプを検出し、重要な情報のみを残します。
00:01:01JSON配列の場合は異常値やエッジケースを残し、コード圧縮ツールは
00:01:06実際の構文木を読み取ります。またビルドログを読み込む際は、失敗箇所を残して成功したテストは捨てます。
00:01:11しかしここからが面白いところです。プレーンテキストに対して、Headroomは「CompressBase」という独自のモデルを使います。
00:01:17これはTejas氏が圧縮専用にトレーニングしたモデルで、ローカルマシン上で実行されます。
00:01:22Headroomは、すでにユーザーのトークン費用を約70万ドル節約したと謳っており、
00:01:26非常に賢いのは、圧縮されたテキストの中に「パンくず」を残している点です。
00:01:30そこにはハッシュ値が含まれており、モデルは必要に応じて元のデータを取得できます。
00:01:35さて、以前Jamesが投稿した「Caveman」という動画でもコンテキスト削減について解説していましたが、
00:01:39あれはまた別の方向性からのアプローチでした。それについては動画の後半で詳しく説明します。
00:01:43まずはHeadroomの基本的な例を見て、その仕組みを理解しましょう。
00:01:46Headroomは、アプリとサーバーの間に入るPythonプロキシとして機能します。
00:01:50例えば、クロールされたコードやAnthropicサーバーの通信などが対象です。
00:01:54ツール呼び出しの結果が返ってくると、プロキシがRustを使ってそれを圧縮し、
00:01:59圧縮後のバージョンだけをAPIに送信します。
00:02:01サーバーはpipでインストールできますが、ここでは「uv」を使い、Pythonのバージョンを
00:02:063.12に固定します。新しいバージョンでは動作しないからです。
00:02:09次にライブラリからheadroom proxyコマンドを実行すると、特定のポートでプロキシが起動します。
00:02:14HeadroomにはTypeScriptまたはPython用のSDKがあり、
00:02:17今回のデモではPython SDKを使ってClaude SDK用のアプリを作成します。
00:02:22両方をこのようにインストールすれば、準備完了です。
00:02:25この後はHeadroomとClaudeCodeの連携方法を見せますが、
00:02:29まずは舞台裏で何が起きているかをお見せしたかったのです。
00:02:32このアプリでは、ログファイルをすべて読み込んでエラーを特定し、
00:02:36根本原因を探すというユーザープロンプトを用意しました。ここでツール呼び出しをシミュレートします。
00:02:40Claudeにbashツール呼び出しを行わせ、サーバーログファイルをcatコマンドで読み込みます。
00:02:44このファイルには偽のログが大量に含まれています。
00:02:47そしてツール呼び出しの結果を返します。
00:02:49私たちがHeadroomに直接テキストファイルを渡さない理由は、
00:02:52ツール呼び出しの出力しか圧縮対象にならないからです。
00:02:54モデルを指定し、その下にHeadroomのcompress関数を記述して
00:02:59トークン計算のためにメッセージを渡します。
00:03:02Headroomは実際にはHaikuを使用していません。
00:03:04次にプロキシのベースURLを指定します。
00:03:06検証用として制御ログをいくつか用意し、
00:03:08Headroomを通す前と後のメッセージを確認できるようにします。
00:03:11削減率を表示するログも追加します。
00:03:13最後に、Headroomで圧縮されたメッセージをClaudeCodeに渡します。
00:03:17そこにはユーザープロンプトも含まれています。
00:03:18さて、ファイルを実行してみると、Headroomがトークンを98%削減したことが分かります。
00:03:23こちらが圧縮前のトークン数、そしてこちらが圧縮後です。
00:03:2617,000トークン以上も節約できました。
00:03:28前後を見比べれば一目瞭然ですね。
00:03:31上にスクロールすると、これが圧縮前、つまり通常ClaudeCodeに送信される内容です。
00:03:35ユーザープロンプト、ツール呼び出し、そしてツール応答である全ログファイルが含まれています。
00:03:39そしてHeadroomが送信する内容を見てみると、同じユーザーメッセージとツール呼び出しが確認できますが、
00:03:43ツール応答が大幅に短くなっています。
00:03:45ここでは統計的圧縮を行い、冗長なトークンを削除しています。
00:03:50類似したログ419件を要約にまとめました。
00:03:54こちらを見ると、Headroomは圧縮出力であることをClaudeに伝えています。
00:03:58このハッシュを使って情報を取得できるのです。
00:04:00ここでHeadroomの欠点が一つ見えてきました。Claudeが、タスクを完了するのに
00:04:05十分な情報がないと判断してしまうことがありますが、実際には足りています。
00:04:08では、もう一度ファイルを実行してみましょう。
00:04:10今回もトークンを98%削減できていますが、Claudeからはより多くの情報が得られました。
00:04:16別のデモも見てみましょう。
00:04:17いつものようにHeadroomプロキシを実行しますが、今回はパラメーターを追加します。
00:04:21ML値を加えることで、プレーンテキストの圧縮にローカルの圧縮モデルを使用します。
00:04:26さらにコード認識型の圧縮機能も有効にしました。
00:04:30コード認識フラグをオンにして、
00:04:32ここで有効になっていることが確認できます。
00:04:34ClaudeCodeを起動します。ベースURLはプロキシに設定しておきます。
00:04:39この状態でClaudeに「プロジェクト内の全てのTSファイルを読み込み、
00:04:44関連するコードへの参照を含めてプロジェクトの概要を教えて」とプロンプトを送ります。
00:04:49しばらくすると、5つのパッケージにわたる全てのTypeScriptファイルを読み込み、
00:04:53概要を出力してくれました。
00:04:56コンテキストサブコマンドを実行すると、89.1kトークンが使われたことが分かります。
00:05:02実は、Headroomを使わずに同じプロンプトをClaudeで実行したことがあります。
00:05:06下にスクロールしてコンテキストサブコマンドの箇所を見ると、
00:05:10消費トークン数がさらに多いことが分かります。
00:05:11なぜここでOpusの100万トークンのウィンドウが選ばれたのか分かりませんが、
00:05:16curlでエンドポイントをjq経由で叩いてみれば、
00:05:21プロキシからどの程度圧縮されたかが正確に分かります。
00:05:23情報が多すぎて探すのに時間がかかりましたが、
00:05:26スクロールアップすればHeadroomの圧縮で何トークン節約できたか、
00:05:30どれだけのコストを削減できたか確認できます。
00:05:32もちろん、これは一度のプロンプトの結果に過ぎません。
00:05:35しかし、複数のClaudeCodeセッションを動かし、その全てのツール呼び出しをHeadroomで圧縮したと想像してください。
00:05:39どれほどのトークンを節約できるでしょう。
00:05:42また、Opusでlow設定のプロンプトを実行した際には、
00:05:46Headroomによるトークン削減は発生しませんでした。
00:05:49lowからmediumに変えて初めて、トークン削減が見られるようになりました。
00:05:53高、超高、あるいはmax設定なら、さらなる削減が期待できるかもしれません。
00:05:57というわけで、Headroomのクイック概要でした。
00:06:00他にもまだまだ多くの機能があります。
00:06:03例えばエージェント間メモリ機能は、ClaudeやCodexなどのハーネス同士で
00:06:07全く同じ圧縮コンテキストを共有できます。
00:06:09また「Headroom Learn」は失敗したセッションをマイニングし、何が過剰に圧縮されたかを学習することで、
00:06:12同じミスを将来繰り返さないようにしたり、
00:06:15人気のSDKとの統合なども用意されています。
00:06:18ただし、Headroomに関して一つ重要な考慮事項があります。
00:06:21モデルが必要な情報を持っておらず、
00:06:24Headroomにフルデータを要求するたびに、2回目の往復が発生します。
00:06:28そのため、場合によってはHeadroomを使うことで逆にトークン消費が増えることもあります。
00:06:33しかし、それを防ぐために「Headroom Learn」機能があるのでしょう。
00:06:36これにより、将来的な過剰圧縮を防ぐことができます。
00:06:39さて、先ほど言及した「Caveman」を覚えていますか?
00:06:42Cavemanはモデルに対し、短いフラグメントで回答し、フィラーワードを落とすよう指示することでトークンを削減します。
00:06:46一方、Headroomは読み込み前の段階で
00:06:48コンテキストを縮小します。
00:06:51前者は出力を削り、後者は入力を削る、
00:06:52という違いがあります。
00:06:56つまり、これらを組み合わせれば究極のトークン削減が可能になるということです。
00:07:00トークン節約にこだわりたい方は、ぜひ試してみてください。

Key Takeaway

Headroomは、LLMへの入力をプロキシ経由で可逆的に圧縮することで、ツール呼び出しやログ解析に伴うトークンコストを最大95%削減する。

Highlights

  • HeadroomはLLMへ送信するデータを圧縮し、トークン数を60%から95%削減するオープンソースツールである。

  • ユーザーはHeadroomの利用により、累計で約70万ドルのトークン費用を節約している。

  • Rustで実装されたプロキシがツール呼び出しの結果を圧縮し、冗長なログを要約してAPIへ送信する。

  • 圧縮は可逆的であり、データ内のハッシュ値を通じて必要に応じて元の情報を復元できる。

  • 「CompressBase」という独自の圧縮専用モデルをローカルマシン上で実行し、プレーンテキストを効率的に縮小する。

  • エラーログの重複排除やコードの構文木解析を組み合わせ、不要なコンテキストを動的に排除する。

Timeline

Headroomの概要とトークン削減の仕組み

  • Headroomはツール呼び出し、コードファイル、RAGデータをLLMへ送る前に圧縮する。
  • 圧縮は可逆的であり、モデルは必要に応じて元のデータを取得可能である。
  • JSON配列のエッジケース保持、ログの冗長データ排除、コードの構文木解析といった最適化を行う。

LLMのコンテキストウィンドウに不要なノイズが詰め込まれることで発生するコストと効率低下を解消するためのツールである。Tejas Chopra氏によって開発され、データに応じてコンテンツタイプを検出し、必要な情報のみを抽出してトークン消費を抑制する。

Pythonプロキシとしての動作と実装方法

  • アプリとサーバー間でPythonプロキシとして機能し、通信内容をRustで圧縮する。
  • Python SDKを使用してClaude SDKなどと連携し、API送信前のメッセージを動的に圧縮する。
  • デモにおいて、ツール応答のログファイルを圧縮することでトークンを98%削減した。

Headroomは既存のアプリケーション環境に組み込み可能なプロキシとして機能する。ツール呼び出しの結果を受け取ると、冗長なログを統計的に要約し、ハッシュ値を含む圧縮データをLLMへ送信する仕組みである。

応用機能と運用上の考慮事項

  • MLパラメータを有効化することでローカルの専用圧縮モデルを利用可能である。
  • Headroom Learn機能は過去の失敗セッションを学習し、将来的な過剰圧縮を防ぐ。
  • 入力データの削減を行うHeadroomと、出力テキストの短縮を促すCavemanを組み合わせることで究極的な節約が可能である。

モデルがタスク遂行に必要な情報を保持していない場合、元データの要求が発生し逆にコストが増えるリスクがある。これを防ぐために過去の失敗を学習する機能が備わっている。入力と出力の双方を最適化する手法の併用が強く推奨される。

Community Posts

No posts yet. Be the first to write about this video!

Write about this video