38 lines
1.5 KiB
Markdown
38 lines
1.5 KiB
Markdown
# SGMP Few-shot NL2SQL MCP (#735)
|
|
|
|
> 상태: Approved
|
|
> 구현: `McpSseService`, `SelectAiService`, `McpProperties`
|
|
|
|
## 목적
|
|
|
|
기존 Select AI Text2SQL 경로와 분리된 검증용 MCP tool을 제공한다. 질문과 유사한 검토 완료 예제를 벡터 검색하고, 그 SQL 패턴을 prompt에 참고자료로 넣은 뒤 `SHOWSQL`로 생성한 SQL을 읽기 전용으로 실행한다.
|
|
|
|
## MCP 계약
|
|
|
|
- **tool name**: `oracle.select_ai.smilegate_fewshot_nl2sql` (환경변수로 재정의 가능)
|
|
- **입력**: `prompt` (최대 4,000자)
|
|
- **출력**: 벡터 Few-shot 예제(질문, SQL, 모델, cosine distance), 생성 SQL, 실행 상태, 행 수, 최대 100건 결과
|
|
|
|
Few-shot SQL은 실행하지 않는다. 현재 메타데이터·alias 정책을 우선하고, Select AI가 새로 생성한 SQL만 read-only 검증 후 실행한다.
|
|
|
|
## 안전 규칙
|
|
|
|
1. 벡터 검색 실패는 `UNAVAILABLE` 상태로 남기고 기존 정책 prompt로 폴백한다.
|
|
2. 생성 결과는 단일 `SELECT` 또는 `WITH`만 허용한다.
|
|
3. DDL, DML, PL/SQL, 시스템 객체, 잠금 구문, 다중 문장은 차단한다.
|
|
4. JDBC read-only 트랜잭션과 30초 query timeout, 최대 100행 제한을 적용한다.
|
|
5. 기존 `data_text2sql`, `data_showprompt`, `qa_vector_search`, `qa_vector_store` tool은 변경하지 않는다.
|
|
|
|
## 설정
|
|
|
|
```text
|
|
BACKOFFICE_MCP_FEW_SHOT_NL2SQL_TOOL_NAME
|
|
BACKOFFICE_MCP_FEW_SHOT_NL2SQL_TOOL_LABEL
|
|
BACKOFFICE_MCP_FEW_SHOT_NL2SQL_TOOL_DESCRIPTION
|
|
```
|
|
|
|
## 추적성
|
|
|
|
- Redmine: #735
|
|
- 테스트: `McpSseServiceTest`
|