🏆50

Day 1 도전 과제: 안전한 Text2Cypher 시스템 구축

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빈 문자열 ""에러 처리

제출물

  1. safe_text2cypher.py - 전체 코드
  2. 실행 결과 스크린샷 (5개 테스트)
  3. 발견한 실패 케이스와 원인 분석 (텍스트)