랭체인으로 내 일상 생활 문제 해결해보기(3주차) - (Feat 구글 캘린더 with 텔레그램)

배경 및 목적

MBTI 유형 중 극 P에 해당하는 저에게는 일상의 일을 제대로 관리하기 위해 강제로 계획을 작성해야 하는 일이 많습니다. 해당 유형이기에 오히려 계획을 반드시 세워야 하는 상황이 생기 것이죠. 일단 제가 하고자 했던 일은 구글 캘린더의 일정을 추가할 때 자연어로 추가해보는 일이었습니다. 랭체인 스터디였던 만큼 '자연어'를 적극 활용해보아야 했기 때문입니다. 그래서 자연어를 통해 일정 추가 기능을 만들어나갔고 조금씩 필요에 의해 기능을 추가해나갔습니다. 이 프로젝트의 최종 목표는 생성형 인공지능 도구의 도움을 통한 개인의 일상 생활 관리입니다.

참고 자료

제가 참고했던 건 랭체인에 대한 기본 개념들이 담긴 유튜브 영상 2~3편이었습니다. 테디노트 님의 영상도 1~2편 보았고 랭체인에 대한 기본감을 잡고자 운전을 하거나 샤워를 할 때 보곤 했습니다. 인상 깊었던 몇 편을 공유드립니다. 사실 전부다 보지 못했고 발췌해서 조금씩 보았던 터라 앞으로 계속해서 챙겨볼 예정입니다.

https://www.youtube.com/watch?v=p0YMez4SOJ8&

https://www.youtube.com/watch?v=WWRCLzXxUgs&list=PLQIgLu3Wf-q_Ne8vv-ZXuJ4mztHJaQb_v&index=1

이건 재생 목록인데 랭체인에 관련해서 백그라운드를 잡을 수 있는 좋은 영상인듯 하여 공유드립니다.

https://www.youtube.com/watch?v=A7Djf9W-y_o

https://www.youtube.com/watch?v=KDM6UM-msZk

활용 툴

- ChatGPT(50%), 클로드3.5(40%), 제미나이(10%)

- ChatGPT o1-preview 와 o1-mini를 썼는데 어려운 코딩, 찾기 어려운 해결책 등을 잘 찾아주어 유용했습니다. 다만 저는 이미 제한량을 다 쓴지라 이제는 POE 에서 쓰고 있습니다.

- POE.COM: poe는 유료결재 해두면 클로드를 무제한 급으로 쓸 수 있는지라 코딩하다가 리밋에 걸리면 썼습니다.

-POE는 유료결재하면 한달에 100만 cp(컴퓨트 포인트)를 줍니다. 이 포인트 안에서 생성형 인공지능 도구를 쓰는 것인데 클로드3.5는 대화 한번 할때 마다 380cp, ChatGPT는 300cp, 제미나이 1.5pro는 175cp가 소모됩니다. GPT 4o-mini는 15cp라 엄청 저렴한 편이죠. 그래서 저는 거의 리밋과 상관없이 무제한급으로 생성형 인공지능과 대화를 할 수 있어서 POE가 굉장히 유용한 듯 합니다. o1-preview의 경우 한번 질문에 10000cp라는 어마무시한 가격으로 써야 하고, mini는 그보단 저렴한 1800cp에 한 번 대화를 걸 수 있는데 그만한 값어치를 하기에 저는 이제는 o1-mini를 주력기로 어려운 난제, 오류 등을 해결 할 때 사용하거나 클로드 3.5를 통해 클래스, 함수 등을 부분적으로 수정할 때 사용합니다. 그런데 아무리 질문을 많이 해도 저 100만 포인트는 한 달 안에 쓰기는 어려운 양이라 부담 없이 대화하고 있습니다.

실행 과정

우선 초안을 잡을 때에는 Chatgpt와 대화를 나누었습니다. 단 코드 생성을 바로 요청하는 게 아니라 저의 아이디어를 제공하고 방법을 차근차근 알려달라고 했습니다. 그 다음에 핵심 기능들을 하나씩 구현해나가며 살을 붙이는 작업을 해나갔습니다. 그러면서 gui도 만들고 구글캘린더 api 연결도 해보고(방법은 chatgpt한테 물어보거나 뤼튼의 AI 검색 기능을 활용) 5달러 ChatGPT API Key도 구매했습니다. 제가 처음 작업을 시작한 날을 보면 9월 29일인가? 월요일날 발표를 해야 해서 급하게 만들었던 것으로 기억을 합니다. 확실히 제 일상 생활 관리랑 관련된 것이라 더 즐겁게 목적의식을 가지고 하나씩 구현해나갈 수 있었습니다.

스터디 첫 발표를 하고 스스로 판단해보며 어떤 것을 업데이트 할 지 따져보며 살을 붙여나가는 작업을 했습니다. 그런데 아무리 ChatGPT로 해도 동일한 대답을 내놓을 뿐 해결이 안되는 것입니다. 그래서 홧김에 클로드 3.5를 유료결재했습니다. 그리고 딱 2번 질문했는데 해당 문제가 스르르 해결이 되었습니다. 아 이래서 클로드 클로드 하는구나 하면서 감탄했습니다. 그 뒤로 저는 클로드와 챗지피티를 오가면서 음성 입력 기능, 자연어로 일정 등록 기능, 자연어로 일정 계획 생성 기능 등을 만들 수 있었고 실제로 제 삶에 적용하기 시작했습니다.

그러다가 다른 스터디를 청강하면서 GPT o1-preview에 대한 소식을 듣게 되었습니다. 그래서 한번 써볼까? 하고 마음만 먹고 있었는데 클로드3.5와 챗지피티 모두에게 해결이 안되는 치명적인 오류를 하나 직면하게 되었습니다. 끙끙 앓으며 2시간동안 노력해도 해당 오류는 해결이 되지 않았습니다. 다시 처음부터 뜯어 고칠까... 고민하다가 마지막 시도로 o1-preview랑 대화를 시작했습니다. 그런데.... 이 녀석 참 좋은 능력을 가졌습니다. 고민고민 하더니 오류를 정확하게 집어내기 시작했고 가까스로 해당 오류를 잡으며 다시금 개발에의 의지를 다질 수 있었습니다.

그런데 갑자기 o1-preview로부터 25개의 질문밖에 남지 않았다는 경고 메시지를 받게 됩니다... 어 어짜피 하루만에 초기화되겠지? 하면서 25개의 질문을 다 썼더니 꽤나 긴 기간의 리밋을 당하게 되더군요. 그래서 저는 더이상 o1-preview 기능을 쓰지 못하게 되었습니다. 그래서 자잘한 업데이트를 위해 다시금 챗지피티, 클로드3.5, poe를 오가며 업데이트를 해나갔지만 큰 오류에 직면한 경우 시간을 많이 할애하는 시행착오를 겪었습니다.

그러다가 poe를 보니깐 그곳에 o1-preview가 있더라구요! 근데 가격이 10000cp!!!? 더군요. chatgpt 4o랑 대화 하는데 300cp가 드는 것과 대비하면 33.3333333배의 비싼 가격이었습니다. 그런데 이미 o1-preview의 맛을 보았던 저였기에 poe를 이용해서 5~6번 정도 사용해보았습니다. 근데 그 옆에 보니깐 o1-mini가 있더라구요?? 가격은 1800cp에 속도도 빠를 것 같아서 코딩 할 때 써보았는데 성능은 준수하면서 어떨 때는 preview가 해결하지 못하던 문제도 잘 해결해주던 때가 있더군요. 그래서 저는 비싼 preview를 쓰면서 마음의 부담을 지는 것보다는 mini를 주력기로 쓰면서 이따금씩 최후의 수단으로 preview를 쓰는 형태로 페어프로그래밍을 변경하였습니다.

그래서 위의 내용들을 정리하자면 저는 페어프로그래밍을 위해 ChatGPT 유료, 클로드3.5 유료, 제미나이 유료, POE 유료 등으로 29000*4 = 116000원이라는 디지털 월세를 내면서 코딩을 해나가고 있습니다. 제미나이는 거의 코딩할 때는 쓰지 않는데 혹시 다른 코딩 도구들이 해결하지 못하는 문제를 만나는 경우에 사용하기도 하고 구글 드라이브 2TB를 주는지라 겸사겸사 이용하고 있습니다. 꽤나 많은 월 지출액을 감안하더라도 생성형 인공지능 도구가 주는 만족감은 꽤나 큽니다. 몰입의 경험을 제공해주고 상상한대로 무엇인가를 만드는데 큰 도움이 주니깐 말이죠! 지금은 어떤 것을 줄여야 할지... 감이 안오는 상황입니다. 생성형 인공지능 도구의 특징이 다 달라서 적재적소에서 필요한 상황이니깐 비용 대비 저에게 얻어지는 이득이 크도록 더 많이 활용해볼 예정입니다.

결과 및 인사이트

1) 평소에 등록하고 싶었던 다양한 기능을 등록했습니다. 아이디어가 생각날 때마다 생성형 인공지능 도구와 상의를 하면서 아래와 같은 기능을 추가했습니다. 비전공자인 제가 생각할 수도 없던 일들을 생성형 인공지능과의 소통으로 아래를 만들어보았습니다.

** 만들어본 버튼들...

흰색 화면에 여러 다른 숫자

** 일정의 섹션화

중국사이트 스크린샷

- 종일 일정 등록 기능을 추가했습니다 ( 할 일 목록의 역할을 합니다 ) "10월 15일~21일 'A 업무 마감하기' 종일 일정 추가해줘" 와 같은 형식으로 명령어를 내리면 일자에 걸친 종일 일정을 등록합니다. 기존에 할 일 목록이 시간을 제대로 반영하지 못했기에 이 방법을 사용하였습니다. 종일 일정의 경우 기본적으로 시간 데이터는 쓰지 않고 날짜 데이터만 쓰기에 다른 일정과 구분하는 작업이 필요했습니다.

- 챗봇 1개로 일정 추가 / 일정 계획 생성 등을 할 수 있습니다. 이로 하여금 텔레그램과의 1:1 연결이 가능해졌습니다. 앞으로 일정 조회, 일정 조회를 바탕으로한 계획 생성, 미완료된 목록을 바탕으로 계획 생성 등의 기능을 업데이트하고자 합니다.

한국어 문자 메시지의 스크린샷

- 챗봇이 텔레그램과 1:1 연동 되도록 만들었습니다. 즉 텔레그램 봇에게 명령을 내리면 gui상에 반영이 됩니다. 추후 텔레그램을 통해 주기적으로 안내를 받고 소통하는 기능을 추가하고 싶습니다.

- 일정들을 완료하는 기능을 추가하였습니다. 종일 일정, 반복 일정, 단독 일정 모두에 적용됩니다. 대상들을 선택하고 완료를 누르면 일정 앞에 [완료] 라는 메시지가 뜨고 색이 회색으로 변경됩니다. 회색은 제가 임의로 지정한 색입니다.

- 일정들을 주간 보기, 월간 보기, 년간 보기, 선택 일정 보기 등을 통해 내가 무엇을 해야 할지 전체적인 안목에서 파악할 수 있도록 버튼을 추가하였습니다. 이를 통해 사용자는 이번주에 해야 할 것, 이번 달에 해야 할 것 등을 한눈에 파악할 수 있으며 아직 완료되지 못한 것들을 파악하여 완료 버튼을 누르기 위해 할 일을 수행 할 수 있습니다. 활동 로그를 통해 일정의 시작과 끝을 확인할 수 있도록 설정하였습니다.

한국 컴퓨터 화면의 스크린샷

- 일정 등록과 관련하여 꽤나 긴 이벤트들을 알아서 파싱해서 등록하게끔 업데이트 했습니다.

- 반복 일정 등록 기능을 구현하였습니다. '10월 14일~10월 30일 매주 수요일 7시~10시 강의 듣기 추가해줘' 라는 명령을 내리면 그 사이에 있는 수요일에 대하여 강의 듣기를 자동으로 등록합니다.

- PyQT5 모듈에서 pyside6로 변경하였습니다. 이를 통해 gui 프로그래밍으로 인한 저작권 이슈를 피할 수 있었습니다. 저도 우연히 본 유튜브 영상에서 이 사실을 알게 되어 변경 완료 하였습니다

- 북마크 단축키의 안전성을 강화하였습니다. 단축키 사이의 간섭 현상을 없애고, 중복 단축키를 미연에 방지합니다. 앞으로 북마크의 카테고리화, 페이지화를 하는 것이 하나의 목표입니다.

숫자와 문자 목록이 표시된 화면

- 텔레그램 봇, 스티림릿화 시도를 통해 단독 gui로서의 한계점을 극복하고자 하였습니다. 만약 텔레그램 챗봇이 더 잘 만들어진다면 gui는 켜두기만 하거나 따로 웹서버에 올려두는 방식으로 24시간 구동이 가능할 듯 합니다.

2) 프롬프트의 중요성을 다시금 파악했습니다. 프롬프트를 잘 만들지 못하면 종일 일정, 반복 일정, 단독 일정 등을 정확히 구분하지 못합니다. 그래서 앞으로 계속 프롬프트를 다듬을 예정입니다. 랭체인의 자연어 처리 과정에 대해 더 배워서 어떤 명령어를 내리든 찰떡같이 알아듣고 잘 작동하는 시스템을 만들어보고 싶습니다. RAG에 대해서 보고 있는데 앞으로 해당 기능도 추가해보고 싶습니다.

3) 앞으로도 더 많은 기능을 구현하고 싶은데 생성형 인공지능의 도움이라면 더디지만 꾸준히 할 수 있겠다는 생각이 듭니다. 프롬프트 엔지니어링, 랭체인, 페어프로그래밍에 대해 더 배워서 나중에는 설치파일화해서 배포해보거나 웹 서비스를 한번 꼭 만들어보겠습니다!

3
2개의 답글

👉 이 게시글도 읽어보세요