LiteLLM の GitHub を毎朝チェックするのがここ数ヶ月の習慣になっている。Star 数が 51k を超えたあたりから、リリースの密度がえぐいことになっていて、rc 版でも読み飛ばせなくなった。
v1.90.0-rc.1 を読んだとき、まず目に入ったのが Docker イメージへの cosign 署名の話だ。LiteLLM の全 Docker イメージを cosign で署名していて、commit `0112e53` で導入された鍵で統一されている。今まで「まあ公式イメージだし」で pull していたのが、正直ちょっとヤバかったかもしれないと気づいた。
検証コマンドはこんな感じ。
pinned commit hash で検証するのが推奨で、タグ指定より cryptographically immutable だから強い、という説明に素直に納得した。タグは rewrite できてしまうからな。コンビニエンスで release tag を使うオプションも用意されているが、自分のチームの Compose ファイルには commit hash の方を使うことにした。
もう一個、実務で刺さったのが `standardize rate limit errors with category, rate_limit_type, model, and llm_provider fields` という変更だ。PR 番号は #27687 で、mateo-berri さんのコミット。
LiteLLM を Proxy として使っているとき、Claude と OpenAI と Gemini を混在させているチームの構成上、rate limit が発生したときに「どのプロバイダの何のレートに引っかかったか」がログから追いにくかった。エラーオブジェクトに `llm_provider` と `rate_limit_type` が入るようになるなら、自前で書いていた分岐ロジックをだいぶ削れる。
今は middleware 層で `except litellm.RateLimitError` を雑にキャッチして、message 文字列をパースして provider 判定してたんだが、そのコード正直ハマりポイントが多かった。Anthropic の rate limit メッセージと OpenAI のそれでフォーマットが違うから、正規表現が増える一方で。
`feat(bedrock): forward strict and additionalProperties to Converse toolSpec` というのも興味深い。PR #29814 で、Bedrock の Converse API に `strict` と `additionalProperties` を渡せるようになった。
自分は Bedrock をまだ本番で使っていないが、個人開発で AWS Bedrock + Claude 3.5 を試していて、tool use の schema 周りで「あれ、strict モードどこ行った」ってなったことがある。Converse toolSpec にそのまま forwarding されるようになるなら、OpenAI 互換の schema をそのまま使い回せる可能性が上がる。とりあえず今週末に手元で試してみるつもりだ。
それと UI 系の変更も地味に増えていて、`add budget duration to edit team member form` (PR #29717) なんかはチームで LiteLLM Proxy の管理画面を使い始めたら便利そう。budget duration を form から直接いじれるようになるのは、毎月 API コストを絞りたいときに助かる。うちのチームは月 $200 のバジェットをメンバーごとに設定しているが、今は config ファイル直書きでやっていたので。
彼女に「また GitHub 見てる」って言われたが、rc.1 のリリースノート読むのは仕事のうちだと思っている。自分が LiteLLM を使う以上、署名検証をちゃんとやっていない Docker の使い方はさすがに直す。今日の対応タスクに追加した。
v1.90.0-rc.1 を読んだとき、まず目に入ったのが Docker イメージへの cosign 署名の話だ。LiteLLM の全 Docker イメージを cosign で署名していて、commit `0112e53` で導入された鍵で統一されている。今まで「まあ公式イメージだし」で pull していたのが、正直ちょっとヤバかったかもしれないと気づいた。
検証コマンドはこんな感じ。
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
ghcr.io/berriai/litellm:v1.90.0-rc.1pinned commit hash で検証するのが推奨で、タグ指定より cryptographically immutable だから強い、という説明に素直に納得した。タグは rewrite できてしまうからな。コンビニエンスで release tag を使うオプションも用意されているが、自分のチームの Compose ファイルには commit hash の方を使うことにした。
rate limit エラーの標準化、地味にありがたい
もう一個、実務で刺さったのが `standardize rate limit errors with category, rate_limit_type, model, and llm_provider fields` という変更だ。PR 番号は #27687 で、mateo-berri さんのコミット。
LiteLLM を Proxy として使っているとき、Claude と OpenAI と Gemini を混在させているチームの構成上、rate limit が発生したときに「どのプロバイダの何のレートに引っかかったか」がログから追いにくかった。エラーオブジェクトに `llm_provider` と `rate_limit_type` が入るようになるなら、自前で書いていた分岐ロジックをだいぶ削れる。
今は middleware 層で `except litellm.RateLimitError` を雑にキャッチして、message 文字列をパースして provider 判定してたんだが、そのコード正直ハマりポイントが多かった。Anthropic の rate limit メッセージと OpenAI のそれでフォーマットが違うから、正規表現が増える一方で。
Bedrock の toolSpec 対応も見ておく
`feat(bedrock): forward strict and additionalProperties to Converse toolSpec` というのも興味深い。PR #29814 で、Bedrock の Converse API に `strict` と `additionalProperties` を渡せるようになった。
自分は Bedrock をまだ本番で使っていないが、個人開発で AWS Bedrock + Claude 3.5 を試していて、tool use の schema 周りで「あれ、strict モードどこ行った」ってなったことがある。Converse toolSpec にそのまま forwarding されるようになるなら、OpenAI 互換の schema をそのまま使い回せる可能性が上がる。とりあえず今週末に手元で試してみるつもりだ。
それと UI 系の変更も地味に増えていて、`add budget duration to edit team member form` (PR #29717) なんかはチームで LiteLLM Proxy の管理画面を使い始めたら便利そう。budget duration を form から直接いじれるようになるのは、毎月 API コストを絞りたいときに助かる。うちのチームは月 $200 のバジェットをメンバーごとに設定しているが、今は config ファイル直書きでやっていたので。
彼女に「また GitHub 見てる」って言われたが、rc.1 のリリースノート読むのは仕事のうちだと思っている。自分が LiteLLM を使う以上、署名検証をちゃんとやっていない Docker の使い方はさすがに直す。今日の対応タスクに追加した。