メインコンテンツへスキップ
このドキュメントは AI によって自動翻訳されています。不正確な部分がある場合は、英語版 を参照してください。
コードノードは、カスタム Python または JavaScript を実行して、ワークフロー内で複雑なデータ変換、計算、ロジックを処理します。事前設定されたノードが特定の処理ニーズに十分でない場合に使用してください。
コードノード設定インターフェース

サンドボックスサービス

コードノードは sandbox サービスに依存します。このサービスは標準の Docker Compose デプロイに定義されており、スタックの他のコンポーネントとともに自動的に起動します。
docker compose up -d
サンドボックスは独立したコンテナとして動作し、コード実行をホストや他のサービスから隔離します。動作のチューニングには、docker/envs/core-services/sandbox.env.exampleSANDBOX_* 環境変数(ワーカーのタイムアウト、SSRF プロキシ経由のネットワークアクセス、ポート)と、docker/envs/core-services/shared.env.exampleCODE_* 変数(API が参照する出力制限)を使用します。

設定

入力変数 を定義してワークフロー内の他のノードからデータにアクセスし、これらの変数をコード内で参照します。関数は、宣言した出力変数 を含む辞書を返す必要があります。
def main(input_variable: str) -> dict:
    # 入力を処理
    result = input_variable.upper()
    return {
        'output_variable': result
    }

言語サポート

ニーズと習熟度に基づいて、PythonJavaScript から選択できます。どちらの言語も、データ処理用の一般的なライブラリにアクセス可能な安全なサンドボックス内で実行されます。
Python にはjsonmathdatetimereなどの標準ライブラリが含まれています。データ分析、数学的演算、テキスト処理に最適です。
def main(data: list) -> dict:
    import json
    import math
    
    average = sum(data) / len(data)
    return {'result': math.ceil(average)}

エラーハンドリングと再試行

失敗したコード実行に対する自動再試行動作を設定し、コードがエラーに遭遇した場合のフォールバック戦略を定義します。
エラーハンドリング設定オプション
再試行設定 では、設定可能な間隔(最大 5000ms)で最大 10 回の自動再試行が可能です。一時的な処理問題の対処にこれを有効にしてください。 エラーハンドリング では、コード実行が失敗した場合のフォールバックパスを定義でき、コードが問題に遭遇してもワークフローの実行を継続できます。
再試行設定インターフェース

出力検証と制限

コード出力は、API コンテナに設定された制限値に対して検証されます。
  • 文字列:最大長は CODE_MAX_STRING_LENGTH(デフォルト 400,000 文字)で設定します。null バイトは除去されます。
  • 数値:範囲は CODE_MAX_NUMBERCODE_MIN_NUMBER(デフォルトは int64 の範囲)で設定します。浮動小数点の精度は CODE_MAX_PRECISION(デフォルト 20 桁)で設定します。
  • オブジェクトと配列:ネストの最大深度は CODE_MAX_DEPTH(デフォルト 5)で設定します。配列サイズは CODE_MAX_STRING_ARRAY_LENGTHCODE_MAX_OBJECT_ARRAY_LENGTHCODE_MAX_NUMBER_ARRAY_LENGTH で設定します。
デフォルト値は docker/envs/core-services/shared.env.example に定義されています。出力サイズを抑えたい場合は制限を厳しくし、より大きなペイロードを正当に生成するワークフローでは緩めてください。

セキュリティ上の考慮事項

コードは、ファイルシステムへのアクセス、ネットワークリクエスト、システムコマンドを防ぐ厳格なサンドボックス内で実行されます。これにより、プログラミングの柔軟性を提供しながらセキュリティが維持されます。 セキュリティ上の理由から、一部の操作は自動的にブロックされます。システムファイルへのアクセスや潜在的に危険な操作の実行を試みることは避けてください。デフォルトでは、サンドボックス化されたコードからの外部ネットワーク呼び出しは SSRF プロキシ経由でルーティングされます。サンドボックス化されたコードからのネットワークアクセスを完全に無効にするには、SANDBOX_ENABLE_NETWORK=false を設定してください。

依存関係サポート

コードノードは、Python と JavaScript 両方の外部依存関係をサポートします:
# Python: numpy、pandas、requests などをインポート
import numpy as np
import pandas as pd

def main(data: list) -> dict:
    df = pd.DataFrame(data)
    return {'mean': float(np.mean(df['values']))}
// JavaScript: lodash、moment などをインポート
const _ = require('lodash');

function main(data) {
    return { unique: _.uniq(data) };
}
依存関係はサンドボックス環境に事前インストールされています。Dify インストールで利用可能なパッケージリストを確認してください。
最終更新日 2026年6月25日