프로그래밍/AI,ML

[ComfyUI] Workflow를 Python API로 만들기

Lou Park 2025. 1. 21. 18:32

ComfyUI로 구성한 Workflow를 Python API로 만드는 방법을 공유한다. ComfyUI 서버에 HTTP/Websocket 통신을 하는 구조로 되어있기 때문에 사실 어떤 언어든 가능하다.

 

노드 ID의 확인과 사용

예시로, Text 프롬프트를 읽고 이미지를 출력하는 Workflow가 있다고하면 ComfyUI에서는 이런 TextInput Node를 준비하고, 이 노드의 출력을 CLIP Prompt 노드의 STRING 포트와 연결한다. 이 노드의 우측상단 귀퉁이에는 #37이라는 번호가있는데, 이것이 노드 ID다.

#37이 노드 ID

 

Workflow를 API 형태로 Export하고JSON 파일을 열어보면 “37”번 키에 해당 노드의 정보가 들어있음을 알 수 있다. 우리는 이런식으로 JSON 파일을 읽고, 입력값을 바꾸길 원하는 노드에 액세스해서 값을 바꿔친 후에 ComfyUI 서버에 요청을 보내려한다.

 

Workflow > Export (API)
"37" 노드는 TextInput 노드다. inputs.text를 바꿔치면된다.

Workflow 입력과 출력노드 설정

우리는 진행상황과 결과를 웹소켓 통신을 통해 받아올것이기 때문에, Workflow의 마지막 이미지 출력을 SaveImageWebsocket 노드와 연결해준다.

 

정리하면, API 형태로 사용하기 위한 Workflow로 변환하기 위해서는 입력과 출력을 다음과 같이 준비해주면된다. 입력은 구현하고자하는 바에 따라서 여러개가 될 수도있고, 동영상 입력도 될 수 있는데 그건 응용이니까…예시로 들진않겠다.

 

입력 노드

  • 이미지: Load Image (Base64) - 이미지를 Base64로 인코딩해서 JSON 파일에 포함하면 된다.
  • 텍스트: Text Input

출력 노드

  • 이미지: SaveImageWebsocket

Python 소스코드

예시소스코드는 입력 이미지 값을 바꿔서 ComfyUI 서버에 요청한다. 

실행결과

소스코드를 실행하면 다음과같이 진행상황이 쭉 찍히고, 이미지가 성공적으로 생성됨을 확인할 수 있다. ‘progress’ 단계에서 확인할 수 있듯이 value/max * 100은 이미지 처리의 진행률로 사용할 수 있는데, 실제 프로덕트 구현시에 사용하면된다.