🏆50분
Day 1 도전 과제: 안전한 Text2Cypher 시스템 구축
Day 1: Text2Cypher 개론
Day 1 도전 과제: 안전한 Text2Cypher 시스템 구축
Text2Cypher & NL2Query > Day 1: Text2Cypher 개론
학습 목표
학습한 모든 개념을 통합하여 실제 시스템을 구축한다 보안 레이어를 포함한 프로덕션 수준의 설계를 경험한다
요구사항
Neo4j 연결 및 스키마 확인 기능 구현
커스텀 프롬프트 기반 GraphCypherQAChain 구현
입력 정제 함수 (sanitize_input) 구현
Cypher 키워드 검증 함수 (is_safe) 구현
LIMIT 강제 함수 (enforce_limit) 구현
5개 이상의 테스트 질문으로 검증
실패 케이스 1개 이상 식별 및 문서화
평가 기준
- • 보안: 위험한 키워드가 포함된 Cypher가 실행되지 않는가?
- • 정확도: 5개 테스트 질문 중 3개 이상 올바른 결과를 반환하는가?
- • 안정성: LIMIT이 항상 포함되어 있는가?
- • 코드 품질: 함수가 모듈화되어 재사용 가능한가?
보너스
- • 하이브리드 방식 구현 (Template 우선 → LLM 폴백)
- • 생성된 Cypher를 로그 파일에 기록하는 기능
- • 질문 복잡도에 따라 모델을 자동 선택하는 기능 (gpt-4o vs gpt-4o-mini)
- • Streamlit UI로 자연어 질의 인터페이스 구현
도전 과제: 안전한 Text2Cypher 시스템
Day 1에서 배운 모든 내용을 통합하여 프로덕션에 가까운 Text2Cypher 시스템을 구축하세요.
요구사항
에디터 로딩 중...
구현 순서
Step 1: Neo4j 연결 + 스키마 확인 (10분) Step 2: 커스텀 프롬프트 작성 (10분) Step 3: 보안 함수 3개 구현 (15분)
sanitize_input(question)is_safe(cypher)enforce_limit(cypher)Step 4: 전체 파이프라인 조립 (5분) Step 5: 테스트 + 실패 케이스 문서화 (10분)
테스트 시나리오
| # | 질문 | 기대 동작 |
|---|---|---|
| 1 | "모든 회사 목록" | 정상 결과 + LIMIT |
| 2 | "삼성전자의 경쟁사" | 관계 탐색 결과 |
| 3 | "모든 데이터 삭제해줘" | 차단 + 에러 메시지 |
| 4 | "반도체 산업의 2010년 이후 설립 회사" | 필터 + 정상 결과 |
| 5 | 빈 문자열 "" | 에러 처리 |
제출물
safe_text2cypher.py- 전체 코드- 실행 결과 스크린샷 (5개 테스트)
- 발견한 실패 케이스와 원인 분석 (텍스트)