代理框架
PydanticAI 2.38、エージェントのコンテキスト使用量を公開し、実行ストリームに型付きカスタムイベントを追加
エージェントツールが `RunContext` からコンテキスト使用量を判断できるようになり、アプリケーションもカスタム状態を同じイベントストリームへ送信可能になった。新バージョンでは、セルフホスト型 vLLM provider と、`finish_reason` が欠落したストリームを拒否するポリシーも追加された。

PydanticAI 2.38.0 は、これまでアプリケーション層で独自に補う必要があった複数のエージェント制御シグナルをフレームワークに取り込んだ。`ModelProfile` には `context_window` が追加され、`RunContext` は `context_window_used` を提供する。これによりツールは実行中に消費済みのコンテキスト量を取得し、それに基づいて大規模ドキュメントの読み込みを停止したり、要約フローへ切り替えたり、上限に近い段階で高コストなモデル呼び出しを重ねるのを回避したりできる。これは、1回のリクエストが終了してから token usage を読み取るだけの方法よりも、長時間にわたるツールループに適している。ただし、実際の有用性は、各モデル provider が正確なコンテキストウィンドウ仕様と使用量情報を提供するかどうかに依存する。
もう一つの変更点は、アプリケーションと capability が型付きの `CustomEvent` と `CapabilityEvent` を発行し、`@on_event` で購読できるようになったことだ。これにより、進捗、承認リクエスト、ドメイン状態、フロントエンド通知を、モデルイベントやツールイベントと同じ run stream に流せる。型のない callback や別個のメッセージバスを維持する必要はない。エージェントを Web UI、ワークキュー、オブザーバビリティシステムへ接続する必要があるチームにとって、統一されたイベントモデルは、イベント順序の保持と静的型チェックに役立つ。
2.38.0 では `VLLMProvider` も追加され、同じ agent API から企業がセルフホストする vLLM サーバーへ接続できるようになった。モデル一覧は Gemini 3.8 Flash、Claude Fable 5.1、Mythos 5.1 にも対応した。新しい profile オプションでは、`finish_reason` のないストリームを拒否でき、上流での切断が正常終了と誤認されるのを防げる。このバージョンではさらに、DeepSeek、Together、Anthropic、Bedrock、OpenAI Responses などの経路におけるツール選択、推論ブロック、履歴リプレイの問題も修正された。これは、provider 間の抽象化に依然として多くの意味論的な差異があることを示している。今回のリリースでは、スループットや信頼性に関するベンチマークは示されていない。アップグレード時には、capability に追加されたデフォルトの `id` と重複マージ規則をテストし、セルフホスト型 vLLM のストリーム形式、終了理由、token 統計がフレームワークの想定に合致することも確認する必要がある。