워크플로를 생성한 후에는 실제 운영에 적용하기 전에 철저하게 테스트하는 것이 중요합니다. Dify는 문제 해결, 변수 흐름 추적, 자세한 실행 로그 검토를 모두 한곳에서 수행할 수 있는 완벽한 디버깅 도구 세트를 제공합니다.Dify는 문제를 빠르게 찾고, 가변 변속기를 검사하고, 자세한 로그를 보는 데 도움이 되는 포괄적인 디버깅 툴셋을 제공합니다.이 문서에서는 단일 노드 디버깅, 변수 검사, 실행 기록, 종단 간 테스트를 포함한 전체 워크플로 디버깅 프로세스를 소개합니다.
디버그 노드 #
페이지 복사
워크플로우 또는 챗플로우 애플리케이션은 여러 개의 상호 연결된 노드로 구성됩니다. 모든 것이 의도한 대로 작동하는지 확인하려면, 실제 서비스를 시작하기 전에 각 노드가 입력을 처리하고 출력을 생성하는 방식을 테스트하는 것이 중요합니다.단계별 실행 기능을 사용하면 애플리케이션의 동작을 단계별로 검증하여 잠재적인 문제를 조기에 포착할 수 있으므로 게시 전에 오류를 방지하는 데 도움이 됩니다.노드 디버깅에는 단일 단계 실행과 단계별 실행의 두 가지 유형이 있습니다.
단일 단계 실행 #
개요 #
단일 단계 실행을 사용하면 전체 워크플로를 실행하지 않고도 특정 노드를 개별적으로 테스트할 수 있습니다. 새 노드 검증, 개별 노드 오류 해결 또는 다양한 입력에 대한 응답 테스트에 유용합니다.
사용 방법 #
- 워크플로 편집기에서 디버깅할 노드를 선택하세요
- 노드 설정 패널에서 테스트 입력 변수 제공
- 실행을 클릭하여 노드를 실행합니다.
- 출력을 검토하고 결과가 예상대로인지 확인하세요.
예 #
HTTP 노드를 추가했다고 가정해 보겠습니다. API 응답을 올바르게 가져오고 처리하는지 확인하려면 단일 단계 실행을 사용하여 실제 조건을 시뮬레이션하고 다운스트림 노드로 데이터를 올바르게 전달하는지 확인할 수 있습니다.디버깅 후 “마지막 실행”을 클릭하여 실행 상태를 확인하고, 입력/출력을 확인하고, 메타데이터를 검사할 수 있습니다. 오류가 발생하면 메시지를 통해 문제를 찾아 해결하여 전체 워크플로우 실패를 방지할 수 있습니다.
Answer 및 End 노드는 단일 단계 실행을 지원하지 않습니다.
단계별 실행 #
개요 #
워크플로 실행은 노드 간의 적절한 데이터 흐름에 의존합니다. 복잡한 워크플로에서는 다음과 같은 이유로 이 프로세스가 실패하기 쉽습니다.
- 데이터 형식 불일치(예: 숫자 입력에 전달된 텍스트)
- 잘못 구성된 변수
- JSON 구문 분석 실패
- 잘못된 변수 경로 참조
단계별 실행은 개발자가 다중 노드 워크플로의 오류를 해결하는 데 도움이 됩니다.이 과정에서 노드 출력 변수는 변수 검사기 에 캐시됩니다 . 업스트림 변수를 직접 편집하여 다운스트림 노드가 다양한 데이터 값에 어떻게 반응하는지 테스트할 수 있습니다.이 방법은 워크플로에 서로의 출력에 의존하는 노드가 포함되어 있을 때 특히 유용합니다. 전체 체인을 다시 실행하는 대신, 캐시된 변수를 편집하여 다양한 시나리오를 빠르게 시뮬레이션할 수 있습니다.노드를 실행한 후 출력은 변수 검사기에 저장됩니다. 이 도구를 사용하여 다음 작업을 수행할 수 있습니다.
- 실제 데이터 보기 : 출력이 기대치를 충족하는지 확인하세요
- 테스트 데이터 편집 : 다운스트림 동작을 테스트하기 위해 변수 값을 수정합니다.
- 데이터 흐름 검증 : 노드 간에 값이 올바르게 전달되는지 확인
사용 방법 #
- 워크플로에서 단일 노드 실행
- 하단의 변수 검사기를 엽니다.
- 노드를 찾아 참조하는 변수를 확인하세요.
- 해당 변수 값을 수정하고 노드를 다시 실행하세요.
- 결과를 비교하고 영향을 평가합니다
예 #
워크플로가 다음 단계로 구성되어 있다고 가정해 보겠습니다. 데이터 가져오기(노드 A) → 데이터 처리(노드 B) → 결과 표시(노드 C).노드 B는 노드 A의 출력에 전적으로 의존하며, 다른 입력은 노드 B의 동작을 변경합니다.노드 A를 실행하면 출력이 변수 검사기에 캐시됩니다. 해당 데이터를 직접 수정하여 노드 A를 다시 실행할 필요 없이 노드 B를 다시 실행할 수 있습니다.이 접근 방식을 사용하면 지역화된 동작을 관찰하고 노드 설정, 데이터 흐름 및 논리를 시기적절하게 조정하여 전반적인 워크플로 안정성과 정확성을 개선할 수 있습니다.
노드 실행 기록 보기 #
노드가 실행될 때마다 레코드가 생성됩니다. 노드 세부 정보 패널에서 “마지막 실행”을 클릭하면 레코드를 확인할 수 있습니다.
기록 및 로그 #
페이지 복사
Chatflow 또는 Workflow를 디버깅할 때 Dify는 실행 레벨과 개별 노드 모두에 대한 자세한 로그를 자동으로 기록합니다. 이러한 로그를 통해 문제를 쉽게 파악하고, 워크플로를 통한 데이터 흐름을 이해하고, 성능을 미세 조정할 수 있습니다.
애플리케이션이 게시된 후 실제 사용자의 로그를 살펴보려면 로그 및 주석을 확인하세요 .
애플리케이션의 실행 기록에는 두 가지 차원이 있습니다.
애플리케이션 실행 내역 #
애플리케이션이 실행될 때마다 실행 기록이 기록됩니다. 각 실행은 버전이 관리되며, 애플리케이션의 대화 로그 와 해당 버전의 모든 노드에 대한 추적 로그가 포함됩니다 . 이러한 로그는 시간순으로 표시되며 실행 시간, 상태, 입출력 매개변수 요약을 포함한 각 상호작용에 대한 기본 정보를 제공합니다.자세한 실행 보기를 보려면 로그 항목을 클릭하세요. 각 실행은 세 가지 주요 섹션으로 구성됩니다.
결과 #
결과 섹션은 Workflow 애플리케이션에서만 사용할 수 있습니다.
이 섹션에는 워크플로의 최종 출력 결과, 즉 사용자에게 표시되는 콘텐츠가 표시됩니다. 워크플로 실행에 실패한 경우, 이 섹션에는 오류 메시지와 그 이유가 표시됩니다.
세부 사항 #
이 섹션에는 실행에서 얻은 포괄적인 입력 매개변수, 메타데이터 및 구성 컨텍스트가 포함되어 있습니다. 다음을 검사할 수 있습니다.
- 사용자가 제공한 원래 입력
- 응용 프로그램에서 생성된 출력
- 시스템 생성 메타데이터
트레이싱 #
이 뷰는 실행 경로와 시스템 동작에 대한 심층적인 가시성을 제공합니다. 여기에는 다음이 포함됩니다.
- 노드 실행 순서 : 워크플로의 각 노드의 실제 런타임 순서입니다.
- 데이터 흐름 추적 : 노드 간에 변수가 어떻게 전달되고 변환되는지 확인합니다. 변수 검사기를 통해서도 확인할 수 있습니다 .
- 실행 시간 분석 : 각 노드에서 소요된 시간은 성능 병목 현상을 식별하는 데 도움이 됩니다.
- 리소스 사용 : 토큰 소비, API 호출, 비용 관련 데이터.
- 오류 추적 : 어떤 노드가 실패했는지, 그 이유가 무엇인지 정확하게 파악합니다.
추적 뷰는 복잡한 워크플로우를 디버깅하고 성능을 최적화하는 데 특히 유용합니다. 워크플로우에 분기나 루프가 포함된 경우, 이 뷰는 실행 중 실제 경로를 파악하는 데 도움이 됩니다.
노드 실행 로그 #
애플리케이션 수준 로그 외에도 워크플로 편집기에서 각 노드의 마지막 실행 로그를 직접 확인할 수 있습니다. 노드의 구성 패널에서 ‘마지막 실행’을 클릭하면 입력/출력 데이터를 포함한 최근 실행 세부 정보를 볼 수 있습니다.
변수 검사 #
페이지 복사
변수 검사는 워크플로 편집기 하단에 있는 패널입니다. 실행 후 각 노드의 입력 및 출력 데이터를 캡처하여 개발자가 문제를 신속하게 파악하고 워크플로 전체의 데이터 흐름을 검증할 수 있도록 도와줍니다.
왜 중요한가 #
변수는 노드 간의 핵심 연결 고리 역할을 하며 동적 흐름 제어를 가능하게 합니다. 워크플로 애플리케이션에서 변수는 사용자 입력뿐만 아니라 LLM 응답, 도구 결과, 대화 컨텍스트, 환경 매개변수 등 각 노드의 출력도 저장합니다.변수 검사는 실행 후 각 노드의 입력 매개변수와 출력 결과를 자동으로 캐시합니다. 다음과 같은 주요 기능을 제공합니다.
- 실시간 변수 모니터링 : 노드가 실행된 직후 워크플로 입력 및 출력을 포함하여 모든 변수를 캡처하여 표시합니다.
- 캐시된 변수 편집 : 업스트림 노드를 다시 실행하지 않고도 대부분의 변수 유형을 수동으로 변경할 수 있습니다. 다양한 시나리오를 테스트하는 데 이상적입니다.
- 비정상 데이터 추적 : 각 변수의 실제 값과 유형을 표시하여 형식 문제, 누락된 필드 또는 유형 불일치를 더 쉽게 식별할 수 있습니다.
- 글로벌 상태 관리 : 시스템 변수, 환경 변수, 사용자 정의 노드 변수를 포함한 모든 변수를 단일 패널에 표시합니다.
변수 검사를 사용하면 모든 노드의 최신 출력 변수를 쉽게 보고 편집하여 변경 사항이 다운스트림 노드에 어떤 영향을 미치는지 확인할 수 있습니다.
사용 방법 #
변수 검사는 캔버스 하단에 위치하며 워크플로가 실행됨에 따라 실시간으로 업데이트됩니다.노드가 실행된 후에는 해당 출력 변수가 패널에 표시되므로 빠르게 검사하거나 편집할 수 있습니다.다음은 “외부 데이터베이스 쿼리” 애플리케이션에서 변수 검사를 사용하는 방법의 예입니다. 이 워크플로에서 LLM 노드는 자연어 입력을 받아 SQL로 변환하고, 쿼리를 원격 데이터베이스로 전송하여 데이터를 검색합니다.
여기를 클릭하여 DSL 워크플로 파일을 다운로드하세요.
보기 #
노드가 실행되면 해당 출력 변수가 자동으로 변수 검사에 나타납니다. 변수를 클릭하면 자세한 내용을 볼 수 있습니다.
편집 중 #
변수 값을 클릭하여 편집하세요. 업데이트된 값은 다음 실행 시 다운스트림 노드에서 사용됩니다.
여기에서 변수 값을 편집해도 노드의 “마지막 실행” 레코드에 캐시된 데이터에는 영향을 미치지 않습니다.
예:1
기본 결과
사용자가 “모든 사용자 데이터 표시”를 입력하면 LLM 노드가 를 생성합니다 SELECT * FROM users;
. 데이터베이스는 모든 데이터를 올바르게 반환합니다.2
변수 편집 후
사용자가 변수 검사에서 SQL을 수동으로 수정하고 SELECT username FROM users;
데이터베이스 노드만 다시 실행합니다. 시스템은 사용자 이름 목록을 반환합니다.이를 통해 사용자는 전체 워크플로를 다시 시작하지 않고 다운스트림 데이터베이스 노드만 다시 실행하여 새 데이터를 테스트할 수 있습니다.
복원 #
변수 편집 필드의 오른쪽 상단에 있는 되돌리기 아이콘을 클릭하면 변수가 원래 값으로 복원됩니다.
모든 변수 재설정 #
캐시된 모든 변수를 한 번에 지우려면 왼쪽 상단의 모두 재설정을 클릭하세요 .