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

コードノード設定インターフェース

設定

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

言語サポート

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

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

失敗したコード実行に対する自動再試行動作を設定し、コードがエラーに遭遇した場合のフォールバック戦略を定義します。
Code Error handling

エラーハンドリング設定オプション

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

再試行設定インターフェース

出力検証と制限

コード出力は厳格な制限で自動的に検証されます:
  • 文字列:最大長80,000文字、nullバイトは削除されます
  • 数値:-999999999から999999999の範囲、浮動小数点数は小数点以下10桁に制限
  • オブジェクト/配列:複雑なネスト構造を防ぐため最大深度5レベル
これらの制限により、パフォーマンスが確保され、ワークフローでのメモリー問題が防止されます。

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

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

Cloudflare WAFによるセキュリティフィルタリング

コードが保存されない場合は、ブラウザのネットワークタブを確認してください - セキュリティフィルタが潜在的に危険な操作をブロックしている可能性があります。

依存関係サポート

コードノードは、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インストールで利用可能なパッケージリストを確認してください。

セルフホスト型セットアップ

セルフホスト型Difyインストールの場合、安全なコード実行のためにサンドボックスサービスを開始してください:
docker-compose -f docker-compose.middleware.yaml up -d
サンドボックスサービスはDockerが必要で、セキュリティのためにメインシステムからコード実行を分離します。

一般的な使用例

データ解析 - APIや他のノードから返される複雑なJSON構造から特定の値を抽出します。 数学的演算 - 事前設定されたノードでは処理できない計算、統計分析、データ集約を実行します。 データ変換 - データ形式の変換、複数のデータソースの結合、下流処理のための情報の再構築を行います。 条件ロジック - 単純なif-else条件を超える複雑な意思決定ロジックを実装します。