AI 에이전트 채팅
AI 에이전트 채팅은 GenD의 메인 AI 인터페이스입니다. 독립 채팅 페이지(/ai/chat)에서 자연어로 질문하면 AI가 44개 플랫폼 도구를 활용하여 데이터 탐색, SQL 실행, 거버넌스 조회, 마트 생성 등을 수행합니다.
접근 방법
1. 사이드바에서 직접 접근
사이드바 AI 인텔리전스 섹션에서 AI 에이전트 채팅 메뉴를 클릭합니다.
2. 각 페이지에서 "AI에게 요청" 버튼
카탈로그, 파이프라인, 데이터 품질, 거버넌스, 관리 등 주요 페이지 헤더에 AI에게 요청 버튼이 있습니다. 이 버튼을 클릭하면 현재 페이지의 컨텍스트(카탈로그명, 테이블명 등)가 자동 전달되어 AI가 상황에 맞는 전문 응답을 제공합니다.

"AI에게 요청" 버튼은 카탈로그, 데이터 소스, 파이프라인, 데이터 마트, 데이터 품질, 리니지, 스키마 변경, PII 관리, 비용 대시보드, 접근 정책, 승인, 감사 로그, CDC, MCP, 보존, 컴플라이언스 등 15개 이상의 페이지에서 사용할 수 있습니다.
3. 상단바 버튼으로 우측 패널 열기
작업 화면을 떠나지 않고 물어보려면 상단바 오른쪽의 로봇 아이콘(AI 채팅)을 클릭합니다.
현재 화면 옆에 우측 패널이 열리고, 지금 보고 있는 페이지가 대화 컨텍스트로 자동 전달됩니다
(패널 하단에 컨텍스트: <화면 이름> 으로 표시).

- 닫기: 패널 헤더의 ✕ 버튼, 또는 상단바의 로봇 아이콘을 다시 클릭
- 새 대화: 패널 헤더의 + 버튼
- 전체 화면으로 전환: 패널 헤더의 ⤢ 버튼 →
/ai/chat페이지로 이동합니다. 같은 대화가 그대로 이어집니다(패널과 전체 페이지가 대화를 공유).
창이 좁을 때 (패널이 본문 위에 겹칩니다)
브라우저 창이 1280px 보다 좁으면 패널이 본문을 밀어내지 않고 본문 위에 겹쳐서 열립니다. 겹친 동안 본문은 살짝 어둡게 표시됩니다.

- 패널 밖의 어두운 영역을 클릭하면 패널이 닫히고 본문으로 돌아갑니다(헤더의 ✕ 도 동일).
- 본문을 함께 보면서 작업하려면 창을 넓히거나 브라우저를 최대화하세요.
:::note 왜 겹치나요? 좁은 창에서 패널이 본문을 밀어내면 사이드바까지 감안해 본문에 200~400px 만 남아 문구가 한 글자씩 세로로 끊겨 읽을 수 없게 됩니다. 그래서 좁은 창에서는 본문 폭을 보존하고 패널을 위에 띄웁니다. 설계 배경은 ADR-0034 를 참고하세요. :::
페이지 구성
| 영역 | 설명 |
|---|---|
| 왼쪽 패널 | 대화 스레드 목록 + "새 대화" 버튼 |
| 메인 영역 | 채팅 메시지 (사용자 + AI 응답) |
| 하단 입력창 | 자연어 질문 입력 + 전송 버튼 |
사용 예시
자연어 SQL 생성
자연어로 데이터 분석 요청을 하면 AI가 테이블 구조를 파악하고 적절한 SQL을 생성합니다.

위 예시에서 AI는 5개 도구(get_catalogs, get_schemas, get_tables, get_columns, run_select_query)를 순서대로 호출하여 tpch 카탈로그의 구조를 파악하고, 국가별 주문 총액 상위 5개를 조회하는 SQL을 생성합니다.
일간 데이터 추출 (날짜·금액 결과)
"crm 마케팅 일간 데이터 추출해줘" 처럼 일자별 집계를 요청하면 AI가 관련 데이터 마트/테이블을 찾아 조회하고 결과 표를 반환합니다. 결과에는 날짜(DATE) 와 금액·비율(DECIMAL) 컬럼이 포함되며, 대화 히스토리에도 그대로 저장되어 나중에 스레드를 다시 열면 동일하게 복원됩니다.

결과 표 아래의 에디터로 보내기 / SQL 복사 / CSV 버튼으로 SQL을 SQL 편집기에서 이어 실행하거나 결과를 내보낼 수 있습니다.
날짜·소수(Decimal) 값이 섞인 조회 결과는 라이브 응답과 저장된 히스토리가 동일한 표현으로 정규화됩니다(날짜→ISO 문자열, Decimal→정밀도 보존). 회귀 방지 테스트는 ui/tests/ai-chat-e2e.spec.ts 와 apps/api/tests/test_agent_api.py, 재현용 시드는 scripts/seed_crm_marketing_demo.py 를 참고하세요. (이슈 #2372)
거버넌스 조회
관리 업무에 관한 질문도 AI가 대시보드 도구를 활용하여 답변합니다.

관리 페이지에서 AI 활용
PII 관리, 비용 대시보드 등 관리 페이지에서도 AI에게 요청 버튼으로 AI Chat에 진입할 수 있습니다. 페이지 컨텍스트(page=admin)가 자동 전달되어 관리 업무에 특화된 응답을 받습니다.

테이블 구조 확인 (스키마 탐색)
AI Agent Chat에서 get_columns, get_tables 도구를 활용하여 스키마 그래프 UI 없이도 테이블 구조를 확인할 수 있습니다.
사용자: "sourcedb.public.customers 테이블의 컬럼과 타입을 알려줘"
AI: [get_columns 도구]
customer_id(varchar), name(varchar), phone(varchar), email(varchar),
address(varchar), credit_score(bigint), annual_income(bigint), ...
사용자: "sourcedb.public의 테이블 목록 보여줘"
AI: [get_tables 도구]
accounts, app_events, consultations, credit_assessments, customer_segments,
customers, fraud_labels, marketing_consents, merchants, orders, products, transactions
스키마 구조를 시각적으로 확인하려면 스키마 그래프 페이지를 사용하세요. 카탈로그/스키마별 테이블 관계와 FK 엣지를 그래프로 볼 수 있습니다.
용어 사전 관리
사용자: "등록된 비즈니스 용어 목록 보여줘"
AI: [search_glossary 도구] 용어 전체 목록 표시
사용자: "이상거래라는 용어를 등록해줘. 정의는 'fraud_score > 0.8인 거래'"
AI: [create_glossary_term — Tier 2] 확인 카드 표시 → 승인 후 생성
데이터 마트 생성 (확인 후 실행)
사용자: "이 SQL로 regional_sales 마트 만들어줘"
AI: [create_data_mart — Tier 2]
확인 카드 표시: 이름, SQL, 스케줄
→ [실행] 클릭 시 생성
커넥터·파이프라인 (계획만)
사용자: "새 PostgreSQL 커넥터를 만들어줘"
AI: [create_connector — Tier 3]
실행 계획만 안내 + 해당 메뉴 위치 안내
멀티턴 대화
사용자: "국가별 매출 상위 5개"
AI: [SQL 생성 + 결과 표시]
사용자: "아시아만 필터해줘"
AI: [이전 대화를 참조하여 WHERE 조건 추가]
Tier 안전장치
AI Agent가 도구를 호출할 때 3단계 안전장치가 적용됩니다.
| Tier | 동작 | 예시 |
|---|---|---|
| Tier 1 (자동) | 즉시 실행, 결과 표시 | SELECT 쿼리, 카탈로그 조회, 품질 점수 조회, 용어 조회 |
| Tier 2 (확인) | 승인 카드 표시 → 사용자 확인 후 실행 | 마트 생성, PII 스캔, 쿼리 저장, 용어 생성/수정/삭제 |
| Tier 3 (계획) | 실행 계획만 텍스트로 안내 | 커넥터 생성, 파이프라인 실행, 데이터 삭제 |
결과 액션 버튼
AI가 SQL을 생성하고 결과를 표시하면 다음 버튼을 사용할 수 있습니다:
- 에디터로 보내기: SQL이 SQL Editor 탭에 자동 입력됨
- SQL 복사: 클립보드에 SQL 복사
- CSV 다운로드: 쿼리 결과를 CSV 파일로 저장
RAG 컨텍스트 자동 주입
질문할 때마다 자동으로 다음 컨텍스트를 검색하여 LLM에 주입합니다:
- 스키마 인텔리전스: ArangoDB에서 관련 테이블/컬럼/FK 관계 검색
- 문서 RAG: Weaviate에서 관련 문서 청크 검색
- 비즈니스 용어: ArangoDB에서 관련 용어 정의 검색
시맨틱 캐시
이전에 유사한 질문(cosine 유사도 > 0.95)이 있으면 캐시에서 즉시 SQL을 반환합니다. 캐시된 SQL도 현재 사용자 권한으로 SqlGuard 재검증을 거칩니다.
대화 스레드 관리
- + 새 대화: 새 스레드 시작
- 왼쪽 패널에서 이전 스레드 클릭 → 대화 히스토리 로드
- 스레드 삭제: hover 시 휴지통 아이콘
페이지 컨텍스트 전달
다른 페이지에서 AI Chat으로 진입하면 현재 컨텍스트가 자동 전달됩니다:
카탈로그 페이지 → /ai/chat?page=catalog&catalog=iceberg&table=transactions
SQL 편집기 → /ai/chat?page=sql-editor&sql=SELECT...&error=Column+not+found
파이프라인 → /ai/chat?page=pipelines&pipeline_id=abc
보안
| 계층 | 역할 |
|---|---|
| Tool 필터링 | 사용자 역할(user/admin)에 따라 도구 제한 |
| MCPGovernor | RBAC 검증 + Rate Limit (60/분) + 감사 로그 |
| ContextGateway | 보안 등급 필터링 + PII 마스킹 |
| SqlGuard | SELECT/WITH 화이트리스트 + 테이블 접근 권한 |
| DLP 필터 | LLM 응답에서 PII 자동 마스킹 |
| Tier 안전장치 | 파괴적 작업은 AI가 직접 실행하지 않음 |
SQL Editor AI 패널과의 차이
| 항목 | SQL Editor AI 패널 | Agent Chat 페이지 |
|---|---|---|
| 위치 | SQL Editor 우측 사이드바 | 독립 페이지 /ai/chat |
| 도구 수 | NL2SQL 전용 (1개) | 44개 플랫폼 도구 |
| Tier 안전장치 | 없음 | 3단계 (자동/확인/계획) |
| 스레드 관리 | 없음 | 스레드 목록 + 히스토리 |
| RAG 컨텍스트 | 스키마+문서+용어 | 스키마+문서+용어 (동일) |
API 엔드포인트
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/ai/agent/chat | 에이전트 대화 (Tool Calling + 루프) |
| POST | /api/v1/ai/agent/confirm | Tier 2 액션 확인 후 실행 |
| GET | /api/v1/ai/agent/threads | 대화 스레드 목록 |
| GET | /api/v1/ai/agent/threads/{id}/messages | 스레드 메시지 히스토리 |
| DELETE | /api/v1/ai/agent/threads/{id} | 스레드 삭제 |