<!-- wp:heading -->
<h2 class="wp-block-heading" id="introduction"><a href="https://docs.dify.ai/en/guides/workflow/node/code#introduction">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#introduction"></a>소개</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>코드 노드는 워크플로 내에서 데이터 변환을 수행하기 위해 Python/NodeJS 코드 실행을 지원합니다. 워크플로를 간소화하고 산술 연산, JSON 변환, 텍스트 처리 등의 시나리오에 적합합니다.이 노드는 개발자의 유연성을 크게 향상시켜 워크플로 내에 사용자 지정 Python 또는 JavaScript 스크립트를 내장하고 사전 설정된 노드로는 불가능한 방식으로 변수를 조작할 수 있도록 합니다. 구성 옵션을 통해 필요한 입력 및 출력 변수를 지정하고 해당 실행 코드를 작성할 수 있습니다.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":677,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://192.168.101.245/wp-content/uploads/2025/09/image-14-680x1024.png" alt="" class="wp-image-677"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p></p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading" id="configuration"><a href="https://docs.dify.ai/en/guides/workflow/node/code#configuration">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#configuration"></a>구성</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>코드 노드에서 다른 노드의 변수를 사용해야 하는 경우, 변수 이름을 정의하고 해당 변수를 참조해야 합니다 .<a href="https://docs.dify.ai/en/guides/workflow/variables"></a></p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2 class="wp-block-heading" id="usage-scenarios"><a href="https://docs.dify.ai/en/guides/workflow/node/code#usage-scenarios">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#usage-scenarios"></a>사용 시나리오</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>코드 노드를 사용하면 다음과 같은 일반적인 작업을 수행할 수 있습니다.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading" id="structured-data-processing"><a href="https://docs.dify.ai/en/guides/workflow/node/code#structured-data-processing">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#structured-data-processing"></a>구조화된 데이터 처리</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>워크플로에서는 JSON 문자열 구문 분석, 추출 및 변환과 같은 비정형 데이터 처리를 자주 처리해야 합니다. 대표적인 예로 HTTP 노드에서 데이터를 처리하는 것을 들 수 있습니다. 일반적인 API 반환 구조에서 데이터는 여러 계층의 JSON 객체 내에 중첩될 수 있으며, 특정 필드를 추출해야 합니다. 코드 노드를 사용하면 이러한 작업을 수행할 수 있습니다. 다음은 <code>data.name</code>HTTP 노드에서 반환된 JSON 문자열에서 필드를 추출하는 간단한 예입니다.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>def main(http_response: str) -&gt; dict:
    import json
    data = json.loads(http_response)
    return {
        # Note to declare 'result' in the output variables
        'result': data&#91;'data']&#91;'name'] 
    }
</code></pre>
<!-- /wp:code -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading" id="mathematical-calculations"><a href="https://docs.dify.ai/en/guides/workflow/node/code#mathematical-calculations">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#mathematical-calculations"></a>수학적 계산</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>워크플로에서 복잡한 수학 계산을 수행해야 할 때도 코드 노드를 사용할 수 있습니다. 예를 들어, 복잡한 수학 공식을 계산하거나 데이터에 대한 통계 분석을 수행하는 경우입니다. 다음은 배열의 분산을 계산하는 간단한 예입니다.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>def main(x: list) -&gt; dict:
    return {
        # Note to declare 'result' in the output variables
        'result': sum(&#91;(i - sum(x) / len(x)) ** 2 for i in x]) / len(x)
    }
</code></pre>
<!-- /wp:code -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading" id="data-concatenation"><a href="https://docs.dify.ai/en/guides/workflow/node/code#data-concatenation">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#data-concatenation"></a>데이터 연결</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>때로는 여러 지식 검색, 데이터 검색, API 호출 등 여러 데이터 소스를 연결해야 할 수 있습니다. 코드 노드를 사용하면 이러한 데이터 소스를 통합할 수 있습니다. 다음은 두 지식 베이스의 데이터를 병합하는 간단한 예입니다.</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>def main(knowledge1: list, knowledge2: list) -&gt; dict:
    return {
        # Note to declare 'result' in the output variables
        'result': knowledge1 + knowledge2
    }
</code></pre>
<!-- /wp:code -->

<!-- wp:heading -->
<h2 class="wp-block-heading" id="local-deployment"><a href="https://docs.dify.ai/en/guides/workflow/node/code#local-deployment">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#local-deployment"></a>로컬 배포</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>로컬 배포 사용자인 경우, 악성 코드가 실행되지 않도록 샌드박스 서비스를 시작해야 합니다. 이 서비스를 사용하려면 Docker가 필요합니다.  또한, 다음 <code>docker-compose</code> 방법을 통해 서비스를 직접 시작할 수도 있습니다 </p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>docker-compose -f docker-compose.middleware.yaml up -d
</code></pre>
<!-- /wp:code -->

<!-- wp:heading -->
<h2 class="wp-block-heading" id="security-policies"><a href="https://docs.dify.ai/en/guides/workflow/node/code#security-policies">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#security-policies"></a>보안 정책</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Python과 JavaScript 실행 환경은 모두 보안을 위해 엄격하게 격리(샌드박스)되어 있습니다. 즉, 개발자는 파일 시스템에 직접 접근하거나, 네트워크 요청을 하거나, 운영 체제 수준의 명령을 실행하는 등 많은 시스템 리소스를 소모하거나 보안 위험을 초래할 수 있는 함수를 사용할 수 없습니다. 이러한 제한을 통해 과도한 시스템 리소스 소모를 방지하면서 코드의 안전한 실행이 보장됩니다.</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading" id="advanced-features"><a href="https://docs.dify.ai/en/guides/workflow/node/code#advanced-features">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#advanced-features"></a>고급 기능</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><strong>실패 시 재시도</strong>노드에서 발생하는 일부 예외의 경우, 일반적으로 노드를 다시 시도하는 것으로 충분합니다. 오류 재시도 기능이 활성화되어 있으면 오류 발생 시 노드는 미리 설정된 전략에 따라 자동으로 재시도합니다. 최대 재시도 횟수와 각 재시도 간격을 조정하여 재시도 전략을 설정할 수 있습니다.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li>최대 재시도 횟수는 10회입니다.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>최대 재시도 간격은 5000ms입니다.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:image {"id":678,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://192.168.101.245/wp-content/uploads/2025/09/image-15-1024x810.png" alt="" class="wp-image-678"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p><strong>오류 처리</strong>정보를 처리할 때 코드 노드에서 코드 실행 예외가 발생할 수 있습니다. 개발자는 다음 단계에 따라 실패 분기를 구성하여 노드에서 예외 발생 시 비상 계획을 실행하고 워크플로 중단을 방지할 수 있습니다.</p>
<!-- /wp:paragraph -->

<!-- wp:list {"ordered":true} -->
<ol class="wp-block-list"><!-- wp:list-item -->
<li>코드 노드에서 “오류 처리”를 활성화합니다.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li>오류 처리 전략 선택 및 구성</li>
<!-- /wp:list-item --></ol>
<!-- /wp:list -->

<!-- wp:image {"id":679,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://192.168.101.245/wp-content/uploads/2025/09/image-16-1024x663.png" alt="" class="wp-image-679"/></figure>
<!-- /wp:image -->

<!-- wp:heading {"level":3} -->
<h3 class="wp-block-heading" id="faq"><a href="https://docs.dify.ai/en/guides/workflow/node/code#faq">​</a><a href="https://docs.dify.ai/en/guides/workflow/node/code#faq"></a>자주 묻는 질문</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><strong>왜 코드 노드에 코드를 저장할 수 없나요?</strong></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>코드에 잠재적으로 위험한 동작이 포함되어 있는지 확인하세요. </p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>def main() -&gt; dict:
    return {
        "result": open("/etc/passwd").read(),
    }
</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>이 코드 조각에는 다음과 같은 문제가 있습니다.</p>
<!-- /wp:paragraph -->

<!-- wp:list -->
<ul class="wp-block-list"><!-- wp:list-item -->
<li><strong>승인되지 않은 파일 접근:</strong>&nbsp;이 코드는 Unix/Linux 시스템의 중요한 시스템 파일인 “/etc/passwd” 파일을 읽으려고 시도합니다. 이 파일은 사용자 계정 정보를 저장합니다.</li>
<!-- /wp:list-item -->

<!-- wp:list-item -->
<li><strong>민감한 정보 공개:</strong>&nbsp;“/etc/passwd” 파일에는 사용자 이름, 사용자 ID, 그룹 ID, 홈 디렉터리 경로 등 시스템 사용자에 대한 중요한 정보가 포함되어 있습니다. 직접 액세스하면 정보 유출이 발생할 수 있습니다.</li>
<!-- /wp:list-item --></ul>
<!-- /wp:list -->

<!-- wp:paragraph -->
<p>위험한 코드는 Cloudflare WAF에 의해 자동으로 차단됩니다. 브라우저의 “웹 개발자 도구”에서 “네트워크” 탭을 확인하여 차단 여부를 확인할 수 있습니다.</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":680,"sizeSlug":"large","linkDestination":"none"} -->
<figure class="wp-block-image size-large"><img src="http://192.168.101.245/wp-content/uploads/2025/09/image-17-1024x256.png" alt="" class="wp-image-680"/></figure>
<!-- /wp:image -->