왜 Flowise가 LangChain 에코시스템의 빠진 연결 고리인가
Source: Dev.to
Introduction
우리는 모두 그런 경험을 해봤습니다. AI 에이전트를 위한 완벽한 아키텍처 다이어그램—감독자, 특화된 작업자, 공유 메모리—을 그려놓고 IDE를 열면 보일러플레이트, 파이썬 의존성, LangGraph 상태‑그래프 디버깅, OAuth 콜백에 빠져버리는 것이죠. 서사는 구문 속에 묻혀버립니다.
생성 AI 세계에서는 “오케스트레이션 오버헤드”에 대한 피로도가 커지고 있습니다. 파이프라인을 구성하는 데에 지능을 다듬는 시간보다 더 많은 시간을 쓰게 됩니다.
여기에 Flowise가 등장합니다.
Flowise는 취미용 “노‑코드” 장난감이 아니라, 원시 LangChain/LangGraph 라이브러리 위에 얹힌 시각적 드래그‑앤‑드롭 인터페이스입니다. 복잡한 RAG 파이프라인, 멀티‑에이전트 시스템, 도구를 활용하는 “Dual Agents”를 구축하면서도 맞춤형 JavaScript와 헤드리스 벡터 연결을 허용합니다. 순수 코드‑우선 환경의 인지 부하 없이 프로덕션 수준 에이전트를 프로토타이핑하고 싶다면, Flowise는 이해해야 할 프레임워크입니다.
Why Does the LangChain Ecosystem Need a Visual Interface?
Flowise의 가치를 보려면 현재 계층 구조를 살펴보세요:
- LangChain – 채팅 흐름 및 간단한 자동화를 위한 라이브러리.
- LangGraph – 자율 에이전트를 위한 상태 기반, 순환 연산을 추가.
- LangSmith – 평가 및 트레이싱.
LangChain과 LangGraph는 강력하지만, Model Context Protocol (MCP) 을 코드에 직접 통합하는 것은 기술적으로 무겁고, 어댑터와 깊은 전문 지식이 필요합니다. Flowise는 기능을 빼앗지 않으면서 이 복잡성을 추상화합니다. Node.js 위에서 실행되며 로직을 시각화하고, 백그라운드에서는 기본 LangChain 코드를 실행해 아키텍처 의도와 실행을 연결합니다.
The Setup: A Local‑First Approach
보안과 속도를 위해 개발은 로컬에서 진행되어야 합니다. 나중에 클라우드(예: Render)로 배포하더라도 말이죠.
-
Node version – Node 20.16을 사용하세요. 최신 버전은 일부 의존성에서 불안정성을 일으킬 수 있습니다.
nvm으로 버전을 관리합니다. -
Installation – 전역 설치:
npm install -g flowise -
Execution – 서버 시작:
npx flowise startUI는
http://localhost:3000에서 열립니다. 터미널을 닫으면 서버가 중지됩니다. -
Maintenance – Flowise를 최신 상태로 유지:
npm update -g flowise
The Dual Agent Framework: From Chatbot to Operator
오늘날 Flowise에서 가장 견고한 패턴은 Dual Agent이며, 이는 추론 엔진과 실행 능력을 분리합니다.
1. The Brain (The Chat Model)
Dual Agent는 Function Calling (Tool Calling) 을 지원하는 모델이 필요합니다. 이 기능이 없는 모델은 행동을 환상으로 만들어 버립니다. OpenRouter를 통해 접근할 수 있는 권장 모델은 다음과 같습니다:
- Claude 3.7 Sonnet
- Google Gemini Pro
OpenRouter는 백엔드를 코드 수정 없이 교체할 수 있게 해 주며, 모델 선택을 위한 순위 메트릭도 제공합니다.
2. The Context (Memory)
메모리 노드—예: Buffer Window Memory—를 연결해 에이전트가 이전 턴을 기억하도록 합니다. “k” 값(예: k=20)을 설정해 얼마나 많은 과거 상호작용을 보관할지 조절합니다. 값이 너무 낮으면 기억 상실, 너무 높으면 관련 없는 히스토리에 토큰을 낭비합니다.
3. The Hands (Tools & MCP)
에이전트가 관련 의도를 감지했을 때 호출할 Tools를 연결합니다.
- Standard Tools – Calculator나 Brave Search API 같은 단일 목적 함수. 예: 비트코인 가격을 물어보면 검색을 수행하고 값을 가져와 답을 합성합니다.
- Model Context Protocol (MCP) – 더 풍부한 액션‑레벨 제어를 제공합니다.
예시: Brave Search MCP는local_search(비즈니스)와web_search(일반 정보) 같은 하위 액션을 노출합니다. 에이전트는 상황에 맞는 하위 액션을 동적으로 선택해 보다 세밀한 워크플로를 구현합니다.
The Integration Paradox: Solving “Auth Hell” with Compose.io
여러 서비스(Google Calendar, Slack, Notion 등) 간 인증은 전통적으로 별도의 OAuth 클라이언트와 토큰 관리가 필요했습니다. Flowise는 Compose.io와 네이티브하게 통합돼 인증을 중앙화합니다.
- Compose.io에 한 번 인증(대시보드에서 Google, Slack 등 연결).
- Compose.io가 Flowise에서 사용할 단일 API 키를 제공합니다.
- 캔버스에 Compose.io 도구를 끌어다 놓고 원하는 앱과 액션을 선택합니다(예: Google Calendar의
create_event).
{
"tool": "compose_io",
"action": "google_calendar.create_event",
"parameters": {
"title": "Team Sync",
"start_time": "2025-12-15T10:00:00Z",
"duration_minutes": 60
}
}
이렇게 하면 MCP와 유사한 동작이 생성됩니다: 에이전트가 현재 날짜를 가져오고, 캘린더 가용성을 조회한 뒤, 자연어 프롬프트만으로 일정을 잡을 수 있습니다.
Data Persistence: The “Document Store” RAG Architecture
RAG(검색‑증강 생성)는 에이전트에 지식을 제공합니다. Flowise는 지식 수집과 지식 검색을 Document Stores를 통해 분리해 정적 자산(PDF 등)의 반복 처리를 방지합니다.
The Ingestion Pipeline
새 Document Store 흐름을 만들고 세 단계를 설정합니다:
- Loaders – 원시 데이터(PDF, 텍스트 파일, Cheerio 또는 Firecrawl 같은 웹 스크래퍼, API 로더)를 가져옵니다.
Metadata Strategy: 로드 시 키‑값 메타데이터(예: source type, author)를 삽입해 나중에 정확한 인용이 가능하도록 합니다. - Splitters – 원시 텍스트를 청크로 나눕니다. PDF의 경우 Recursive Character Text Splitter가 컨텍스트를 유지하면서 관리 가능한 청크를 생성하는 데 유용합니다.
- Vector Store – 청크를 임베딩 모델로 벡터화하고, Pinecone, Qdrant 또는 로컬 Chroma 인스턴스와 같은 벡터 데이터베이스에 저장합니다.
Document Store가 채워지면 Retriever 노드가 추론 시 관련 청크를 가져와 최신의, 출처가 명시된 정보를 기반으로 질문에 답할 수 있게 됩니다.