メモ
Pythonエージェントのこのリリースでは、Azure CosmosDBのサポートを追加し、HTTPX2および新しいLangChain/LangGraphストリーミングイベントAPIの計装を追加し、新しいOpenTelemetryデータベースセマンティック規則のサポートを追加し、不完全なパッケージレポート、パッケージ検索のパフォーマンスの低下、MySQLデータベース名のレポートのバグを含むいくつかの問題を解決しています。
Python パッケージ インデックス経由でeasy_install/pip/distributeを使用するか、 Conda-Forge パッケージ インデックス経由でcondaを使用してエージェントをインストールするか、 New Relic ダウンロード サイトから直接ダウンロードします。
新機能
Azure CosmosDBのサポートを追加しました
- Pythonエージェントは、Azure Cosmos DBクライアント操作をインストゥルメントするようになり、
azure-cosmosSDKを通じて実行されるデータベース、コンテナ、およびユーザー操作のデータストアメトリクスとトレースをレポートします。
- Pythonエージェントは、Azure Cosmos DBクライアント操作をインストゥルメントするようになり、
HTTPX2のサポートを追加しました
LangChain/LangGraphストリーミングイベントの計装を追加しました
新しいOpenTelemetryデータベースセマンティック規則のサポートを追加しました
- PythonエージェントをOpenTelemetryと並行して実行する場合(ハイブリッドエージェントモード)、エージェントはレガシーおよび新しいOpenTelemetryデータベーススパン属性名(
db.name/db.namespace、db.statement/db.query.text、db.mongodb.collection/db.collection.name)の両方を読み取るようになったため、OpenTelemetry計装ライブラリが出力するセマンティック規則のバージョンに関係なく、データベーストレースが引き続き正しく機能します。
- PythonエージェントをOpenTelemetryと並行して実行する場合(ハイブリッドエージェントモード)、エージェントはレガシーおよび新しいOpenTelemetryデータベーススパン属性名(
バグ
New Relicへの不完全なパッケージレポートを修正しました
- 以前は、モジュールの検出に遅い収集サイクル中に割り当てられた固定時間枠よりも長くかかり、エージェントの再起動後にパッケージリストが更新されなかった場合、PythonエージェントはNew Relicにレポートされる環境データから一部のインストール済みパッケージを除外する可能性がありました。パッケージのキャプチャは速い収集サイクル中に実行されるようになり、エージェントのシャットダウン/再起動時に完全に再キャプチャされるため、レポートされるパッケージリストは完全になります。
パッケージバージョン検索のオーバーヘッドを削減しました
- 以前は、インストールされているパッケージのバージョンを検索する際、検索のたびにすべてのパッケージについてファイルシステムを再スキャンしていたため、エージェントの初期化時にインストールされているパッケージの数に比例してO(n^2)のタイムペナルティが発生していました。このオーバーヘッドを回避するため、
importlib.metadata.packages_distributions()の結果は最初の検索後にキャッシュされるようになりました。
- 以前は、インストールされているパッケージのバージョンを検索する際、検索のたびにすべてのパッケージについてファイルシステムを再スキャンしていたため、エージェントの初期化時にインストールされているパッケージの数に比例してO(n^2)のタイムペナルティが発生していました。このオーバーヘッドを回避するため、
指定されたアプリケーションを適切にパススルーするように
get_linking_metadataを修正しました- 以前は、
newrelic.agent.get_linking_metadata(application=...)を呼び出すとapplication引数が無視され、常にデフォルトのアプリケーションのリンクメタデータが返されていました。これは、複数のアプリケーションにレポートするプロセスに影響を与えていました。指定されたアプリケーションが正しくパススルーされるようになりました。 - 貢献してくださったckarnellに感謝します!
- 以前は、
databaseキーワード引数を使用した場合のMySQLデータベース名のレポートを修正しました- 以前は、mysql-connector-pythonの接続引数からデータベース名を解析する際、エージェントはレガシーな
dbキーワード引数のみをチェックしていたため、モダンなdatabaseキーワード引数を使用して行われた接続では、データストアメトリクスにデータベース名がレポートされませんでした。エージェントは最初にdatabaseをチェックし、dbにフォールバックするようになりました。
- 以前は、mysql-connector-pythonの接続引数からデータベース名を解析する際、エージェントはレガシーな
LangGraph v1.1+の
GraphOutput値にアクセスする際の警告を修正しました- 以前は、LangGraph v1.1+の計装は、非推奨のアイテムアクセス構文を使用して
GraphOutputの戻り値にアクセスしていたため、非推奨の警告がトリガーされていました。エージェントはGraphOutput.valueを直接読み取るようになりました。
- 以前は、LangGraph v1.1+の計装は、非推奨のアイテムアクセス構文を使用して
サポートステートメント
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Python エージェントのEOL ポリシーを参照してください。
メモ
Pythonエージェントのこのリリースでは、Redis v8.10.0およびredis-py v8.1.0で導入されたRedisコマンドのサポートが追加されています。このリリースでは、MCPツールの使用時にLangChainでLlmChatCompletionイベントが欠落する問題も解決されています。
Python パッケージ インデックス経由でeasy_install/pip/distributeを使用するか、 Conda-Forge パッケージ インデックス経由でcondaを使用してエージェントをインストールするか、 New Relic ダウンロード サイトから直接ダウンロードします。
新機能
Redis v8.10.0 および redis-py v8.1.0 で導入された Redis コマンドを追加しました
Pythonエージェントは、Redisで最近追加された次のコマンドをサポートするようになりました。
himport_discard_allhimport_discardhimport_preparelmovemnrangenrevrangequerylabelsreadsdiffcardsunioncardaliaslist
バグ
MCPツールを使用する際にGeminiでLlmChatCompletionイベントが欠落する問題を修正しました。
LangChainおよびAgentフレームワークでトレースキャッシュIDにスワップしました
- コンテキスト伝搬の目的で、LangChainおよびAgentフレームワークの計装をスワップし、参照属性に完全なトレースではなくトレースキャッシュIDのみを保存するようにしました。これは、リークが発生した場合にこれらのオブジェクトが予期せずシリアル化されるのを防ぐためです。トレースには数MBのデータが含まれる可能性がありますが、IDははるかに小さなオブジェクトです。
サポートステートメント
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Python エージェントのEOL ポリシーを参照してください。
メモ
このリリースのPythonエージェントでは、AIモニタリングのサーバーサイドコンフィグレーションのサポートが追加され、Microsoft Agentフレームワークを介して行われるBedrock呼び出しのコンテキスト伝搬が追加され、リモートMCPサーバーをバックエンドとするLangChainツールの重複するツールエンティティが修正され、ガベージコレクションデータサンプラーの競合状態のリスクが軽減され、Wagtail使用時の不整合なトランザクション名が修正され、送信されるKombuのディストリビューティッド(分散)トレーシングヘッダーからバイトエンコーディングが削除されました。
Python パッケージ インデックス経由でeasy_install/pip/distributeを使用するか、 Conda-Forge パッケージ インデックス経由でcondaを使用してエージェントをインストールするか、 New Relic ダウンロード サイトから直接ダウンロードします。
新機能
AIモニタリングのサーバーサイドコンフィグレーションのサポートを追加
- Pythonエージェントは、AIモニタリングのサーバーサイドコンフィグレーションに対応しました。設定された場合、サーバーサイドの
ai_monitoring.enabled、ai_monitoring.record_content.enabled、およびai_monitoring.streaming.enabledの値がローカル設定よりも優先されます。
- Pythonエージェントは、AIモニタリングのサーバーサイドコンフィグレーションに対応しました。設定された場合、サーバーサイドの
エージェントフレームワークを介したBedrock呼び出しのコンテキスト伝搬を追加
- Microsoft エージェントフレームワークのBedrockインテグレーションによって作成されたスレッド境界を越えて、トレースコンテキストを伝播します。これにより、エージェントの既存のbotocore計装が、エージェントフレームワークを通じて行われたBedrock呼び出しのLLMイベントをキャプチャできるようになります。これは、エージェントフレームワーク自体の完全な計装を追加するものではありません。
バグ
Wagtail使用時の一貫性のないトランザクション名を修正
- 以前は、Wagtail上に構築されたアプリのトランザクション名は一貫性がなく、異なるページビューで同じになることがありました。これは修正されました。
リモートMCPサーバーをバックエンドとするLangChainツールの重複するツールエンティティを修正
- 以前は、LangChainツールが、個別にインストゥルメントされたリモートMCPサーバーをバックエンドとしている場合、重複したツールエンティティがUIに表示されていました。これは、既知のリモートツールが検出された場合に、LangChainツールからサブコンポーネント属性を除外することで修正されました。
LangChainおよびLangGraph MCPツール呼び出しでユーザー入力フィールドが欠落する問題を修正
- 以前は、LangChainまたはLangGraphがMCPサーバーのツールを使用した場合、入力メッセージがストリーミングされたシーケンスの最後のメッセージでないと、AIモニタリングデータからユーザー入力フィールドが欠落する可能性がありました。これは修正され、エージェントはこれらのケースで入力メッセージを正しく抽出するようになりました。
ガベージコレクションデータサンプラーにおける競合状態のリスクを軽減します。
- 以前は、設定に関係なく、エージェントはガベージコレクターのオブジェクト数をサンプリングするために常に
gc.get_objects()を呼び出していました。これは変更され、top_object_count_limitが0より大きく設定されている場合にのみgc.get_objects()が呼び出されるようになり、ガベージコレクターによって収集されたオブジェクトタイプを追跡しない顧客にとって不要なヒープの反復を回避するようになりました。
- 以前は、設定に関係なく、エージェントはガベージコレクターのオブジェクト数をサンプリングするために常に
アウトバウンドのKombuディストリビューティッド(分散)トレーシングヘッダーからバイトエンコーディングを削除
- 以前は、Kombuの計装によって追加されたディストリビューティッド(分散)トレーシングヘッダーがバイトエンコードされていたため、標準ライブラリの
jsonモジュールを使用してペイロードをシリアライズするトランスポート(たとえば、SQLAlchemyをバックエンドとするトランスポート)が正常に動作しなくなっていました。これらのトランスポートが正しく機能するように、バイトエンコーディングは削除されました。
- 以前は、Kombuの計装によって追加されたディストリビューティッド(分散)トレーシングヘッダーがバイトエンコードされていたため、標準ライブラリの
サポートステートメント
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Python エージェントのEOL ポリシーを参照してください。
メモ
Pythonエージェントのこのリリースでは、Google ADKの計装サポートを追加し、複数のAIプロバイダー(Anthropic、Google生成AI、OpenAI、およびAWS Bedrock)のトークンカウントを追加し、アウトバウンドのtracestateヘッダーサイズを縮小し、graphql-core計装のクラッシュを修正しました。
Python パッケージ インデックス経由でeasy_install/pip/distributeを使用するか、 Conda-Forge パッケージ インデックス経由でcondaを使用してエージェントをインストールするか、 New Relic ダウンロード サイトから直接ダウンロードします。
改善された機能
Google ADKの計装を追加
Pythonエージェントは、Google ADK(Agent Development Kit)AIエージェントのワークフローを計装するようになりました。
インストゥルメントされたコンポーネントとしては、次のものがあります:
LlmAgentgoogle.genai経由でGeminiまたはVertexAIバックエンドにリンクされています- ユーザー定義の
FunctionToolインスタンス - 子エージェントおよび
AgentToolインスタンスを含むサブエージェントのワークフロー Workflowクラス、および非推奨のLoopAgent、ParallelAgent、SequentialAgentクラスを含むマルチエージェントワークフロー
Anthropic、Gemini、OpenAI、およびBedrockのトークンカウントを追加
Pythonエージェントは、複数のAIプロバイダーにわたるすべてのLLM呼び出しのトークンカウントを報告するようになりました:
- Anthropic SDK
- Google生成AI SDK
- OpenAI SDK
- botocoreおよびaiobotocore経由のAWS Bedrock
バグ
graphql-core v3.2.10 の計装のクラッシュを修正しました
- 以前は、graphql-core v3.2.10で
ExecutionContextのerrors属性がcollected_errorsに名前変更されたため、エージェントがクラッシュしていました。この問題は修正され、エージェントはgraphql-core v3.2.10以降で正常に動作するようになりました。
- 以前は、graphql-core v3.2.10で
アウトバウンドの
tracestateヘッダーからspanIdを削除- 以前は、エージェントはアウトバウンドの
tracestateヘッダーにspanIdを含めていました。spanIdはすでにtraceparentヘッダーに存在するため、これは不要な重複でした。アウトバウンドのヘッダーサイズを縮小するため、spanIdはtracestateから削除されました。
- 以前は、エージェントはアウトバウンドの
サポートステートメント
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Python エージェントのEOL ポリシーを参照してください。
メモ
Pythonエージェントのこのリリースでは、LangChainチェーンLLMイベントに追加のモデル情報を追加し、LangGraphストリーミング計装のバグを修正しました。
Python パッケージ インデックス経由でeasy_install/pip/distributeを使用するか、 Conda-Forge パッケージ インデックス経由でcondaを使用してエージェントをインストールするか、 New Relic ダウンロード サイトから直接ダウンロードします。
改善された機能
LangChain チェーン LLM イベントに追加のモデル情報を追加する
- LangChainチェーンによって生成されたLLMイベントに
request.modelおよびresponse.model属性を追加します。 - この情報はベストエフォートで取得されるため、常に利用可能であるとは限りません。
- LangChainチェーンによって生成されたLLMイベントに
バグ
LangGraphストリーミング計装におけるTypeErrorを修正
- 以前は、LangGraphでストリーミングAPIのサブセットを使用する際、LangGraphによる
weakref.WeakMethodの使用が原因で、エージェントでTypeErrorが発生していました。この問題は修正され、エージェントはそれらのLangGraphストリーミングメソッドで正しく動作するはずです。
- 以前は、LangGraphでストリーミングAPIのサブセットを使用する際、LangGraphによる
サポートステートメント
最新のエージェント バージョンが利用可能になったらすぐに更新することをお勧めします。最新バージョンにアップグレードできない場合は、エージェントを 90 日以内のバージョンに更新してください。エージェントを最新の状態に保つ方法の詳細については、こちらをご覧ください。
エージェントのリリースとサポート日については、New Relic Python エージェントのEOL ポリシーを参照してください。
Notes
This release of the Python agent adds support for multiple new Redis commands, fixes a bug in LangGraph instrumentation, and improves handling and logging of harvest limit settings.
Install the agent using easy_install/pip/distribute via the Python Package Index, using conda via the Conda-Forge Package Index, or download it directly from the New Relic download site.
Improved Features
Add instrumentation for new Redis v8.8.0 commands
- Add instrumentation for the following new Redis commands from redis-py v8.8.0:
- Misc commands: INCREX, XNACK
- Array commands: ARCOUNT, ARDEL, ARDELRANGE, ARGET, ARGETRANGE, ARGREP, ARINFO, ARINSERT, ARLASTITEMS, ARLEN, ARMGET, ARMSET, ARNEXT, AROP, ARRING, ARSCAN, ARSEEK, ARSET
- Add instrumentation for the following new Redis commands from redis-py v8.8.0:
Bugs
Fix crash in LangGraph instrumentation
- Previously, when using LangGraph instrumentation, the agent would crash due to an issue with context propagation to jobs in AsyncBackgroundExecutor. This has been fixed, and the agent should now work correctly with LangGraph.
Improved handling and logging of harvest limit settings
- The agent now more accurately reports the list of harvest methods and limits to the Environment tab in New Relic One.
- The agent now has more consistent debug logging on startup for harvest limit settings.
Support statement
We recommend updating to the latest agent version as soon as it's available. If you can't upgrade to the latest version, update your agents to a version no more than 90 days old. Read more about keeping agents up to date.
See the New Relic Python agent EOL policy for information about agent releases and support dates.