해결하고 싶은 과제
- 여러 노트앱들을 전전하며 쌓아둔 수많은 노트들...
- 옵시디언으로 갈아타려고 보니, 기존의 노트들을 다 가지고 오는 것도 일이더라구요.
- 특히 옵시디언을 노트들의 새로운 무덤으로 만들지 않으려면, 각 노트에 적절한 메타데이터를 붙여두어야 하는데, 수많은 노트들에 대해서 메타데이터를 일일이 작성하려니 시간도 없고 체력도 없...
- 어느날 아침, 불현듯 이런 생각이 들었습니다. "아니 그걸 AI 시키면 되잖아???"
- 그래서 직접 만들기로 했습니다. 여러 곳에 흩어져 있는 수많은 노트들을 옵시디언으로 가져오는 걸 도와주는 나만의 노트처리봇!! #11기연구지식관리
- 일단 장착시키려는 핵심 기능은 세 가지입니다.
- 1) 노트 내용을 읽고 적절한 메타데이터를 노트 상단에 삽입한다.
- 2) 여러 파일 형식(.hwp, .docx, .txt, .md)의 노트들을 모두 마크다운 형식의 파일로 바꾸어준다.
- 3) 1), 2)의 과정을 여러 노트들에 대해서 수행하는 과정을 '자동화'시킨다. (파일을 하나씩 업로드하는 노가다는 절대 안한다!)
- 노트앱 노마드 생활 청산을 도와줄 '노트처리봇' 만들기. 시작해보겠습니다. 두둥.
STEP 1. 메타데이터 자동생성 프롬프팅
- 우선 제가 업로드하는 노트를 읽고, 그에 대해서 AI가 메타데이터를 제대로 생성할 수 있도록 하는 게 첫번째 과제였습니다.
- 메타데이터 생성이라는 핵심 과제에 집중하기 위해, 업로드하는 노트의 형식은 일단 md로 일원화했어요.
- 그간 부트캠프에서 구르며(?!) 쌓인 감을 동원해서, 제가 할 수 있는 한 자세하게 프롬프팅해보았습니다. 옵시디언에서 제가 현재 사용하고 있는 '속성'과 각 '속성'별 값의 종류를 상세하게 설명해주면서, 노트별로 note type, touch count, title, aliases, summary, tags 라는 여섯 가지 메타데이터를 생성해달라고 부탁하는 프롬프트를 짜보았습니다.
- Few Shots 방식으로 프롬프트 중간중간에 예시도 넣어주었습니다.
노트처리봇 품질 개선을 위한 노력 3가지
01. 챗지피티와 클로드 실력 비교
- 이 프롬프트를 ChatGPT 4o 와 Claude Sonnet 3.5 에 넣고 각각 돌려보았습니다. 동일한 샘플 노트 5 개 정도를 넣어보고 메타데이터 생성 실력을 비교해보았어요. (참고로 저는 양쪽 다 구독 중입니다. 디지털 월세...)
- 노트 내용을 정확하게 반영하고, 노트와 유관성이 높고, 제가 유의미하게 활용할 수 있는 메타데이터를 생성하는지의 여부가 가장 중요하다고 생각했어요. 메타데이터 생성이 유의미하게 이루어지지 않으면, 그 이후 프로세스를 설계하는 게 별 도움이 안되니까요.. (어차피 제가 다시 다 수정해야 하면 노트처리봇 개발이 다 무슨 의미..) 그간 한국어 내용 처리에 있어서 챗지피티 실력이 별로 신통치 못했던 경험을 여러 번 했기에, 클로드까지 동원해서 메타데이터 생성 결과를 비교해보았습니다.
- 샘플 노트 선정 시, 가공도 측면이나 노트 타입 측면에서 다양한 결과를 산출할 수 있도록 노트들을 골라보았습니다. 그리고 샘플 노트에 대해 제가 기대하는 메타데이터 값들을 대략 미리 적어보았어요. 제가 각 노트에 대해 기대하는 메타데이터 값들이 챗지와 클로드의 실력을 판단하는 기준이 되어줄 테니까요.
- 비교 결과입니다. 전자가 챗지, 후자가 클로드입니다. #챗지 #클로드
- 비교에 대한 저의 만족도 평가는 아래와 같아요. 클로드 아티팩트!!!! 시 켜서 작성했습니다. #아티팩트
결론은? 노트 처리의 실력 면에서 클로드가 거의 압도적으로 우승입니다.
챗지는 할루시네이션 때문에 너무 골치 아팠어요. 제가 준 노트의 내용이 아닌 것들을 너무 천연덕스럽게 가지고 와서 메타데이터를 작성해주더라구요. 혹은 제가 아까 줬던 다른 노트의 내용을 가지고 오거나... 이걸 처리하는 프롬프팅도 할 수 있겠지만 다른 측면들에서도 클로드 성능이 더 우수했기 때문에, 굳이 그런 고생을 하지 않고 이번 플젝에서는 챗지를 버렸...습니다. ㅋㅋㅋ
남은 문제는 챗지는 open API 키를 제공하기에 추후 노트 처리 과정을 자동화시킬 때 챗지를 결합시키기에 용이한데 비해, 클로드는 open API를 제공하지 않기에 노트 처리 자동화 과정에 결합시키기 어렵다는 거죠... 그렇지만 저는 이제 부트캠프 3번째 참가자이니만큼!!! 여기서 물러서지 않죠. 제게는 #11기문과생도AI 에서 쌓인 짬이 있으니까요!! ㅎㅎㅎ
네, 클로드도 할 수 있다고 했습니다. 이 과정을 짜는 건 미래의 나에게 맡기고, 일단 노트 처리 AI로는 클로드 선정!!
02. 시행착오를 통해 프롬프트 수정하기
- 노트처리봇 품질 개선을 위해 제가 했던 다른 한 가지는, 시행착오를 겪으며 프롬프트를 수정해나간 것입니다.
- 위에서 공유한 프롬프트 중에서 '주의사항'에 해당하는 것은 제가 시행착오들을 겪으며 추가한 내용들입니다.
- 시행착오 1 : 메타데이터를 영어로 작성함
- 클로드는 한국어로 잘 작성했는데, 챗지피티가 종종 영어로 메타데이터 값을 주더라구요. 저는 태그관리를 기본적으로 한국어로 하기 때문에, 이를 수정할 필요가 있었습니다.
- 시행착오 2 : aliases 이상하게 작성함
- 클로드가 aliases를 이상하게 적더라구요. 혹시나 싶어 물어보니 역시나 파일명을 못 읽는다고 하네요. 챗지피티는 파일명을 읽어올 수 있는데, 클로드는 파일명은 못 읽습니다. 기존의 파일명을 aliases로 정리해서 넣으라는 요구는 클로드한테 시킬 때는 뺐어요.
- 시행착오 3 : 기존 메타데이터와의 혼동
- 업로드하는 노트에 이미 특정 메타데이터 값이 있는 경우: 챗지피티는 알아서 걸러줬는데, 클로드는 못 걸러주더라구요. 그래서 프롬프팅을 자세히 수정했습니다. 그랬더니 문제 해결!
03. 클로드에게 프롬프트 개선을 위한 조언 요청하기
아티팩트로 프롬프트를 우측 패널에 펼쳐놓고 보면서 진행하니까 수정이 훨씬 쉬웠어요!!! #아티팩트 강추!!!
프롬프트 개선에서 제가 핵심적으로 고려했던 사안은 바로 추후 자동화를 위한 선제적 조치였어요. 저는 다음 스텝에서 노트를 업로드하고 클로드로 메타데이터 처리해서 수정된 노트를 옵시디언에 저장하는 과정을 자동화시킬 건데요. 그럴 경우 클로드와 대화의 누적을 통해 메타데이터 생성 실력을 개선시키는 방식은 불가능하잖아요? 챗지라면 GPTs를 만들어서 결합시키거나 할텐데, 클로드의 경우 매번 새로 대화창을 열어서 제가 사전에 정리해둔 프롬프트를 넣고 노트 처리를 맡겨야 하니까,