
n8n과 LangChain으로 AI 워크플로우 구축하기
n8n과 LangChain을 함께 사용하면 대부분의 팀이 결국 마주치는 문제를 해결할 수 있습니다. 즉, 실제 데이터에 연결되고 실제 작업을 트리거하는 AI 에이전트를 원하지만, Python에서 LangChain을 연결하려면 전체 애플리케이션 스택을 유지해야 한다는 문제입니다. n8n의 네이티브 LangChain 노드를 사용하면 에이전트, 체인, 메모리, 벡터 스토어를 시각적 워크플로우에 드래그 앤 드롭으로 추가한 후, SDK 코드를 작성하지 않고도 400개 이상의 통합 서비스에 연결할 수 있습니다.
제공되는 기능: n8n의 LangChain 노드 라이브러리
n8n은 LangChain 개념을 시각적 빌딩 블록으로 구현한 70개 이상의 AI 노드를 제공합니다. Python에서 langchain을 임포트하고 모듈을 연결하는 대신, 캔버스에서 노드를 연결합니다. 전체 구조는 다음과 같습니다:
이 아키텍처는 n8n이 클러스터 노드라고 부르는 것을 사용합니다. 루트 노드(예: AI Agent)가 그 기능을 확장하는 서브 노드(채팅 모델, 메모리, 도구)에 연결됩니다. LangChain의 모듈 시스템을 생각하면 되는데, 시각적이라는 점이 다릅니다.
n8n이 LangChain 개념과 매핑되는 방식
LangChain을 코드로 사용해본 적이 있다면, n8n의 매핑은 간단명료합니다:
중요한 차이점은 무엇일까요? 코드에서는 이들을 연결하기 위해 50~100줄을 작성해야 합니다. n8n에서는 캔버스에서 4~6개의 노드를 연결하고 드롭다운 메뉴를 통해 구성합니다.
문서 Q&A 파이프라인 구축(RAG)
실제로 뭔가를 구축해봅시다. 이 워크플로우는 PDF 문서를 수집하고 벡터 데이터베이스에 저장한 다음 콘텐츠에 대한 질문에 답변합니다. 이것은 클래식 RAG(검색 증강 생성) 패턴으로, 비즈니스 팀에게 가장 유용한 LangChain 워크플로우입니다.
1단계: 데이터 수집 워크플로우 설정
새 워크플로우를 생성하여 문서를 로드합니다. 새로운 문서를 추가해야 할 때마다 한 번씩 실행합니다.
추가할 노드:
- Manual Trigger - 클릭하여 수집 실행
- Google Drive 노드 (또는 HTTP Request, Read Binary File) - 소스 문서 가져오기
- Simple Vector Store - 작업을 Insert Documents로 설정
- OpenAI Embeddings 서브 노드 - 벡터 스토어에 연결, 텍스트를 벡터로 변환
- Default Data Loader 서브 노드 - 문서 콘텐츠를 청크로 파싱
- Recursive Character Text Splitter 서브 노드 - 콘텐츠를 50개 토큰의 오버랩으로 약 500개 토큰 청크로 분할
Vector Store의 구성 세부사항:
- Operation: Insert Documents
- Memory Key: company-docs처럼 설명적인 이름 지정 (나중에 참조할 때 사용)
- Data Loader는 서브 노드로 연결되고 PDF/텍스트 파싱을 자동으로 처리합니다
Text Splitter의 구성:
- Chunk Size: 500 (토큰)
- Chunk Overlap: 50 (경계에서 컨텍스트 손실 방지)
- Split method: Recursive Character (Markdown, HTML, 순수 텍스트를 지능적으로 처리)
2단계: Q&A 에이전트 워크플로우 구축
이제 두 번째 워크플로우를 만듭니다. 이것이 사용자가 상호작용하는 워크플로우입니다.
추가할 노드:
- Chat Trigger - 질문에 대한 채팅 인터페이스 제공
- AI Agent (Tools Agent 유형) - 어떻게 할지 결정하는 핵심 엔진
- OpenAI Chat Model 서브 노드 - GPT-4o 또는 GPT-4o-mini 연결
- Simple Memory 서브 노드 - 대화 컨텍스트 기억
- Vector Store Tool 서브 노드 - 에이전트에게 문서에 대한 접근 권한 제공
AI Agent 노드의 구성:
- Agent Type: Tools Agent (가장 유연한 옵션, 도구 사용 시기와 방법을 결정)
- System Prompt: You are a helpful assistant that answers questions based on our company documents. Always cite which document you found the answer in. If the information isn't in the documents, say so clearly.
Vector Store Tool의 구성:
- Name: search_documents
- Description: Search the company knowledge base for relevant information. Use this tool when the user asks about company policies, procedures, or documentation.
- Vector Store: Simple Vector Store 선택
- Embedding model: 수집 중에 사용한 동일한 OpenAI Embeddings 모델
- Top K: 4 (검색할 관련 청크의 개수)
이 설명이 생각하는 것보다 훨씬 중요합니다. 에이전트가 이를 사용하여 도구를 호출할지 아니면 자체 지식으로 답변할지 결정합니다. 구체적으로 작성하세요.
3단계: 테스트 및 개선
하단 패널에서 Chat을 클릭하여 n8n의 내장 채팅 인터페이스를 엽니다. 문서에 대해 질문을 해보세요. 실행 추적을 지켜보면, n8n은 어떤 노드가 실행되었는지, 에이전트의 추론이 무엇인지, 어떤 문서 청크가 검색되었는지 정확히 보여줍니다.
이 단계에서의 일반적인 문제:
- 에이전트가 도구를 사용하지 않음 - 도구 설명이 너무 모호합니다. 도구에 포함된 지식이 무엇인지 구체적으로 작성하세요.
- 관련 없는 청크 검색 - 청크 오버랩을 늘리거나 청크 크기를 줄이세요. 300개 토큰, 100개 오버랩을 시도해보세요.
- 느린 응답 - 채팅 모델을 GPT-4o-mini로 전환하세요. 대부분의 Q&A 작업에는 충분히 빠르고 10배 저렴합니다.
도구 호출 에이전트 구축
위의 Q&A 파이프라인은 문서에 적합합니다. 하지만 웹을 검색하고, 계산을 실행하고, 데이터베이스를 쿼리하고, 문서에서 답변할 수 있는 에이전트는 어떨까요? 바로 여기서 Tools Agent가 정말 빛을 발합니다.
워크플로우 설정
- Chat Trigger - 사용자 입력
- AI Agent (Tools Agent) - 올바른 도구로 라우팅
- OpenAI Chat Model - 복잡한 추론을 위한 GPT-4o
- Simple Memory - 대화 기록
- 연결된 여러 도구:
- SerpAPI Tool - 웹 검색 기능
- Calculator Tool - 수학 연산
- Vector Store Tool - 문서 기반 지식
- Custom Code Tool - 작성한 모든 JavaScript 함수
- Workflow Tool - n8n 워크플로우를 도구로 트리거
Workflow Tool은 n8n의 비장의 무기입니다. 모든 n8n 워크플로우를 에이전트가 호출할 수 있는 도구로 래핑할 수 있습니다. 재고를 확인하는 워크플로우가 있습니까? 도구로 만드세요. Slack 메시지를 보내는 것입니까? 도구입니다. CRM을 쿼리하는 것입니까? 도구입니다. 이것이 바로 n8n의 400개 이상의 통합 노드가 AI 에이전트에게 제공되는 지점입니다.
멀티 도구 에이전트의 시스템 프롬프트
시스템 프롬프트는 에이전트에게 그 기능에 대해 알려야 합니다:
이 프롬프트 패턴은 에이전트가 도구 간에 어떻게 라우팅하는지를 직접 제어합니다. 모호한 프롬프트는 에이전트가 먼저 문서를 확인해야 할 때 웹 검색을 사용하게 합니다.
올바른 에이전트 유형 선택
n8n은 6가지 에이전트 유형을 제공합니다. 각각 언제 선택해야 하는지는 다음과 같습니다:
대부분의 팀에게는 Tools Agent가 올바른 시작점입니다. 멀티 도구 라우팅을 잘 처리하고, 모든 LLM 공급자와 작동하며, 나중에 언제든지 전환할 수 있습니다. 이것을 LangGraph나 CrewAI와 같은 프레임워크를 사용하여 코드에서 에이전트를 구축하는 것과 비교한다면, 여기서의 이점은 배포 오버헤드가 없다는 것입니다. 에이전트는 n8n의 인프라 내에서 실행됩니다.
지속되는 메모리 추가
기본적으로 Simple Memory 서브 노드는 메모리에 대화 기록을 유지하며, 워크플로우가 다시 시작되면 사라집니다. 프로덕션 사용을 위해서는 지속되는 메모리가 필요합니다.
옵션:
Zep는 긴 대화 기록으로 뭔가를 구축하는 경우 주목할 가치가 있습니다. 이전 메시지를 자동으로 요약하므로 에이전트가 대화의 50번째 차례에 컨텍스트 윈도우를 소진하지 않습니다.
지속되는 메모리를 추가하려면 Simple Memory 서브 노드를 Redis/Postgres/Zep으로 바꾸기만 하면 됩니다. 나머지 워크플로우는 동일합니다.
다른 LLM 공급자에 연결
LLM이 필요한 모든 루트 노드는 Chat Model 서브 노드를 허용합니다. 공급자를 전환하는 것은 한 노드만 변경하면 됩니다:
로컬 개발 및 테스트를 위해 Ollama는 비용이 들지 않는 옵션입니다. 머신에서 모델을 실행하고 n8n을 localhost:11434에 연결하세요. 프로덕션의 경우, 대부분의 팀은 작업에 따라 OpenAI 또는 Anthropic을 사용합니다.
실제 워크플로우 레시피
다음은 30분 이내에 구축할 수 있는 프로덕션 준비 패턴 3가지입니다:
레시피 1: 자동화된 지원 티켓 분류
- Trigger: 새 이메일 도착 (Gmail/Outlook 노드)
- Chain: 분류 프롬프트가 있는 기본 LLM 체인
- Output: 카테고리에 따라 다양한 Slack 채널로 라우팅
...