langchain-openai 1.1.13で自分のコードを見直した話

鈴木 蓮
鈴木 蓮 20代・ ソフトウェアエンジニア
先週、`langchain-openai==1.1.13` がリリースされた。
GitHubのリリースノートをざっと眺めていたら、いくつか「あ、これ自分のコードに刺さる」という修正があったので書いておく。

Responses APIの変換処理のバグ修正が気になった



今回のリリースで個人的に一番目を引いたのが `fix(openai): handle content blocks without type key in responses api conversion (#36725)` という修正。
Responses APIを使ったときに、コンテンツブロックに `type` キーがない場合の処理がこれまで壊れていた。
自分はストリーミングレスポンスを受け取って後処理するコードを書いているので、こういうエッジケースは普通に踏みうる。
アップデートせずに本番で踏んでいたら嫌だったなと素直に思った。

pip install langchain-openai==1.1.13

アップデート自体は1行で終わるし、理由があってバージョンを固定しているプロジェクトでも、この修正は取り込む価値がある。

使用トークン数の取得がNoneを踏んでいた可能性



もう一つ気になったのが `fix(openai,groq,openrouter): use is-not-None checks in usage metadata token extraction (#36500)`。
トークン数のメタデータを取り出すとき、`None` チェックが甘くて誤った値を返すことがあったという話だ。
自分はAPIコストの監視をするために毎回 `usage_metadata` からプロンプトトークンとコンプリーショントークンを取り出してログに残している。
そのコードが `None` を正しく扱えていない可能性があったと知って、少しヒヤッとした。
GroqやOpenRouterを使っているプロジェクトにも影響するので、複数のプロバイダーを切り替えて使っている人は特に確認しておいたほうがいい。

CVE-2026-4539 に対応した `pygments>=2.20.0` への更新も含まれている。
セキュリティ系のアップデートが入っているとなると、依存ライブラリのバージョン固定を後回しにしている場合じゃない。

モデルプロファイルのリフレッシュが地味に効く



リリースノートを見ると `chore(model-profiles): refresh model profile data` が複数のPRにまたがって入っている。
地味に見えるけど、モデルのコンテキスト長やトークン単価のメタデータがライブラリ内部に持たれているとしたら、ここが古いとコスト計算や上限チェックがずれることになる。
OpenAIが新しいモデルをどんどん出しているペースを考えると、こういう更新は定期的に追いかけておくのが正直ベターだと思う。

今回のリリースを見ながら改めて感じたのは、マイナーバージョンのリリースノートを読む習慣は思っていたより大事だということ。
バグ修正のPR番号まで追えば、自分が書いたコードの何が影響を受けるかをピンポイントで判断できる。
まずは今使っているプロジェクトの `langchain-openai` をアップデートして、`usage_metadata` 周りのコードを一度見直してみるところから始めてみてほしい。

無料相談受付中

AI開発・DX推進についてお気軽にご相談ください。オンライン30分から。

無料相談を申し込む