아쿠의 개발 일지

한화 시스템 부트 캠프 24주차 회고 본문

ETC/한화시스템

한화 시스템 부트 캠프 24주차 회고

디아쿠 2024. 10. 13. 14:31

오늘부터 좌우명은 이거다.

 

안녕하세요! 드디어 1차 스프린트에 진입하게 되어 성능 개선이나 추가 기능 구현에 집중하게 되었습니다.

제가 맡은 기능은 채팅 기능인데, 성능 개선은 이미 Kafka를 통해 한 차례 진행했기 때문에, 이번에는 추가 기능을 구현하는 방향으로 작업하게 되었습니다.

요즘 AI 기술이 워낙 핫해서 도입해 보면 어떨까 하는 생각을 항상 하고 있었지만, 채팅 기능부터 시작해 본 적 없는 새로운 기술에 도전하는 것이 다소 두렵게 느껴졌습니다. 특히, "한다고 했다가 실패하면 어떻게 하지?"라는 생각이 먼저 들었죠. 또 AI는 보통 Python 언어로 많이 개발된다는 점도 알게 되었습니다.

 

왜 Ai는 주로 Python을 사용하는가?

 

Python은 간결하고 직관적인 문법 덕분에 빠른 개발이 가능하며, 특히 데이터 과학과 머신러닝에 필요한 풍부한 라이브러리와 프레임워크를 제공합니다. TensorFlow, PyTorch, Scikit-learn 같은 AI와 머신러닝 관련 라이브러리가 잘 지원되고 있으며, 커뮤니티도 매우 활발해서 문제 해결이 상대적으로 수월하다는 점도 Python이 AI 개발에 많이 쓰이는 이유 중 하나입니다.

 

하지만 저희는 Ai 프로젝트가 아니고, 추가 성능 개선에 들어갈 부분이기에 다른 언어를 사용 한다는 것에 대한 부담감이 있었습니다. 그래서 방향을 조금 틀어 다른 방식으로 Ai를 사용해보자. 생각 했습니다.

 

그렇게 해 찾아보게 된 방식이

 

N8N 입니다.

 

N8N은 오픈 소스 워크플로우 자동화 도구로, 다양한 서비스를 연결하여 작업을 자동화할 수 있게 도와줍니다. N8N의 장점은 오픈 소스이기 때문에 누구나 직접 설치하고, 커스터마이징 할 수 있다는 점입니다.

 

N8N을 통해, API호출, 데이터처리, 파일 관리 등의 작업을 다양한 서비스 간에 자동화 할 수 있으며, 비지니스 로직을 시각적으로 구성할 수 있게 UI를 제공하므로, 코드를 많이 작성하지 않도고 복잡한 자동화 프로세스를 설계할 수 있습니다.

 

저도 공부를 하기 전에 이게 무슨 말인가? 싶었던 적이 많은데요, 직접 한 실습을 보여드리며 설명 드리겠습니다.

 

일단 준비물로는 Docker, Ollama, git Clone이 필요합니다. 

Docker은 계정이 없다면 만드셔야 하고, Ollama는 AI 모델을 로컬 환경에서 실행할 수 있게 해주는 도구입니다.

로컬 환경에서도 Ai 실행이 가능하기에 인터넷 연결 없이도 로컬 시스템에서 AI 모델을 실행할 수 있습니다.

https://github.com/n8n-io/self-hosted-ai-starter-kit

에 가서 자신의 맞는 환경 방식으로 clone 받아줍니다. n8n은 로컬에 설치해서 하면 무료로 사용 가능하기에, 오늘 쓸 방법은 로컬에 설치 해 사용 할 것입니다.

 

n8n 홈페이지를 가서, 오픈 소스의 레포지토리 저장소에서 소스 코드를 다운 받습니다.

해당 폴더로 들어가서 도커를 올려주면, 올라마, 포스트그레스가 설치 되고, n8n 소스도 다운 받을 수 있습니다.

git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git
cd self-hosted-ai-starter-kit
docker compose --profile cpu up

 

오늘 해 볼 시나리오는 유튜브 web사이트 혹은 우리의 DB에서 url을 받아 와, LLM으로 요약을 할 것입니다. LangChain에서 summarization Chain을 활용 할 것이고

Ai-Agent를 활용할 건데, 이 요약을 갖고, 여러가지 일을 시킬 것입니다. 저는 수많은 일 중 " 구글 서치 " 툴을 사용해서 해당 영상의 관련 자료들을 찾아 달라고 할 것입니다.

받은 영상을 이제 Discord 혹은 노션, 카카오톡, Website에 전달을 해 주는 작업을 할 것입니다. 

 

n8n을 키게 되면,

다음과 같은 창으로 들어와집니다.

 

n8n은 아까도 말씀 드렸다시피 오픈소스이기 때문에 커뮤니티에 사람들의 공유된 모듈을 사용할 수 있습니다.

아래에 있는 커뮤니티 노드에 가서 브라우저를 선택 하게 되면 npm으로 들어와집니다.

여기에 유튜브 자막을 읽어와주는 오픈 소스를 찾아 와 install 해줍니다.

 

여기에 이제 추가한 것을 누르게 되면 다음과 같은 창이 뜨게 됩니다.

유튜브 비디오나, url을 넣으라고 되어 있습니다. 잘 동작하는지 보기 위해서, 유튜브 영상 주소를 넣고, test step를 누르게 되면

텍스트가 한 줄씩 나오게 됩니다. 저희는 전체의 텍스트가 필요하니까 Merged Text를 눌러주면 병합된 텍스트를 받을 수 있게 된다. 지금까지 한 것을 요약 해 보자면,

 

 


1. 테스트 워크플로우를 눌렀을 때 발동이 됩니다. 이벤트 트리거가 실행 되고,
(현재는 아무것도 없기에 다음 노드로 넘어가고 있습니다.)
2. 유튜브 Transcript로 가서 위와 같은 동작이 실행 되는 것입니다. 여기에서 오류가 생기지 않는다면 다음 노드로 넘어가게 됩니다

 

이제 다음 동작을 작성하기 위해

 

 

Ai를 눌렀습니다. 다양한 Ai가 나오게 됐고, 목록을 보면 Chain이라고 나와 있는 게 많은데 이는 LangChain입니다.

이미 구현된 LangChain을 사용할 것이고, 그 중 Summarization Chain을 사용할 것입니다.

 

사용을 하게 되면, 요약을 할 때 어떤 모델을 사용할 것인지 설정할 수 있습니다. 위에서 깔았던 Ollama를 사용해도 되지만 저는 Gemini 모델을 사용하게 됐습니다. 모델을 사용할 때는 API-KEY를 작성하라고 나와 있는데, 이는 각 Model 홈페이지로 가서 발급 받으시면 됩니다.

Summarization Chain은 주어진 긴 텍스트 데이터를 요약하는 작업을 chain형태로 구성하여 처리하는 방식입니다.

 

INPUT 부분에 아까 받은 유튜브 내용이 와 있고, 이 중간에 있는 값들을 통해 출력된다는 뜻입니다.

글자를 몇개로 쪼개서 요약을 할 것인지, 얼마나 겹치게 할 것인지에 대한 설정을 할 수 있으며, 돌아가는 구조 또한 설정할 수 있습니다.

저는 다음과 같은 내용으로 요약을 해 달라고 했고, OUTPUT을 보면 요약 된 text를 보실 수 있습니다.

 

이런식으로 요약을 해 얻어낸 데이터를 활용해 처음에 말씀 드린 시나리오로 작성할 수 있었습니다.

아직 예쁘게 꾸미지는 못했지만, 출력 결과를 Discord로 전해 받을 수 있게 연동을 해 주었는데

결과 값이 잘 오고 있습니다 ,, 예쁘게는 안 꾸몄어요

 


 

이렇게 성공한 동작을 보실 수 있습니다. 다양한 도구를 사용하며, 복잡함을 줄이고 성능을 개선할 수 있다는 것이 너무 신기했습니다. 이제 이 도구를 활용하여 저희 프로젝트와 맞게 설정을 할 것입니다. 저희 프로젝트의 데이터를 가지고 가서 정형화 된 대답을 해 주는 챗봇을 구현 할 예정입니다. 이러한 기능을 RAG라고 말 합니다. 

 

다음 주엔 완성이 되어 있을 것이고, 결과물 또한 나오게 될 것입니다. 이번 주에 끝내고자 했지만 다른 기본적 기능을 마치고자 시간을 쏟았기에 ,, 아쉽게도 시간이 모자랐습니다. 앞으로 두 번의 회고 끝에 제 부트캠프는 마무리 됩니다 ,, !! 

 

마지막까지 열심히 해서 좋은 결과를 얻어내도록 하겠습니다. 감사합니다 ~ !! n8n의 고수가 되어 돌아올게요 ,, !!

 

이 모든 내용은 <노코드캣>님의 유튜브를 시청해 작성한 자료입니다. 많은 ai 자료들과 아직 한국에서 잘 쓰지 않는 기술들이 많은 것 같으니 다들 참고 해 보셔요 ,, !! 

 


누군가는 원하는 아쿠의 일상,,, 😂😂

팀원이 공유 해 줘서 하게 됐는데 긍정핑이 나오게 됐다. 내 코드도 긍정적이면 참 좋으려만 ,,,

 

드디어 진행 된 우리 팀의 첫 회식 (멘토님이 고기 사주심,,!) 멘토님께서 너무너무 유쾌하시고, 열정적이시다. 감사합니다 ,,, 꾸벅 꾸벅

 

 

길 가다 본 을지로의 한화 ,, 불이 꺼지지 않더라. 건물은 너무너무 예뻤던 ,, 우리 멘토님도 저기서 일 하고 계시려나. 문득 생각이 들었다 ,,

 

 

벌써 11기를 모집하고 있더라. 아마도 제가 수료를 하게 되면 11기가 들어오게 될텐데 11기 분들은 정말 정말 행운아십니다.

아마도 저희 강사님을 만날 것이기 때문이죠 ,,, 저희 강사님을 만나고 개발자로써의 꿈을 꾸게 됐고,,, (구구절절) 생략...

 

아마도 제 블로그를 많이 보신 분이라면 아시겠지만 네트워크의 교과서인 책도 내셨다구요,,,!!

이런 분께 배울 수 있는 기회인데 안 오신다고요?... 진짜?ㅠㅠ...

한 번만 더 수강을 할 수 있다면 11기로 들어가 저희 강사님께 배우겠습니다. (제발요)

 

너무 길게 말 했지만, 이 과정 정말 추천 드립니다. 본인이 백엔드가 하고 싶다, 개발자가 하고 싶은데 길을 모르겠다, 그냥 오세요 ,, 

매니저님들도 천사시고, 주변에 맛집도 많습니다.(중요)

 

자. 너무 길게 말 했네요. 여기까지 하겠습니다. 감사합니다~~!! 

 

 

728x90