dify-docs/jp/guides/workflow/node/code.md

66 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# コード実行
## 目次
- [紹介](#紹介)
- [使用シナリオ](#使用シナリオ)
- [ローカルデプロイ](#ローカルデプロイ)
- [セキュリティポリシー](#セキュリティポリシー)
## 紹介
コードードは、Python / NodeJSコードを実行してワークフロー内でデータ変換を行うことをサポートします。これにより、Arithmetic、JSON変換、テキスト処理などのシナリオでワークフローが簡素化されます。
このードは開発者の柔軟性を大幅に向上させ、ワークフロー内にカスタムPythonまたはJavascriptスクリプトを埋め込んで、事前設定されたードでは達成できない方法で変数を操作することができます。設定オプションを使用して、必要な入力変数と出力変数を指定し、対応する実行コードを記述できます。
<figure><img src="../../../.gitbook/assets/image (157).png" alt="" width="375"><figcaption></figcaption></figure>
## 設定
他のノードの変数をコードノードで使用する必要がある場合は、`入力変数`で変数名を定義し、これらの変数を参照する必要があります。[変数参照](../key_concept.md#変数)を参考にしてください。
## 使用シナリオ
コードノードを使用して、以下の一般的な操作を実行できます:
### 構造化データ処理
ワークフローでは、しばしば非構造化データの処理が必要です。例えば、JSON文字列の解析、抽出、変換などです。典型的な例として、HTTPードのデータ処理があります。一般的なAPI応答構造では、データが多層のJSONオブジェクトにネストされていることがあり、特定のフィールドを抽出する必要があります。コードードはこれらの操作を支援します。以下は、HTTPードから返されたJSON文字列から`data.name`フィールドを抽出する簡単な例です:
```python
def main(http_response: str) -> str:
import json
data = json.loads(http_response)
return {
# 出力変数にresultを宣言することに注意
'result': data['data']['name']
}
```
### 数学計算
ワークフロー内で複雑な数学計算を行う必要がある場合、コードノードを使用できます。例えば、複雑な数学公式の計算やデータの統計分析です。以下は、配列の平方差を計算する簡単な例です:
```python
def main(x: list) -> float:
return {
# 出力変数にresultを宣言することに注意
'result': sum([(i - sum(x) / len(x)) ** 2 for i in x]) / len(x)
}
```
### データの結合
時には、複数のデータソースを結合する必要がある場合があります。例えば、複数の知識検索、データサーチ、API呼び出しなどです。コードードはこれらのデータソースを統合するのに役立ちます。以下は、2つの知識ベースのデータを結合する簡単な例です
```python
def main(knowledge1: list, knowledge2: list) -> list:
return {
# 出力変数にresultを宣言することに注意
'result': knowledge1 + knowledge2
}
```
## ローカルデプロイ
ローカルデプロイのユーザーである場合、悪意のあるコードが実行されないようにするためのサンドボックスサービスを起動する必要があります。このサービスを起動するにはDockerサービスを使用します。サンドボックスサービスの詳細は[こちら](https://github.com/langgenius/dify/tree/main/docker/docker-compose.middleware.yaml)から確認できます。また、`docker-compose`を使用してサービスを直接起動することもできます:
```bash
docker-compose -f docker-compose.middleware.yaml up -d
```
## 制限
PythonとJavascriptのいずれであっても、その実行環境は安全性を確保するために厳密に隔離サンドボックス化されています。これにより、ファイルシステムへの直接アクセス、ネットワークリクエストの実行、OSレベルのコマンドの実行など、システムリソースを大量に消費する可能性がある機能を使用することはできません。これらの制限により、コードの安全な実行が保証され、システムリソースの過剰消費が防止されます。