Pythonパッケージの追加¶
エージェント環境に追加のPythonパッケージを追加するには、最新のPythonパッケージと環境マネージャであるuvを使って、pyproject.tomlファイルに追加します。
既存パッケージの維持
プレイグラウンド環境とデプロイ環境で動作の一貫性を確保するため、既存のパッケージをpyproject.tomlで維持することをお勧めします。
実行時依存関係を用いた高速イテレーション
開発を迅速に行うために、Dockerイメージを再構築せずに、実行時依存関係を使って依存関係を追加できます。 これは、開発時の簡単なテストに最適です。
パッケージを追加するための一般的なワークフローは次のとおりです。
- パッケージを追加する:
uv add <PACKAGE_NAME> - Test locally:
dr task dev(runs the development server) - Build Docker image:
dr task agent:build-docker-context(if using custom Docker image) - デプロイする:デプロイパイプラインを使用
自動同期
During a dr task deploy or dr task dev, the pyproject.toml file is automatically synchronized with the agentic workflow code. パッケージのインストールは、デフォルトでuvと自動的に同期されます。 これらのディレクトリ内のpyproject.tomlファイルを手動で更新する必要はありません。
エージェントにパッケージを追加する¶
- エージェントのディレクトリに移動し、uvを使用して新しいパッケージを追加します。
cd agent
uv add <PACKAGE_NAME>
たとえば、requestsパッケージを追加するには、次のようにします。
uv add requests
バージョンの制約も指定できます。
uv add "requests>=2.32.0"
-
カスタム実行環境を作成し、プレイグラウンドでエージェントをテストします。
-
.envファイルを開きます。 -
DATAROBOT_DEFAULT_EXECUTION_ENVIRONMENT=を空に設定するか、その行を完全に削除します。 -
オプション:カスタムDockerイメージでテストする必要がある場合は、まずDockerコンテキストを作成します。
# Create docker_context directory if needed
dr task agent:create-docker-context
# Then build and test the Docker image
cd agent/docker_context
docker build -f Dockerfile . -t docker_context_test
After completing these steps, when you run dr task dev or dr task deploy, the new environment will be automatically built the first time. 以降のビルドでは、要件に変更がなければ、キャッシュされた環境が使用されます。 新しい環境は自動的にリンクされ、すべてのエージェントコンポーネント、モデル、およびデプロイに使用されます。
以下のコマンドを実行してエージェントイメージの構築を手動でテストし、新しい依存関係が正常に定義されていることを確認できます。
dr task agent:build-docker-context
docker_contextはオプション
docker_contextディレクトリは、デフォルトでは含まれなくなりました。 If you need to build a custom Docker image, first create the docker context using dr task agent:create-docker-context. このコマンドは必要なDockerファイルをダウンロードし、エージェントフォルダーにdocker_contextディレクトリを作成します。 The dr task agent:build-docker-context command will then copy the updated pyproject.toml to the docker_context/ directory, build the Docker image with the new dependencies, and save the image.
設定ファイルを削除しないようにしてください
pyproject.tomlファイルからのパッケージの削除は、それが不要であることを確認してから行ってください。 パッケージを削除すると、ローカルの実行環境が正常に動作していても、プレイグラウンドやデプロイの操作で予期しない動作が発生する可能性があります。
エージェント特有の注意事項¶
エージェントのタイプによって依存関係の管理方法が異なる場合があります。
| エージェントのタイプ | 依存関係の管理方法 |
|---|---|
| agent_generic_base | pyproject.tomlを使用します。 |
| agent_llamaindex | requirements.inおよびrequirements.txtファイルが自動生成されたpyproject.tomlを使用します。 |
| agent_crewai | pyproject.tomlを使用します。 |
| agent_langgraph | pyproject.tomlを使用します。 |
| agent_nat | pyproject.tomlを使用します。 |
すべてのエージェントタイプで推奨される方法は、uv add <PACKAGE_NAME>を使用してpyproject.tomlファイルを修正することです。これにより、依存関係の解決とバージョンの制約が自動的に処理されます。
pyproject.tomlファイルは、すべての依存関係の唯一の情報源として機能し、ビルドプロセスはDocker環境のセットアップを自動的に処理します。
実行時依存関係の追加(高速イテレーション)¶
開発とテストを迅速に行うには、Dockerイメージを再構築せずに、実行時の依存関係を追加します。 pyproject.tomlファイルのextrasグループに追加された依存関係は、プレイグラウンドでプロンプトが最初に実行されたとき、またはデプロイが開始されたときにインストールされます。 実行時依存関係は、次の場合に最適です。
- 開発中の簡単なイテレーション
- イメージを再構築せずに新しいパッケージをテストする
- コンパイルを必要としない軽量な依存関係を追加する
エージェントに実行時の依存関係を追加するには、task agent:add-dependencyコマンドを使用します。
task agent:add-dependency -- "chromadb>=1.1.1"
また、uv を使って実行時依存関係を直接追加することもできます。
cd agent
uv add --active --no-upgrade --group extras "chromadb>=1.1.1"
--no-upgradeフラグの使用
--no-upgradeフラグは、追加の依存関係のインストールに必要な時間を最小限に抑えるために重要です。 このフラグにより、既存の依存関係をアップグレードせずに新しい依存関係のみが追加されるため、ランタイムのインストールを高速に保ち、実行環境との違いを最小限に抑えることができます。
機能に関する注意事項¶
実行時依存関係には、注意すべき重要な制限がいくつかあります。
-
インターネットアクセスが必要:追加の依存関係が実行時にインストールされるため、インターネットアクセスが必要です。 制限のあるネットワーク環境では、内部PyPIプロキシを設定するか、カスタム実行環境を構築してカスタム依存関係を含める必要があります。
-
インストールの複雑さ:依存関係に高度なインストールプロセス(Cバインディングのコンパイル、キャッシュの設定、カスタムビルド手順など)がある場合、実行環境の制限によりランタイムインストールが失敗することがあります。 このような場合、カスタム実行環境を構築する以外に方法はありません。
-
セキュリティに関する注意事項:実行時依存関係を使用すると、エージェントで直接ライブラリバージョンをアップグレードすることで、実行時のCVEの問題を迅速に修正できます。 ただし、実行環境にそのような脆弱性がない場合でも、ライブラリを脆弱性のあるバージョンにダウングレードすることで脆弱性が発生する可能性があります。 脆弱性が適切に修正されるように、実行環境とエージェントの
pyproject.toml/uv.lockファイルの両方を更新する必要があります。
実行時依存関係を使用する際には、以下のベストプラクティスを検討してください。
- 開発とテストに実行時依存関係を使用します。
- 本番環境にデプロイする場合は、必要な依存関係をすべてインストールしたカスタム実行環境の構築を検討してください。
pyproject.tomlファイルとすべての依存関係を同期させて、環境間の一貫性を確保します。--no-upgradeフラグを使用してアップグレードを最小限に抑え、インストール時間を短縮します。