Movatterモバイル変換


[0]ホーム

URL:


Zenn
ぬこぬこぬこぬこ

Anthropic API のトークン最適化によるコスト削減

に公開

tl;dr

  • Anthropic API の Prompt Caching にふたつアプデがあるよ
  • Prompt Caching の読み込みトークンが入力トークンの対象外になって、コスト削減とレートリミットが改善されたよ
  • Prompt Caching の書き方でcache_control: {type: ephemeral} の指定が少なくて済むようになったよ
  • テキストの特定範囲を編集できるtext_editor ツールが公開されたよ

Prompt Caching のアプデ

https://www.anthropic.com/news/token-saving-updates

Anthropic API では 2024 年の 8 月から Prompt Caching が導入されています。Cline など大量のトークンを消費する用途にめちゃくちゃ便利な機能です。この Prompt Caching に二点アップデートが加わり、合わせてtext_editorツールが公開されたというのが今回の内容です。

https://www.anthropic.com/news/prompt-caching

Prompt Caching について詳しく知りたいという方はこちらの記事をご覧ください。

Prompt Caching を端的にいうと、よく使うコンテクストを再利用することでコスト削減をする機能です。リクエストの度に同じ情報を送信しなくて良いので、参照させたいドキュメントが長い、Few-shot examples をたくさん与えたいなど、コンテクストが大きくなる時はコスト削減だけでなく、レイテンシーも短くなるので開発者からするとかなり便利なものです。

今回の Prompt Caching についてのアプデはふたつ。

まずひとつめ。Prompt Caching の読み込みトークンが入力トークンの対象外となり、その分のコストが削減され、合わせてその分のレートリミット枠が抑えられるようになりました。

記事内の画像のこのオレンジの部分ですね。何回も大量のトークンを送る場合、たとえば Cline でチャットのやり取りの回数が多い場合にかなり役に立ちそうです。ちなみに、Cline だとデフォルトで Prompt Caching が有効になっているので、特に設定は不要です。

この機能が Claude 3.7 Sonnet だけの機能か不安だったのでレートリミットページを確認。下記の記述があるのでおそらく Claude 3.7 Sonnet でしか現状使えないと思われます。

ふたつめ。Prompt Caching でcache_control: {type: ephemeral}の指定が少なくて済むようになりました。下記の記事内の画像を見ると一目瞭然かと思います。便利。

Prompt Caching についてのアプデはこのくらいで、あとは Tool Use の話とtext_editor ツールの話があります。

Tool Use のトークン最適化とtext_editor ツール

前者は公式ドキュメントにひとつ記事があるのでそちらを参照。

https://docs.anthropic.com/en/docs/build-with-claude/tool-use/token-efficient-tool-use

要は、Tool Use 利用時にモデルとしてclaude-3-7-sonnet-20250219を指定、リクエストヘッダーにtoken-efficient-tools-2025-02-19を追加することで、出力トークン数で平均 14%、最大 70% 削減、レイテンシの改善ができるという代物。SDK とともにベータヘッダーが必要なので評価の上で使うようにと注意書きがあります。

Python だとこんな感じ。

import anthropicclient = anthropic.Anthropic()response = client.beta.messages.create(    max_tokens=1024,    model="claude-3-7-sonnet-20250219",    tools=[{      "name": "get_weather",      "description": "Get the current weather in a given location",      "input_schema": {        "type": "object",        "properties": {          "location": {            "type": "string",            "description": "The city and state, e.g. San Francisco, CA"          }        },        "required": [          "location"        ]      }    }],    messages=[{      "role": "user",      "content": "Tell me the weather in San Francisco."    }],    betas=["token-efficient-tools-2025-02-19"])print(response.usage)

後者のtext_editor ツールは、テキストの特定の範囲に絞って編集のできるツールです。

https://docs.anthropic.com/en/docs/build-with-claude/tool-use/text-editor-tool

公式ドキュメントに専用のページがあります。Cursor などを使われたことのある方はイメージが湧きやすいかもしれません。ユースケースとして、デバッグやリファクタリング、ドキュメントの生成、テストの作成などが挙げられています。

Python の場合、はじめにこういった形で定義します。

import anthropicclient = anthropic.Anthropic()response = client.messages.create(    model="claude-3-7-sonnet-20250219",    max_tokens=1024,    tools=[        {            "type": "text_editor_20250124",            "name": "str_replace_editor"        }    ],    messages=[        {            "role": "user",            "content": "There's a syntax error in my primes.py file. Can you help me fix it?"        }    ])

テキストエディタツールコマンドとして view / str_replace / insert / create / undo_edit があり、これらと指示プロンプトをセットで使うイメージです。view でファイルを読み込んで、str_replace で文字列の置換、insert で特定の行にテキストを挿入、create で新規ファイルを作成、undo_edit で変更を元に戻すといったイメージです。

ここまで聞いて勘の良い方は気付いているかと思いますが、おそらく Claude Code の中身です。Claude Code 発表の数日前の日付になっていることから察することができますね。

まだ十分使いこなせておらず、エアプになりかねないのでこの辺りに留めておきます。

text_editorツールは Claude 3.7 Sonnet だけでなく、Claude 3.5 Sonnet でも使えます。


以上となります。お読みいただきありがとうございます。よかったらフォローしていただけると励みになります!

GitHubで編集を提案
ぬこぬこ

AI Safety Researcher / AILBREAK Developer / LLM-jp AI Safety WG / Matsuo Lab LLM Course Instructor / Anthropic Bug Bounty

バッジを贈って著者を応援しよう

バッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。

AI Safety Researcher / AILBREAK Developer / LLM-jp AI Safety WG / Matsuo Lab LLM Course Instructor / Anthropic Bug Bounty


[8]ページ先頭

©2009-2025 Movatter.jp