16
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Dify】コード実行ノードでPythonの外部ライブラリを利用する(セルフホスト環境)

16
Posted at

はじめに

DifyのSandbox環境では、使用できるPythonモジュールに制限があります。一方、コード実行ノードで外部ライブラリを利用できるようにすることで、できることの幅が大きく広がります。

この記事では、セルフホストされたDify環境において、Pythonの外部ライブラリ(例:oci)をコード実行ノードで利用可能にするための設定手順を紹介します。

前提:

  • Docker Composeを用いてセルフホスト構築されたDify環境であること
  • 検証時のDifyバージョン:v1.6.0

手順

1. python-requirements.txt にライブラリを追加

外部ライブラリを使えるようにするには、まず依存ファイルにパッケージ名を追記します。
docker/volumes/sandbox/dependencies/python-requirements.txtを開き必要なライブラリを追加します。

vi docker/volumes/sandbox/dependencies/python-requirements.txt

たとえば、OCI SDKを使いたい場合は以下のように書き加えます:

oci

他にも使用したいライブラリがある場合は、同様に1行ずつ追加してください。

2. config.yaml の syscall 許可リストを拡張

Difyのsandboxではセキュリティのため使用可能な system call が制限されています。外部ライブラリによっては、動作に追加の system call を必要とする場合があるため、許可リストを拡張します。

docker/volumes/sandbox/conf/config.yamlを開きます。

vi docker/volumes/sandbox/conf/config.yaml

以下のように、allowed_syscalls: に制限解除したい system call の番号を列挙します(以下は全許可例です)。

allowed_syscalls: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336]

セキュリティには十分注意してください。全許可は開発環境や信頼された用途でのみ使用することを推奨します。

3. コンテナを再起動して設定を反映

設定ファイルを修正したら、Dify環境を再起動して反映させます。

docker compose down
docker compose up -d

動作確認

コード実行ノードに以下のようなスクリプトを記述して、インポートが成功するかを確認してみましょう。

import oci

def main():
    return {"status": "OCI SDK is available!"}

期待通りに動作すれば、セットアップは完了です。
image.png

image.png

おわりに

Difyのコード実行ノードで外部ライブラリを使えるようにすると、OCI SDKを使ったデータ処理や、PDF/画像処理、外部API連携などの実現が可能になります。

制限を理解しつつ適切にカスタマイズすることで、Difyのワークフロー機能をより強力に活用できます。ぜひご自身のユースケースにも応じて拡張してみてください。

16
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?