|
| 1 | +# XGEN 2.0 AI 플랫폼 지식 베이스 |
| 2 | + |
| 3 | +## 1. 플랫폼 개요 |
| 4 | + |
| 5 | +XGEN은 **노코드 AI 워크플로우 빌더 플랫폼**이다. 캔버스에서 노드를 배치/연결하여 AI 파이프라인을 구성하고, RAG(문서 검색), LLM, 외부 API/MCP, 웹 자동화(RPA)를 조합해 실행한다. |
| 6 | + |
| 7 | +**MSA 구조 (8개 서비스)**: |
| 8 | +- **xgen-backend-gateway** (Rust/Axum) — JWT 인증 + 리버스 프록시 |
| 9 | +- **xgen-core** (Python/FastAPI) — 사용자/그룹/설정/DB 관리, LLM 프로바이더 |
| 10 | +- **xgen-workflow** (Python/FastAPI) — 워크플로우 편집/실행/배포/스케줄, 노드 엔진 |
| 11 | +- **xgen-documents** (Python/FastAPI) — 문서 처리/임베딩/벡터DB/RAG 검색 |
| 12 | +- **xgen-model** (Python/FastAPI) — GPU 감지, 모델 다운로드/로드/서빙 (vLLM/llama.cpp) |
| 13 | +- **xgen-mcp-station** (Python/FastAPI) — MCP 서버 세션 격리 관리 |
| 14 | +- **xgen-session-station** (Python/FastAPI) — 외부 서비스 인증 프로필 |
| 15 | +- **xgen-cli** (Python/Textual) — 터미널 AI 어시스턴트 |
| 16 | + |
| 17 | +**인프라**: PostgreSQL, Redis, Qdrant(벡터DB), MinIO(오브젝트 스토리지), K3s |
| 18 | + |
| 19 | +--- |
| 20 | + |
| 21 | +## 2. 페이지 구조 |
| 22 | + |
| 23 | +| 경로 | 기능 | |
| 24 | +|------|------| |
| 25 | +| `/login` | 로그인 | |
| 26 | +| `/signup` | 회원가입 | |
| 27 | +| `/main?view=main-dashboard` | 메인 대시보드 | |
| 28 | +| `/main?view=workflows` | 완성된 워크플로우 목록 | |
| 29 | +| `/main?view=new-chat` | 새 채팅 | |
| 30 | +| `/main?view=chat-history` | 채팅 기록 | |
| 31 | +| `/main?view=documents` | 지식 컬렉션 (문서/벡터DB) | |
| 32 | +| `/main?view=tool-storage` | 도구 저장소 (커스텀 API 툴) | |
| 33 | +| `/main?view=auth-profile` | 인증 프로필 관리 | |
| 34 | +| `/main?view=prompt-store` | 프롬프트 저장소 | |
| 35 | +| `/main?view=service-request` | 업무 요청 | |
| 36 | +| `/canvas` | 워크플로우 캔버스 편집기 (새 캔버스) | |
| 37 | +| `/canvas?load=이름` | 기존 워크플로우 편집 | |
| 38 | +| `/admin?view=dashboard` | 관리자 대시보드 | |
| 39 | +| `/modelOps?view=train-monitor` | 모델 모니터링 | |
| 40 | +| `/scenario-recorder` | 웹 자동화 시나리오 녹화 | |
| 41 | +| `/agent` | 로컬 AI 에이전트 | |
| 42 | + |
| 43 | +--- |
| 44 | + |
| 45 | +## 3. 핵심 개념 |
| 46 | + |
| 47 | +### Workflow (워크플로우) |
| 48 | +캔버스에서 노드+엣지로 구성하는 AI 파이프라인. CRUD → 실행 → 배포 → 스케줄. |
| 49 | + |
| 50 | +### Node (노드) |
| 51 | +워크플로우의 개별 처리 단위. 플랫폼 빌트인 (약 50종). 입력/출력 포트로 연결. |
| 52 | + |
| 53 | +### Edge (엣지) |
| 54 | +두 노드의 포트를 연결하는 데이터 흐름. 포트 타입이 호환되어야 연결 가능. |
| 55 | + |
| 56 | +### Collection (컬렉션) |
| 57 | +벡터DB의 문서 컬렉션. 문서 업로드 → 청킹 → 임베딩 → RAG 검색. |
| 58 | + |
| 59 | +### Tool (도구) |
| 60 | +외부 API를 XGEN에서 사용할 수 있도록 등록한 HTTP 호출 정의. |
| 61 | + |
| 62 | +### MCP (Model Context Protocol) |
| 63 | +외부 도구 서버와의 표준 통신 프로토콜. 세션 기반 프로세스 관리. |
| 64 | + |
| 65 | +### Agent (에이전트) |
| 66 | +워크플로우 내에서 자율적으로 도구를 사용하는 AI 노드. LLM + 도구 조합. |
| 67 | + |
| 68 | +### Schedule (스케줄) |
| 69 | +워크플로우 자동 실행 예약. cron/interval/daily/weekly. |
| 70 | + |
| 71 | +### Trace (트레이스) |
| 72 | +워크플로우 실행의 노드별 상세 추적 기록. |
| 73 | + |
| 74 | +### Interaction (인터랙션) |
| 75 | +사용자와 워크플로우 간의 대화 세션. 멀티턴 지원. |
| 76 | + |
| 77 | +--- |
| 78 | + |
| 79 | +## 4. 노드 카테고리 |
| 80 | + |
| 81 | +### Agent (에이전트) — 3종 |
| 82 | +| 노드 | 역할 | |
| 83 | +|------|------| |
| 84 | +| Agent Xgen (`agents/xgen`) | 통합 AI 에이전트. 도구+메모리+RAG 활용 | |
| 85 | +| Agent Xgen ReAct | ReAct 방식 반복 도구 호출 | |
| 86 | +| Agent Lotte | LotteGPT 전용 | |
| 87 | + |
| 88 | +핵심 파라미터: provider, model, temperature, max_tokens, default_prompt, streaming, max_iterations |
| 89 | + |
| 90 | +### MCP 도구 — 17종 |
| 91 | +Brave Search, Tavily, GitHub, GitLab, Atlassian, Slack, MS365, PostgreSQL, Naver News/Datalab, Product Search, Web Automation 등. 출력: TOOL 타입 → Agent의 tools 입력에 연결. |
| 92 | + |
| 93 | +### Document Loader (RAG) — 5종 |
| 94 | +| 노드 | 역할 | |
| 95 | +|------|------| |
| 96 | +| Qdrant Search | RAG 설정 (컬렉션/top_k/score_threshold/rerank) | |
| 97 | +| Retrieval Tool (Hard/Light/Light+) | 벡터DB 검색을 Agent Tool로 변환 | |
| 98 | +| Tool Selector | 여러 검색 도구 중 선택 | |
| 99 | + |
| 100 | +핵심 파라미터: collection_name, top_k, score_threshold, enable_rerank |
| 101 | + |
| 102 | +### Memory — 3종 |
| 103 | +DB Memory V1/V2/V3. 대화 기록 관리. V3는 불확실성/정정/할루시네이션 감지 스코어링 포함. |
| 104 | + |
| 105 | +### Input (시작 노드) — 4종 |
| 106 | +Input String, Input Integer, Input Files, Image Loader. 워크플로우 진입점. |
| 107 | + |
| 108 | +### Output (종료 노드) — 4종 |
| 109 | +Print Any, Print Any (Stream), Print Agent Output, Print Format. 워크플로우 종료 필수. |
| 110 | + |
| 111 | +### Router — 2종 |
| 112 | +Router (Dict 키 기반 조건부 분기), A2A Router (Agent 간 연결). |
| 113 | + |
| 114 | +### 기타 |
| 115 | +Input Template (Jinja2), JSON Provider, Schema Provider (Input/Output), Workflow Tool (서브워크플로우), Send Email, API Tool Loader, FileSystem Storage, Math (Add/Subtract/Multiply). |
| 116 | + |
| 117 | +--- |
| 118 | + |
| 119 | +## 5. 워크플로우 구성 패턴 |
| 120 | + |
| 121 | +### 패턴 1: 기본 RAG 채팅 |
| 122 | +``` |
| 123 | +[Input String] → [Agent Xgen] → [Print Any (Stream)] |
| 124 | + ↑ |
| 125 | + [Qdrant Search] (RAG) |
| 126 | + [DB Memory V2] (Memory) |
| 127 | +``` |
| 128 | + |
| 129 | +### 패턴 2: 멀티 도구 에이전트 |
| 130 | +``` |
| 131 | +[Input String] → [Agent Xgen] → [Print Any (Stream)] |
| 132 | + ↑ |
| 133 | + [Brave Search MCP] + [Slack MCP] + [PostgreSQL MCP] |
| 134 | +``` |
| 135 | + |
| 136 | +### 패턴 3: 조건부 분기 |
| 137 | +``` |
| 138 | +[Agent] → [Router] → 출력A → [Agent A] → [Print Any] |
| 139 | + → 출력B → [Agent B] → [Print Any] |
| 140 | +``` |
| 141 | + |
| 142 | +### 패턴 4: 구조화된 입출력 |
| 143 | +``` |
| 144 | +[Schema Provider (Input)] → [Input String] → [Agent] → [Print Any] |
| 145 | + ↑ |
| 146 | + [Schema Provider (Output)] |
| 147 | +``` |
| 148 | + |
| 149 | +--- |
| 150 | + |
| 151 | +## 6. 주요 API 워크플로우 |
| 152 | + |
| 153 | +### 워크플로우 관리 |
| 154 | +- `GET /api/workflow/list` — 목록 조회 |
| 155 | +- `GET /api/workflow/load/{id}` — 워크플로우 로드 |
| 156 | +- `POST /api/workflow/save` — 저장 |
| 157 | +- `POST /api/workflow/execute/based_id/stream` — SSE 스트리밍 실행 |
| 158 | +- `POST /api/workflow/deploy/update/{id}` — 배포 |
| 159 | + |
| 160 | +### RAG/문서 관리 |
| 161 | +- `POST /api/retrieval/collections` — 컬렉션 생성 |
| 162 | +- `POST /api/retrieval/documents/upload-sse` — 문서 인덱싱 (SSE) |
| 163 | +- `POST /api/retrieval/documents/search` — 검색 |
| 164 | +- `GET /api/retrieval/collections` — 컬렉션 목록 |
| 165 | + |
| 166 | +### 노드 |
| 167 | +- `GET /api/node/get` — 전체 노드 목록 |
| 168 | +- `GET /api/node/categories` — 카테고리 목록 |
| 169 | +- `GET /api/node/detail?node_id=X` — 노드 상세 |
| 170 | + |
| 171 | +### 시스템 |
| 172 | +- `GET /api/llm/status` — LLM 프로바이더 상태 |
| 173 | +- `GET /api/admin/system/status` — 시스템 상태 (CPU/GPU/메모리) |
| 174 | +- `GET /api/config/status` — 설정 상태 |
| 175 | + |
| 176 | +--- |
| 177 | + |
| 178 | +## 7. AI 어시스턴트 행동 규칙 |
| 179 | + |
| 180 | +### 언제 API를 호출하는가 |
| 181 | +- "목록 보여줘", "상태 알려줘" → `search_tools` → `call_tool`로 데이터 조회 → 텍스트로 정리해서 응답 |
| 182 | +- "열어줘", "페이지 이동" → `navigate`로 해당 페이지 이동 |
| 183 | + |
| 184 | +### 언제 캔버스를 조작하는가 |
| 185 | +- "노드 추가해줘", "연결해줘", "파라미터 바꿔줘" → `canvas_*` tool 사용 |
| 186 | +- 캔버스 페이지(`/canvas`)에 있을 때만 동작 |
| 187 | + |
| 188 | +### navigate를 쓰는 경우 |
| 189 | +- 사용자가 **명시적으로** 페이지 이동을 요청할 때만 |
| 190 | +- "워크플로우 목록 보여줘"는 navigate가 아니라 API 호출 |
| 191 | +- "워크플로우 페이지로 이동해" → navigate |
| 192 | + |
| 193 | +### 검색 쿼리 작성 규칙 |
| 194 | +- 항상 **영문** 키워드 사용 (graph-tool-call은 영문 검색이 정확) |
| 195 | +- 한국어 요청 → 영문 변환: "워크플로우 실행" → "execute workflow" |
| 196 | +- 구체적 키워드: "list", "create", "execute", "delete", "schedule", "status" |
| 197 | + |
| 198 | +### 응답 규칙 |
| 199 | +- 한국어로 간결하게 |
| 200 | +- JSON 원본을 그대로 보여주지 않고 핵심만 정리 |
| 201 | +- 캔버스 조작 시 어떤 변경이 이루어졌는지 요약 |
0 commit comments