콘텐츠로 이동

프로젝트 시스템 활용 (Working with the Project System)

Griptape Nodes의 프로젝트 시스템은 워크플로우 실행 중에 생성되는 파일과 에셋의 저장 위치, 경로 템플릿, 매크로 및 상황(Situations)을 체계적으로 관리합니다.

핵심 개념

  • 상황 (Situations): 파일이 저장되는 목적별 디렉토리 범주입니다(예: outputs, inputs, temp, cache).
  • 매크로 (Macros): 파일 이름이나 경로에 동적 정보를 주입하는 템플릿 변수입니다(예: {date}, {time}, {workflow_name}, {node_name}, {count}).
  • ProjectFileParameter: 프로젝트 시스템과 연동되어 파일 경로를 선택하고 생성하는 특수 파라미터입니다.

파일 저장 시 ProjectFileParameter 사용하기

노드에서 파일을 생성하거나 저장할 때 하드코딩된 경로 대신 ProjectFileParameter를 사용하면 프로젝트 설정에 정의된 디렉토리 구조와 이름 지정 규칙을 자동으로 따르게 됩니다.

from griptape_nodes.exe_types.core_types import Parameter, ParameterMode
from griptape_nodes.exe_types.node_types import ControlNode


class SaveReportNode(ControlNode):
    def __init__(self, **kwargs) -> None:
        super().__init__(**kwargs)
        self.category = "Reporting"
        self.description = "보고서 파일을 프로젝트 출력 디렉토리에 저장합니다."

        self.add_parameter(
            Parameter(
                name="content",
                type="str",
                input_types=["str"],
                tooltip="저장할 텍스트 내용",
            )
        )

        self.add_parameter(
            Parameter(
                name="output_file",
                type="file_path",
                default_value="{outputs}/reports/{date}_{workflow_name}_report.txt",
                tooltip="저장 대상 파일 경로 템플릿",
            )
        )

    def process(self) -> None:
        content = self.get_parameter_value("content")
        file_path = self.get_parameter_value("output_file")

        # 실제 경로 해결 및 디렉토리 생성
        resolved_path = self.resolve_project_path(file_path)
        resolved_path.parent.mkdir(parents=True, exist_ok=True)

        with open(resolved_path, "w", encoding="utf-8") as f:
            f.write(content)

        self.parameter_output_values["output_file"] = str(resolved_path)

주요 매크로 목록

매크로 설명 예시
{outputs} 기본 출력 디렉토리 경로 /workspace/outputs
{inputs} 기본 입력 디렉토리 경로 /workspace/inputs
{date} 현재 날짜 (YYYY-MM-DD) 2026-09-17
{time} 현재 시간 (HH-MM-SS) 14-30-00
{workflow_name} 현재 워크플로우 이름 my_workflow
{node_name} 현재 노드 이름 SaveReport
{count} 순차 증가 번호 카운터 0001