본문으로 건너뛰기
버전: v0.1.0

노드 추가 및 연결

워크플로우를 구성하는 노드를 추가하고 데이터 흐름을 연결하는 방법을 설명합니다.

노드 추가 방법

1. 퀵 추가 (Quick Add)

[Screenshot] 노드 추가 (Quick Add 패널)

노드 추가

왼쪽 패널의 Quick Add 섹션에서 원하는 유형의 노드를 캔버스로 드래그 앤 드롭합니다.

2. 컬렉션에서 가져오기

왼쪽 패널의 Collections 트리에서 이미 만들어둔 데이터셋이나 코드를 찾아 드래그 앤 드롭합니다. 재사용성을 높이는 가장 좋은 방법입니다.

3. 컨텍스트 메뉴

캔버스 빈 공간을 우클릭하여 메뉴를 열고, Add Dataset 또는 Add Code를 선택합니다.

노드 위에서 우클릭하면 다음 옵션을 사용할 수 있습니다:

메뉴 항목설명
Edit Node노드 편집 (Inspector 열기)
Duplicate Node노드 복제
Add Result DatasetAI가 자동으로 출력 데이터셋 노드를 생성하여 연결
Save As참조 중인 코드 노드를 편집하면 현재 파이프라인 전용 복사본으로 분기 저장 (아래 참조)
Delete Node노드 삭제

코드 노드 참조와 Save-As 모델

코드 노드는 컬렉션에 저장된 공용 코드 자산을 파이프라인에서 참조하는 방식으로 동작합니다. 동일한 코드를 여러 파이프라인에서 재사용할 수 있으며, 편집 시에는 다음 Save-As 규칙이 적용됩니다(ADR-0006).

  1. 파이프라인에서 참조 코드 노드를 연 뒤 내용을 수정하면, 화면 상단에 읽기 전용 경고와 함께 Save As 버튼이 표시됩니다.
  2. Save As를 누르면 현재 파이프라인 안쪽에 동일한 로직의 복사본 코드 노드가 생성되고, 이후 편집은 이 복사본에만 영향을 줍니다.
  3. 원본 코드 자산은 그대로 유지되어 다른 파이프라인에 영향을 주지 않습니다.

이 모델은 이전의 "Reference + Fork-on-Edit" 방식을 대체합니다. 즉, 자동 분기를 만들지 않고 사용자가 명시적으로 분기 시점을 결정합니다.

4. 키보드 단축키

빠른 작업을 위해 다음 단축키를 사용할 수 있습니다.

  • 데이터셋 노드 추가: Ctrl(Cmd) + Shift + D
  • 코드 노드 추가: Ctrl(Cmd) + Shift + C

노드 유형

데이터셋 노드 (Dataset Node)

데이터의 소스(Source) 또는 싱크(Sink) 역할을 합니다. 데이터셋의 서브타입(type)에 따라 노드가 자동으로 적절한 어댑터를 사용합니다.

서브타입설명용도
deltaDelta Lake 테이블배치 데이터 처리, 버전 관리
kafkaKafka 토픽실시간 스트리밍 데이터
restHTTP 엔드포인트외부 API 호출
object파일/객체 스토리지비정형 파일 입출력

Delta Lake 노드 설정

  • 테이블 이름: Delta Lake 테이블 경로
  • 스키마: 컬럼 정의 (자동 추론 가능)
  • 파티션 키: 데이터 분할 기준 컬럼
  • 쓰기 모드: Append, Overwrite, Merge

Kafka 노드 설정

  • 토픽: Kafka 토픽 이름
  • 브로커: Kafka 브로커 주소
  • 직렬화 포맷: JSON, Avro, Protobuf
  • Consumer Group: (소스 노드인 경우)

코드 노드 (Code Node)

데이터를 변환하거나 처리하는 로직을 수행합니다.

타입언어용도
PythonPython 3.x범용 데이터 처리, ML 모델 적용
SQLSQL데이터 변환, 집계, 조인

Python 노드 설정

  • 스크립트: Python 코드 작성
  • 패키지 의존성: 필요한 pip 패키지 목록
  • 입력 변수: 입력 데이터셋 매핑
  • 출력 변수: 출력 데이터셋 매핑
import pandas as pd

df = input_dataset.read()

df['total'] = df['price'] * df['quantity']
df = df[df['total'] > 1000]

output_dataset.write(df)

SQL 노드 설정

  • 쿼리: SQL 쿼리 작성
  • 입력 테이블 별칭: 입력 데이터셋을 테이블로 참조
  • 출력 스키마: 결과 스키마 정의
SELECT 
category,
SUM(amount) as total_amount,
COUNT(*) as order_count
FROM orders
WHERE order_date >= '2024-01-01'
GROUP BY category
ORDER BY total_amount DESC

Entity / Relation 노드 (온톨로지 자원)

온톨로지로 정의된 EntityTypeRelationType도 step의 입출력으로 사용할 수 있습니다(ADR-0059 / Manager ADR-0059).

스크린샷 TODO

캔버스에 Entity / Relation 노드가 배치된 상태. Inspector에 Identity Keys / Display Column / backing dataset 링크가 보여야 합니다. PK 누락 경고도 함께 보여주면 좋습니다.

  • PK 필수: 엔티티/관계는 Identity Keys(PK)가 정의되어 있어야 합니다. PK가 비어 있으면 편집기에 노란 경고가 표시되고, 실행 시 페이로드 생성이 거부됩니다.
  • backing dataset 자동 매핑: 노드는 EntityType/RelationType이 가리키는 backing dataset에 자동으로 연결됩니다. Inspector의 Schema 탭에서 매핑된 컬럼·키를 확인할 수 있습니다.
  • Display Column: UI 표면에서 인스턴스를 1차 라벨로 식별할 컬럼. 파이프라인 실행 로그·인스펙터 미리보기에서도 사용됩니다.

HITL 노드 (Human-in-the-Loop)

워크플로우 중간에 사람의 승인을 받아야 하는 단계입니다. 실행이 HITL 노드에 도달하면, 미리 지정된 채팅 표면(예: Knowledge Chat, Agent Chat)에 승인 요청이 게시되고 응답을 받기 전까지 다음 단계로 진행하지 않습니다(ADR-0035 / ADR-0038).

스크린샷 TODO

HITL 노드가 캔버스에 배치되고, Inspector에서 승인 표면·승인자 그룹·승인 요청 페이로드 스키마를 설정하는 화면.

  • 승인 표면: 어느 채팅 표면(에이전트 채팅, 지식 채팅 등)으로 승인 요청을 보낼지 지정합니다.
  • 승인자 그룹: 승인할 수 있는 사용자/그룹.
  • 승인 페이로드 스키마: 채팅에 함께 노출될 입력 페이로드의 스키마. 승인자가 맥락을 파악하는 데 사용됩니다.
  • 타임아웃 / 거부 처리: 일정 시간 내 응답이 없거나 거부되면 파이프라인은 실패 상태로 마감되고 트레이스가 기록됩니다.

노드 연결

데이터의 흐름을 정의하기 위해 노드들을 연결합니다.

  1. 선행 노드(Upstream)의 오른쪽 핸들(Output)에 마우스를 가져갑니다.
  2. 클릭 후 드래그하여 후행 노드(Downstream)의 왼쪽 핸들(Input)에 놓습니다.
  3. 연결선(Edge)이 생성되며 데이터 의존성이 설정됩니다.

연결 규칙

  • 데이터셋 / Entity / Relation 노드 → 코드 노드: 데이터 읽기 (소스)
  • 코드 노드 → 데이터셋 / Entity / Relation 노드: 데이터 쓰기 (싱크)
  • 코드 노드 → 코드 노드: 중간 결과 전달
  • 임의 노드 → HITL 노드 → 임의 노드: 사람 승인 게이트
자동 매핑

코드 노드와 데이터셋 노드를 연결하면, 코드 내의 입출력 변수가 데이터셋 ID와 자동으로 매핑될 수 있습니다. (Inspector의 Options 탭에서 확인 가능)

노드 관리

  • 이동: 노드를 드래그하여 위치를 변경합니다.
  • 복제: 노드를 선택하고 우클릭 메뉴의 Duplicate Node를 선택하거나 Ctrl+D를 사용합니다.
  • 삭제: 노드를 선택하고 Delete 키를 누르거나 우클릭 메뉴의 Delete Node를 선택합니다.
  • 자동 정렬: 툴바의 Auto Layout 드롭다운에서 6가지 레이아웃 알고리즘을 선택할 수 있습니다:
레이아웃설명
LRLeft-to-Right (좌→우 방향)
TBTop-to-Bottom (상→하 방향)
DAG방향성 비순환 그래프 레이아웃
Force힘 기반 자동 정렬
Circular원형 배치
Grid격자형 배치
  • 그룹 선택: Shift + 드래그로 여러 노드를 한 번에 선택합니다.