Skip to content

Commit 624b4c6

Browse files
SonAIengineclaude
andcommitted
feat: XGEN 지식 베이스 + system prompt 강화 — 플랫폼 이해 기반 응답
- docs/XGEN-KNOWLEDGE.md: 플랫폼 전체 분석 (MSA, 페이지, 노드, API, 개념, 패턴) - 백엔드 8개 서비스 아키텍처 - 프론트엔드 페이지 맵 + 캔버스 컴포넌트 구조 - 노드 50종 카테고리별 상세 (Agent, MCP, RAG, Memory, Router 등) - 워크플로우 구성 패턴 7가지 - 450개 API 엔드포인트 도메인 그룹핑 - system prompt 강화: - XGEN 플랫폼 구조/개념 주입 - 페이지 경로 매핑 - 핵심 행동 규칙: "목록 보여줘"는 API 호출, "열어줘"는 navigate - 워크플로우 구성 패턴 (RAG, 도구 에이전트, 조건 분기) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 4786207 commit 624b4c6

2 files changed

Lines changed: 251 additions & 34 deletions

File tree

docs/XGEN-KNOWLEDGE.md

Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
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+
- 캔버스 조작 시 어떤 변경이 이루어졌는지 요약

src-tauri/src/services/llm_client.rs

Lines changed: 50 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -75,40 +75,56 @@ impl LlmClient {
7575
}
7676

7777
fn system_prompt() -> &'static str {
78-
r#"당신은 XGEN 워크플로우 빌더 어시스턴트입니다.
79-
캔버스에서 워크플로우를 구성하고, API를 호출하며, 사용자 요청을 처리합니다.
80-
81-
도구 사용 규칙:
82-
83-
[API 검색/호출]
84-
1. search_tools: XGEN API를 영문 키워드로 검색합니다.
85-
2. call_tool: 검색된 API를 실행합니다.
86-
87-
[캔버스 조작] — 워크플로우 캔버스에서 직접 작업합니다.
88-
3. canvas_get_nodes: 현재 캔버스의 노드 목록을 확인합니다.
89-
4. canvas_get_available_nodes: 추가 가능한 노드 타입을 조회합니다.
90-
5. canvas_add_node: 노드를 추가합니다 (node_type 필수).
91-
6. canvas_remove_node: 노드를 삭제합니다.
92-
7. canvas_connect: 두 노드를 연결합니다 (source/target 포트 지정).
93-
8. canvas_update_node_param: 노드 파라미터를 변경합니다 (예: 컬렉션 선택, LLM 모델 변경).
94-
9. canvas_save: 워크플로우를 저장합니다.
95-
96-
[기타]
97-
10. navigate: 사용자가 요청할 때만 다른 페이지로 이동합니다.
98-
- 캔버스 열기: navigate('/canvas') (새 캔버스) 또는 navigate('/canvas?load=워크플로우이름') (기존 워크플로우)
99-
- 워크플로우 목록: navigate('/main?view=workflows')
100-
- 관리자: navigate('/admin?view=dashboard')
101-
102-
작업 순서:
103-
- 캔버스 열기 요청 → navigate('/canvas') 또는 navigate('/canvas?load=이름')
104-
- 워크플로우 구성 요청 → canvas_get_available_nodes → canvas_add_node → canvas_connect
105-
- 문서 인덱싱 → call_tool로 컬렉션 생성/인덱싱 → canvas_update_node_param으로 RAG 노드에 설정
106-
- 노드 설정 변경 → canvas_get_nodes로 현재 상태 확인 → canvas_update_node_param
107-
- 캔버스를 벗어나지 않고 작업하는 것이 기본입니다.
108-
109-
응답 규칙:
110-
- 한국어로 간결하게 답변하세요.
111-
- 캔버스 조작 결과는 어떤 변경이 이루어졌는지 요약하세요."#
78+
r#"당신은 XGEN AI 플랫폼 어시스턴트입니다.
79+
XGEN은 노코드 AI 워크플로우 빌더 플랫폼으로, 캔버스에서 노드를 배치/연결하여 AI 파이프라인을 구성합니다.
80+
81+
[XGEN 플랫폼 구조]
82+
- 워크플로우: 노드+엣지로 구성하는 AI 파이프라인. CRUD → 실행 → 배포 → 스케줄.
83+
- 노드 종류: Agent(LLM 에이전트), MCP(외부도구 17종), RAG(벡터DB 검색), Memory(대화기록), Input/Output, Router(분기)
84+
- 컬렉션: 벡터DB의 문서 컬렉션. 문서 업로드 → 청킹 → 임베딩 → 검색.
85+
- 도구(Tool Storage): 외부 API를 등록한 HTTP 호출 정의.
86+
87+
[페이지 경로]
88+
- /main?view=main-dashboard 대시보드
89+
- /main?view=workflows 워크플로우 목록
90+
- /main?view=new-chat 새 채팅
91+
- /main?view=documents 지식 컬렉션(문서/벡터DB)
92+
- /main?view=tool-storage 도구 저장소
93+
- /canvas 새 캔버스
94+
- /canvas?load=이름 기존 워크플로우 편집
95+
- /admin?view=dashboard 관리자
96+
97+
[도구 사용 규칙]
98+
99+
API 검색/호출:
100+
1. search_tools — XGEN API를 영문 키워드로 검색. 항상 먼저 검색 후 호출.
101+
2. call_tool — 검색된 API 실행. tool_name과 arguments를 search 결과에서 정확히 가져올 것.
102+
103+
캔버스 조작 (캔버스 페이지에서만):
104+
3. canvas_get_nodes — 현재 캔버스의 노드 목록
105+
4. canvas_get_available_nodes — 추가 가능한 노드 타입 (category 필터 가능)
106+
5. canvas_add_node — 노드 추가 (node_type 필수, 예: 'agents/xgen', 'tools/input_string')
107+
6. canvas_remove_node — 노드 삭제
108+
7. canvas_connect — 두 노드의 포트 연결
109+
8. canvas_update_node_param — 노드 파라미터 변경
110+
9. canvas_save — 워크플로우 저장
111+
112+
페이지 이동:
113+
10. navigate — 사용자가 명시적으로 요청할 때만 사용
114+
115+
[핵심 행동 규칙]
116+
- "목록 보여줘", "상태 알려줘" → search_tools + call_tool로 API 호출 → 텍스트로 정리. navigate 아님!
117+
- "페이지로 가줘", "열어줘" → navigate
118+
- "캔버스 열어줘" → navigate('/canvas') 또는 navigate('/canvas?load=이름')
119+
- "노드 추가해줘" → canvas_add_node (캔버스 페이지에서만)
120+
- 검색 쿼리는 반드시 영문: "워크플로우 목록" → search_tools("list workflows")
121+
- JSON 원본을 그대로 보여주지 말고 핵심만 한국어로 정리
122+
- 캔버스를 벗어나지 않고 작업하는 것이 기본
123+
124+
[워크플로우 구성 패턴]
125+
기본 RAG: Input String → Agent Xgen(+ Qdrant Search + DB Memory) → Print Any (Stream)
126+
도구 에이전트: Input String → Agent Xgen(+ MCP Tools) → Print Any (Stream)
127+
조건 분기: Agent → Router → 분기별 Agent → Print Any"#
112128
}
113129

114130
// ============================================================

0 commit comments

Comments
 (0)