Get Started

코드 노드 사용하기 (Python)

코드 노드 사용하기 (Python)

코드 노드 사용하기 (Python)

노드 사용법 익히기 - 파이썬(Python) 노드

이 튜토리얼에서는 에이전트리아(Agentria) 의 파이썬(Python) 노드 사용법을 안내합니다. 파이썬 노드는 직접 코드를 작성해 데이터를 가공하는 것은 물론, 함수 핀(Function-Pin) 을 통해 다른 노드를 함수처럼 호출할 수 있습니다. 이를 통해 파이썬 코드 안에서 AI 노드를 원하는 시점에 호출하고, 그 결과를 다시 파이썬 로직으로 처리하는 유연한 워크플로를 구성할 수 있습니다.

이 튜토리얼에서는 고객 리뷰 텍스트를 입력받아, 파이썬 노드가 전처리를 수행한 뒤 LLM 노드를 함수로 호출하여 감정을 분류하고 맞춤 답장 초안을 생성하는 워크플로를 완성합니다.

사전 준비

에이전트리아 캔버스 진입 방법은 🔗3단계 핵심 가이드를 참고하시기 바랍니다.

이 튜토리얼을 완료하면 다음을 수행할 수 있습니다.

  1. 파이썬 노드의 함수 핀(Function-Pin)을 이해하고 LLM 노드에 연결할 수 있습니다.

  2. 파이썬 코드에서 await 함수() 구문으로 LLM 노드를 함수로 호출할 수 있습니다.

  3. LLM 노드의 시스템 프롬프트와 입력 변수를 설정할 수 있습니다.

  4. 디버그 로그로 파이썬 코드 오류를 확인할 수 있습니다.

워크플로 개요

전체 흐름: 시작 노드파이썬 노드종료 노드




이 튜토리얼의 핵심은 파이썬 노드의 함수 핀입니다.

파이썬 노드 하단의 파란색 함수 핀(Function-Pin) 을 LLM 노드의 인핀(In-Pin)에 드래그하여 연결하면, LLM 노드가 함수 노드로 전환됩니다. 함수 노드로 전환된 LLM 노드는 메인 워크플로 흐름에 포함되지 않으며, 파이썬 코드가 await 함수() 구문으로 호출할 때만 실행됩니다. 이를 통해 AI 호출 시점과 전달 인수를 파이썬 로직으로 직접 제어할 수 있습니다.

1단계: 어빌리티 생성

에이전트리아 캔버스에서 새 어빌리티(Ability)를 생성합니다.

캔버스에 +노드 추가(Add Node) 버튼으로 파이썬(Python) 노드와 LLM 노드를 추가합니다. 파이썬 노드 이름을 Processing, LLM 노드 이름을 Review Analyzer로 변경합니다.

파이썬 노드 하단의 파란색 함수 핀 을 드래그하여 Review Analyzer 노드의 인핀에 연결합니다. "함수 노드로 변환하겠습니까?" 모달이 표시되면 확인을 클릭합니다.

함수 핀은 파이썬 노드 하단의 파란색 핀입니다. 일반 연결에 사용하는 흰색 아웃핀(Out-Pin)과 구분하시기 바랍니다.

2단계: 인풋 변수 선언

시작 노드를 더블 클릭하여 노드 편집기(Node Editor)를 엽니다.

아래와 같이 인풋 변수를 선언합니다.

항목

자료형

String (문자열)

이름

reviewText

설명

고객 리뷰 텍스트

변수 선언을 완료한 뒤 캔버스로 돌아옵니다.

3단계: 파이썬 노드 설정

Processing 노드를 더블 클릭하여 노드 편집기를 엽니다.

파이썬 노드에는 AI 코드 생성기가 내장되어 있습니다. 코드 생성기 아이콘을 클릭하면 원하는 동작을 프롬프트로 입력해 코드를 자동 생성할 수 있습니다. 생성된 코드는 승인(Accept) 버튼으로 적용합니다.

코드 입력창에 아래 스크립트를 작성합니다. reviewText 변수와 함수 핀 참조는 좌측 인풋 영역에서 드래그 앤 드롭으로 코드 안에 삽입합니다.

review_text = {{reviewText@1}}

# 빈 입력 처리
if not review_text or not review_text.strip():
    return {"output": ""}

# LLM 노드를 함수로 호출
result = await {%new_bedrock_anthropic_l_l_m_node@6%}(
    reviewText=review_text
)

output = result.get("output", "").strip()
return {"output": output}
review_text = {{reviewText@1}}

# 빈 입력 처리
if not review_text or not review_text.strip():
    return {"output": ""}

# LLM 노드를 함수로 호출
result = await {%new_bedrock_anthropic_l_l_m_node@6%}(
    reviewText=review_text
)

output = result.get("output", "").strip()
return {"output": output}
review_text = {{reviewText@1}}

# 빈 입력 처리
if not review_text or not review_text.strip():
    return {"output": ""}

# LLM 노드를 함수로 호출
result = await {%new_bedrock_anthropic_l_l_m_node@6%}(
    reviewText=review_text
)

output = result.get("output", "").strip()
return {"output": output}

4단계: LLM 함수 노드 — 입력 변수 설정

Review Analyzer 노드를 더블 클릭하여 노드 편집기를 엽니다.

좌측 인풋 영역의 입력 편집 버튼을 클릭합니다. 여기서 추가하는 변수가 파이썬 코드에서 함수 호출 시 전달하는 인수(argument)와 연결됩니다. 시작 노드에서 선언한 인풋 변수와 동일하게 설정합니다.

변수명

자료형

reviewText

String

파이썬 코드에서 await 함수(reviewText=review_text) 와 같이 호출할 때, reviewText= 는 여기서 선언한 변수명과 일치해야 합니다.

5단계: LLM 함수 노드 — 프롬프트 설정

시스템 프롬프트 설정

시스템 프롬프트(System Prompt) 입력란에 아래 내용을 입력합니다.

당신은 고객 리뷰를 분석하는 전문가입니다.
입력된 리뷰를 읽고 아래 형식으로만 응답하세요.

감정: [긍정 / 부정 / 중립]
답장 초안: [고객에게 보낼 맞춤 답장]

당신은 고객 리뷰를 분석하는 전문가입니다.
입력된 리뷰를 읽고 아래 형식으로만 응답하세요.

감정: [긍정 / 부정 / 중립]
답장 초안: [고객에게 보낼 맞춤 답장]

당신은 고객 리뷰를 분석하는 전문가입니다.
입력된 리뷰를 읽고 아래 형식으로만 응답하세요.

감정: [긍정 / 부정 / 중립]
답장 초안: [고객에게 보낼 맞춤 답장]

유저 프롬프트 설정

유저 프롬프트(User Prompt) 입력란에, 좌측 인풋 영역의 reviewText 어댑터 변수를 드래그 앤 드롭으로 가져옵니다.

6단계: 종료 노드 설정

캔버스로 돌아와 메인 흐름의 엣지를 연결합니다.

  1. 시작 노드의 아웃핀 → Processing 노드의 인핀

  2. Processing 노드의 아웃핀 → 종료 노드의 인핀

Review Analyzer 노드는 함수 노드이므로 메인 흐름 엣지에 연결하지 않습니다.

종료 노드를 더블 클릭하여 노드 편집기를 엽니다. 아웃풋 영역(Output Section)에 아래 변수를 추가합니다.

변수명

자료형

result

String

Processing 노드의 아웃풋 output 변수를 드래그 앤 드롭으로 종료 노드의 result에 바인딩합니다.

7단계: 런테스트

캔버스 오른쪽 하단의 테스트 실행(RUN TEST) 버튼을 클릭합니다.

reviewText 입력란에 테스트할 리뷰 텍스트를 입력하고 실행합니다.

입력 예시

출력 예시




8단계: 디버그 로그 확인

파이썬 노드에서 코드 오류가 발생한 경우, 디버그 로그(Debug Log) 에서 오류가 발생한 코드 위치와 내용을 확인할 수 있습니다. 오류 메시지를 참고하여 코드를 수정한 뒤 다시 테스트합니다.

다음 단계

🎉 축하합니다! 에이전트리아를 사용해 '고객 리뷰 감정 분류 및 답장 초안 생성' 워크플로를 완성했습니다.

시스템 프롬프트를 수정하여 다양한 산업과 상황에 맞는 답장 스타일을 적용하거나, 파이썬 코드에 추가 전처리 로직을 더해 워크플로를 확장할 수 있습니다.

에이전트리아는 아이디어를 현실로 바꾸는 가능성의 공간입니다.

당신의 상상력으로 워크플로는 무한히 확장될 수 있습니다.



사용할 수 없는 함수

차단/제한 항목

이유

import

임의 모듈 로드 방지

exec()

동적 코드 실행 방지

eval()

동적 표현식 평가 방지

exit(), quit()

프로세스 종료 방지

globals(), locals()

내부 컨텍스트 노출 방지

open()

파일 시스템 접근 방지

__context__, __deco__, __params__

내부 변수 접근 방지

asyncio.create_subprocess_exec()

외부 명령어 실행 방지

asyncio.create_subprocess_shell()

쉘 명령어 실행 방지

asyncio.subprocess

subprocess 모듈 접근 방지

사용 가능한 라이브러리

사용 가능한 모듈

용도

re

정규식

json, orjson

JSON 처리

math

수학 연산

datetime, time

날짜/시간

collections, itertools, functools

자료구조, 반복, 함수형 유틸

base64

인코딩/디코딩

ast

코드 파싱

typing, pydantic

타입 관련

pd (pandas), np (numpy)

데이터 분석

tiktoken

토큰 카운팅

asyncio (제한적)

비동기 처리 (subprocess 계열 제외)

mecab

형태소 분석

helpers

내장 헬퍼 함수

Helpers (파일 처리 유틸)

코드 노드에서는 파일 처리 및 데이터 변환을 위해 helpers 유틸리티 함수를 사용할 수 있습니다.

자세한 사용법은 🔗Helpers 페이지의 가이드를 확인하시길 바랍니다.