워크플로우 기반 채팅에서 파일 업로드하기
워크플로우 구현 후 채팅 애플리케이션 배포 시 영상, 테이블, 문서 형식의 다양한 확장자 파일을 업로드하고, 파일 내용의 텍스트를 로드할 수 있습니다. 이 글은 워크플로우 기반 채팅 애플리케이션 내 업로드 기능을 추가하는 방법에 대한 포스팅입니다.
목차
파일 업로드를 위한 전처리기 설정
워크플로우 내 업로드 파일 관련 설정
채팅 애플리케이션 파일 업로드 예시
1. 파일 업로드를 위한 전처리기 설정
다양한 확장자 파일 업로드를 지원하는 ‘파일 업로드 통합 전처리기’가 구현되어 있습니다.

작성 당시 ID: 199
지원하는 파일 형식
음성: mp3, m4a, wav
테이블: csv, xlsx
문서: hwp, hwpx, docx, pdf, ppt, pptx, txt, json, md
코드 확인 후 ‘배포 이력’ 메뉴에서 배포 시,

이미지: **‘mnc/docling-default-preprocessor’**를 이미지로,
인스턴스: ‘small’ 이상의 사이즈로
설정 하여 배포합니다.
음성 파일 관련 코드
음성 파일 처리는 내부 배포된 whisper-large-v3
모델을 호출해 음성을 텍스트로 변환한 뒤, 변환된 텍스트를 리턴하는 것으로 진행됩니다.
AudioLoader
클래스는 음성 파일 처리를 위한 모듈을 포함합니다.

DocumentProcessor
클래스의 __call__
에서 해당 클래스의 파라미터값을 설정합니다.

file_path
: 업로드된 파일 경로req_url
: 요청을 보낼 모델의 주소 (모델 변경 시 코드 내 주소를 수정해야 합니다)req_data
: 요청 데이터 형식 (모델 변경 시 맞추어 수정이 필요합니다)chunk_sec
: 모델에 보내는 파일 청크 길이 (29초로 설정되어 있습니다)파일이 여러 청크로 나뉘어 모델에 보내지고, 멀티스레드로 처리된 뒤, 텍스트 청크가 합쳐져 최종 리턴됩니다.
tmp_path
: 파일 청크를 저장할 임시 폴더 경로 (텍스트 변환 완료 후 삭제됩니다)

음성 파일을 다른 형식의 파일과 구분하기 위해 최종 텍스트 앞단에
"[AUDIO]"
를 붙여 리턴합니다. 조건 부여 등에 사용할 경우, 워크플로우 내에서 조작이 필요합니다(2.의 내용 참고).필요 없는 경우 전처리기 코드에서 삭제하거나, 워크플로우 내 코드에서 제외할 수 있습니다.
테이블 파일 관련 코드
테이블(Tabular) 파일 처리는 pandas.DataFrame
으로 읽어 들인 내용과 컬럼 관련 등 메타 정보를 JSON 형식으로 정리 후, 해당 dict
를 str
으로 변환해 리턴합니다. TabularLoader
클래스에 관련 모듈이 포함되어 있습니다.

첫 셀(1A)부터 하나의 테이블이 한 시트에 존재하는 데이터를 가정하였습니다.
csv의 경우 시트가 존재하지 않으므로 싱글 시트, xlsx의 경우는 멀티플 시트를 가정하고 구현했습니다.
data_dict
의 정확한 k-v는 코드를 참고해주세요.

리턴 텍스트 내
"[DA]"
: 해당 전처리기 코드는 csv, xlsx 파일인 경우 ‘데이터 분석 에이전트’ 모듈을 통과하는 것을 가정하고 작성 되었습니다. 여러 형식의 파일 업로드 시 구분하기 위한 조건으로"[DA]"
를 텍스트 맨 앞단에 붙여 리턴합니다.워크플로우에서
"[DA]"
를 제외한 JSON 데이터만을 활용하기 위해서는 추가적인 처리가 필요합니다(2.의 내용 참고).해당 조건이 필요 없을 시
"[DA]"
를 코드에서 삭제해주시면 됩니다.
특이 문서 처리 관련 코드
문서 파일 관련 코드는 ‘기본 전처리기’ 코드와 크게 다르지 않습니다. 한편 ‘기본 전처리기’에서 다루지 않는 hwpx와 ppt 파일 처리를 위한 코드가 추가 되었습니다.
PPT

ppt 파일은 pptx 파일 방식으로 처리되지 않는 문제가 있었습니다. 이를 해결하기 위해 pdf로 변환해 처리 하였습니다.
HWPX
hwpx 파일은 ‘지능형 전처리기’의 코드를 사용해 처리 했습니다. ‘지능형 전처리기’의 코드 중 필요한 코드를 가져와 병합/정리했습니다.
2. 워크플로우 내 업로드 파일 관련 설정
워크플로우 플러그인 활성화
채팅 애플리케이션에서 파일 업로드 기능을 사용하기 위해서는 워크플로우 내 파일 기반 대화 플러그인을 활성화해야 합니다.

‘플러그인’ 메뉴에서 ‘활성화’ 버튼을 클릭합니다.
‘서빙’을 선택한 후,
‘전처리기’를 ‘파일 업로드 통합 전처리기’로 설정합니다.
플러그인 활성화 후 워크플로우 및 채팅을 배포하면 아래 이미지의 채팅창 왼쪽 하단과 같은 파일 업로드 버튼을 확인할 수 있습니다.

워크플로우 구현 시 파일 컨텐츠 가져오기
워크플로우 노드에서 업로드한 파일 컨텐츠를 사용하기 위해서는 vars.genosUploaded
변수를 확인해야 합니다. customFunction
노드에서 직접 코드를 작성하여 값을 사용합니다.

테이블 파일 텍스트 내 특정 스트링(토큰) 사용 및 제외

"[DA]"
가 앞단에 포함 되었는지 여부를 확인해 관련 조건을 부여합니다.API로 파싱된
<doc>
string을 제거 해야 순수한 파일 컨텐츠 텍스트만을 가져올 수 있습니다.

같은 방식으로
"[DA]"
를 제외한 파일 텍스트를 사용합니다.
3. 채팅 애플리케이션 파일 업로드 예시
채팅 애플리케이션에서 파일 업로드 버튼을 클릭한 뒤, 파일을 업로드합니다. 파일이 로드되고, 텍스트 입력과 함께 채팅을 보낼 수 있습니다.

아래는 다양한 파일의 업로드 및 파일 컨텐츠 예시입니다. 채팅에서 파일의 내용이 텍스트로 출력되고 있습니다.




Last updated
Was this helpful?