← 노드 한 장 전체#57 · Call n8n Workflow Tool

Call n8n Workflow Tool

할인 계산은 서브에 맡기고 AI는 결과 받기

이 글은 이런 분께AI Agent의 요청을 본인 계산 서브 워크플로우로 넘기고 실제 호출·입력·결과까지 검증하고 싶은 분
Call n8n Workflow Tool 영상 표지

1분 영상은 @workflow.hanjang 에 순서대로 공개돼요

JSON 받기 ①JSON 받기 ②

할인 계산은 서브에 맡기고, AI는 결과 받기.

노드 한 장 #57 · Call n8n Workflow Tool

먼저 결과부터

Agent가 Call n8n Workflow Tool로 샘플 숫자 50000·10·3을 실제 서브에 전달했어요. child Code가 135000원을 계산했고 Tool 반환값과 AI 최종 답도 같았어요. parent #74870·child #74871의 입력·출력·양방향 실행 링크를 대조했어요. 최초 미게시 child 호출 #74867은 실패했고 child 실행 0개였음을 숨기지 않았어요. 이 새 계산 child만 잠깐 활성화해 검증한 뒤 부모·child 모두 inactive로 복구했어요. 재현하려면 두 JSON을 가져와 본인 서브 ID를 연결해야 해요.
우리가 실제로 돌린 기록 · 실행 #74870·#74871 · 2026-10-30
Call n8n Workflow Tool 실제 n8n 화면 1
우리가 실제로 돌린 n8n 화면 (실행 #74870·#74871, 2026-10-30)

따라 하기

실제로 실행한 워크플로우를 바탕으로 정리했어요. 계정·식별자는 공개용 값으로 치환했고, 그 밖의 차이는 아래 주의사항에 표시했어요. n8n 캔버스에서 +를 눌러 노드를 순서대로 추가하고 같은 값을 넣으면 돼요. 빨간 제목이 이번 편의 주인공 노드예요. 표 왼쪽은 n8n 편집기에 보이는 칸 이름, 오른쪽은 다운로드 JSON의 설정값이에요. 직접 입력하기 번거로우면 JSON을 받아 ⋯ → Import from File로 가져오세요.

워크플로우 1 · [노드 한 장] Call n8n Workflow Tool · 호출하는 AI

Step 1. Manual Trigger 노드 추가이름: Run manually

설정 없이 그대로 추가해요.

Step 2. Code 노드 추가이름: Self-written sample order

JavaScriptreturn [{json:{sample:true,question:'샘플 상품 단가 50000원, 할인율 10퍼센트, 수량 3개입니다. 계산 도구를 호출해서 할인 후 총액을 알려 주세요.'}}];

Step 3. AI Agent 노드 추가이름: AI Agent calls calculation tool

Source for Prompt (User Message)Define below
Prompt (User Message){{ $json.question }}
Options › System Message
당신은 샘플 주문 계산을 요청하는 실습 도우미입니다. 반드시 CalculateDiscountTool을 실제 한 번 호출해 입력 숫자를 전달하고, 도구가 반환한 total을 그대로 사용해 한국어로 답하세요. 직접 암산하거나 도구 결과 없이 수치를 추측하지 마세요. 도구 결과가 없거나 오류면 계산을 완료하지 못했다고 말하세요. 최종 답에는 샘플이며 서브 워크플로우 계산 결과라고 명시하세요.
Options › Max Iterations3
Options › Return Intermediate Steps켜짐

Step 4. Call n8n Workflow Tool 노드 추가이름: Call n8n Workflow Tool

NameCalculateDiscountTool
Description
Call the owned sample sub-workflow to calculate the discounted order total. Pass the user-provided unitPrice, discountPercent and quantity as numbers. The child Code performs the arithmetic.
SourceDatabase
WorkflowYOUR_SUB_WORKFLOW_ID
Workflow Inputs › Mapping Column ModeMap Each Column Manually
Workflow Inputs › unitPrice{{ $fromAI('unitPrice', '상품 단가 숫자', 'number') }}
Workflow Inputs › discountPercent{{ $fromAI('discountPercent', '할인율 퍼센트 숫자', 'number') }}
Workflow Inputs › quantity{{ $fromAI('quantity', '상품 수량 정수', 'number') }}

Step 5. OpenAI Chat Model 노드 추가이름: OpenAI Chat Model

Modelgpt-4.1-mini
Use Responses API꺼짐
Options › Sampling Temperature0
Options › Maximum Number of Tokens250

워크플로우 2 · [노드 한 장] Workflow Tool 계산하는 서브 · 샘플 할인합계

Step 6. When Executed by Another Workflow 노드 추가이름: When called by another workflow

Input data modeDefine using fields below
Values 1 › NameunitPrice
Values 1 › TypeNumber
Values 2 › NamediscountPercent
Values 2 › TypeNumber
Values 3 › Namequantity
Values 3 › TypeNumber

Step 7. Code 노드 추가이름: Calculate sample total in Code

JavaScript
const x=$input.first().json; const unitPrice=Number(x.unitPrice), discountPercent=Number(x.discountPercent), quantity=Number(x.quantity); if(![unitPrice,discountPercent,quantity].every(Number.isFinite)||unitPrice<0||discountPercent<0||discountPercent>100||!Number.isInteger(quantity)||quantity<1)throw new Error('Invalid sample input'); const netUnitPrice=unitPrice*(1-discountPercent/100); return [{json:{sample:true,unitPrice,discountPercent,quantity,netUnitPrice,total:netUnitPrice*quantity,currency:'KRW',calculatedBy:'child Code'}}];

가져와서 쓸 때 확인할 것

노드의 모든 옵션은 n8n 공식 문서에서 볼 수 있어요.