27. 학습의 단계_n8n -7일차 -
1단계. 학습의 단계
1. AWS Bedrock
첫번째 강의) Building Multi-Agentic AI Workflows on AWS Bedrock: 수강완료 (2025/4/13~04/16)
두번째 강의) Learn Agentic AI Basics, Amazon Bedrock Multi-Agent Framework (2025/4/29~06/11)
2. N8N
I. 강의 선택의 이유 / 수강 전 기대하는 부분
(중략)
이번 강의는 개념을 많이 알아보고 깨우치는 강의가 되기 보다는, "어? 그럼 이런것도 만들 수 있겠네? 어, 이거 만들어보고 싶다"라는 생각이 계속 드는 강의가 되기를 희망한다. 강의 완강까지 시간이 다소 걸려도 된다. 강의를 듣다가 배운 내용을 십분 활용하여 수강 중간에라도 toy project를 시도해보면 좋겠다.
II. 수업내용
1일차(25/6/11): Rapid API, n8n(rapid api, chat gpt api, firecrawl api)
1) 2강. "난생 첫 API 호출!" - API로 진짜 AI를 경험하다
2) 3강. "API라는 신세계" - 다양한 AI 활용 및 기초 구조
2일차(25/6/12~13): AI 챗봇, Tool 연동, 혼자서 두 개 에이전트를 만들어서 피드백 루프 구성 중.
3일차(25/6/20): 피드백 루프 구성 시도 후, 다시 강의 내용으로 복귀함. (네이버 API, claude API 연결)
3) 4강. "AI 에이전트, 1분 컷?" - 나만의 AI 비서 만들기
4일차(25/6/22~24): 5강 시작
4) 5강. "AI 에이전트 실사례" - 음성부터 텔레그램까지 손쉽게 연동
5일차(25/6/25~7/8)
5) 6강. "대규모 자동화의 힘" - 꿈꾸던 실전 데이터 수집과 처리
6) 7강. "워크플로우로 인터넷 정보 수집" - N8N 템플릿 활용 및 비즈니스 기획
6일차(25/7/8)
7) 8강. "정보의 정리정돈" - IDE 활용과 프롬프트 관리
8) 9강. "AI, 판단을 부탁해!" - AI 기반 의사결정 시스템
7일차(25/7/9)
9) 10강. "나만의 API 만들기" - Workflow 와 Webhook 활용
현재까지는 3rd Party API를 호출하여 워크플로우를 만들어 왔다. 이번 강의를 통해서는, 내가 직접 만든 워크플로우를 API로 배포하는 방법을 배워본다.
API 배포를 위한 첫 걸음은, 워크플로우 시작 노드를 'On webhook call'로 만드는 것이다. 노드를 생성하게 되면, 해당 Webhook URL을 트리거할 수 있는 주소를 할당받게 된다.
위 URL을 호출함으로써 API를 실행시키게 되면 API를 호출하는 편에서 임의로 작성한 Parameter가 우리 쪽 API로 인입되는 것을 확인할 수 있다. 이때 나는 API 호출한 쪽으로, 그가 요청한 값 또는 우리가 도출한 아웃풋을 발송할 수 있다.
N8N의 On webhook call 노드에서는 반응하는 총 3가지 방법이 나온다. (1) 콜을 받는 즉시 실행하는 것, (2) 콜을 받은 후 워크플로우를 실행한 후 가장 마지막 노드가 종료되었을 때 해당 노드의 실행 결과 값을 return하는 것, 그리고 (3) 'Respond to Webhook'이라는 노드를 통해 응답하는 방법도 있다.
Sub-워크플로우 방식은 Webhook과는 달리
- 보안에 조금 덜 신경써도 괜찮고
- 포맷에 조금 덜 신경써도 되는 방식
을 의미한다.
Sub워크플로우를 위해서는 워크플로우 시작노드를 'When Executed by Another Workflow'로 설정한다. 그리고 다른 워크플로우를 통해 값을 받았다고 가정하고, 그 값을 기반으로 후속 워크플로우를 구성한다.
이렇게 생성된 Workflow는 아래 두 가지 방식으로 호출하여 사용 가능하다.
(방법1) 이후 완전히 새로운 워크플로우를 하나 열어서, 이미 만들어 놓은 Sub워크플로우를 호출해본다. 호출하는 방법은 'Execute A Sub Workflow' 노드를 추가함으로써 호출 가능하다.
(방법2) 새로운 워크플로우의 AI Agent - Tool 부분에 Call n8n workflow tool 노드를 추가하고, 이미 생성된 Sub 워크플로우의 이름을 추가하는 것이다.
방법2로 진행하게 되면 Agent가 Sub Agent를 활용하는 방식으로 워크플로우가 동작하게 되며, AWS Bedrock의 멀티 에이전트 오케스트레이션과 유사한 방식으로 Agent 간 협업 모델을 만들 수 있다.
10) 11강. "우리 팀" - Workflow 와 Webhook 활용
n8n으로 DB에 접근하여 자동으로 쿼리하는 방식을 배운다.
n8n으로 DB에 접근하여 자동으로 쿼리하는 방식을 배운다.
우선 단순하게 DB를 구성하기 위해서 supabase.com 계정을 생성한다. 예시가 될 DB를 csv 파일로 다운로드 받아서 import 시킨다. (강의에서는 국토교통부 주택 실거래가 데이터를 import했다.)
이렇게 csv파일이 DB화 되었다. 생성된 DB는 Supabase의 SQL Editor를 활용하여 활용할 수 있고, SQL 쿼리를 작성하는 것은, 설령 SQL을 다루지 못하는 나 같은 사람이라도, LLM의 도움을 통해 원하는 결과물을 얻을 수 있다.
여기서 흥미로운 사실은, 사용자가 DB를 통해 추출하려는 데이터들을 '자연어' 기반으로 챗봇 등에 입력하기만 하면, 워크플로우에 연결된 LLM 노드가 해당 자연어를 기반으로 SQL쿼리를 생성하고, 이렇게 생성된 쿼리를 Supabase의 DB에 활용(이때 Supabase 노드가 아니라, PostgreSQL 노드를 생성 필요)하여 원하는 값을 원하는 양식으로 출력할 수 있다는 것이다. 아래 캡쳐와 같이 Query를 매개로 하여 DB에 접근하도록 할 수 있다.
강의 내용에서는, 일련의 과정을 두 개의 워크플로우로 나누어 구현했다.
(1번) 챗봇으로 자연어 명령 받고 SQL 쿼리를 생성하는 워크플로우
(2번) 1번이 생성한 SQL코드를 받아 (시작 노드 = When Executed by Another Workflow), PostgreSQL에 접속하여 값을 도출하고 반환하는 워크플로우
1번 워크플로우에 있는 AI Agent(LLM)의 Tool 부분에 'Call n8n Workflow Tool' 노드를 추가함으로써 2번 워크플로우를 Call하도록 할 수 있다. 이렇듯 별도의 워크플로우를 AI Agent의 Tool로 구성함으로써 만일 2번 워크플로우를 통해 오류 메시지를 반환 받더라도, 1번 AI Agent가 스스로 자신이 생성한 SQL 쿼리를 재조정할 수 있도록 한 부분도 무척 흥미로웠다.
11) 12강. "우리 팀 지식창고 구축" - 벡터 임베딩 실습
벡터 임베딩은 두번째 Bedrock 강의를 통해서도 배웠던 부분이다. 그러나 이번 강의를 통해서 Vector embedding이 무엇이고, 프롬프트 기반 LLM과 RAG 기반 LLM 간에 어떤 차이가 있는지 더 상세히 배울 수 있었다.
먼저 벡터 임베딩은 말그대로 n차원의 벡터 좌표들 안에, 문서 내에 있는 chunk들을 의미도에 따라 매핑하는 것이다. 예를 들어, 강의에서 선택한 차원의 숫자가 3000개 정도였는데, 이렇게 보면 (정밀도를 어떻게 설정하는가에 따라 다르겠으나, 소수점 이하 4자리까지로 가정한다면) 3000차원이 가질 수 있는 전체 경우의 수는 20,001³⁰⁰⁰ 개가 된다. 따라서 각 chunk의 의미적 유사도에 따라 매핑된 좌표가 생성되는 것이다.
강의에서는 Pinecone이라는 서비스를 통해서 특정 문서를 벡터 임베딩한다. 워크플로우에서 Pinecone Vector Store 라는 노드를 생성한다. (Add documents to vector store 항목을 선택) 앞단에 임베딩할 문서를 Google Drive 상에서 다운로드 받도록 설정하였다.
이러한 RAG 활용은 Pinecone과 같은 별도의 벡터 임베딩 작업이 없이도, 구글의 NotebookLM 서비스를 통해 간단히 경험할 수 있다. 일반적인 프롬프트 기반의 LLM이, 자신이 웹페이지에서 필요한 정보를 검색하고 그에 대해 생성하는 방식을 취하는 데 반하여, NotebookLM의 경우 사용자가 직접 원하는 문서를 아래 캡쳐와 같이 출처에 업로드하여, 해당 문서들을 직접 검색할 수 있도록 한다.
강사님은 벡터 임베딩의 가능성에 대해 엄청난 강조를 하셨는데, 대략 어떤 느낌으로 말씀하셨는지는 대략 알겠으나 그 가치를 제대로 체험하고 느껴보진 못한 상태다. 이후에 실제 toy project를 구현하는 과정에서 Pinecone 서비스를 활용하여 벡터 임베딩의 무한한 가능성을 느껴보고 싶다.
댓글
댓글 쓰기