개요
이 도구는 자연어를 SQL 쿼리로 변환하는 데 사용됩니다. 에이전트에 전달되면 쿼리를 생성하고 이를 사용하여 데이터베이스와 상호작용합니다. 이를 통해 에이전트가 데이터베이스에 접근하여 목표에 따라 정보를 가져오고, 해당 정보를 사용해 응답, 보고서 또는 기타 출력물을 생성하는 다양한 워크플로우가 가능해집니다. 또한 에이전트가 자신의 목표에 맞춰 데이터베이스를 업데이트할 수 있는 기능도 제공합니다. 주의: 도구는 기본적으로 읽기 전용(SELECT/SHOW/DESCRIBE/EXPLAIN만 허용)으로 동작합니다. 쓰기 작업을 수행하려면allow_dml=True 매개변수 또는 CREWAI_NL2SQL_ALLOW_DML=true 환경 변수가 필요합니다. 쓰기 접근이 활성화된 경우, 가능하면 권한이 제한된 데이터베이스 사용자나 읽기 복제본을 사용하십시오.
읽기 전용 모드 및 DML 구성
NL2SQLTool은 기본적으로 읽기 전용 모드로 동작합니다. 추가 구성 없이 허용되는 구문 유형은 다음과 같습니다:
SELECTSHOWDESCRIBEEXPLAIN
INSERT, UPDATE, DELETE, DROP, CREATE, ALTER, TRUNCATE 등)을 실행하려고 할 때 오류가 발생합니다.
읽기 전용 모드에서는 세미콜론이 포함된 다중 구문 쿼리(예: SELECT 1; DROP TABLE users)도 인젝션 공격을 방지하기 위해 차단됩니다.
쓰기 작업 활성화
DML(데이터 조작 언어)을 활성화하는 방법은 두 가지입니다: 옵션 1 — 생성자 매개변수:사용 예시
읽기 전용(기본값) — 분석 및 보고 워크로드에 안전:요구 사항
- SqlAlchemy
- 모든 DB 호환 라이브러리(예: psycopg2, mysql-connector-python)
설치
crewai_tools 패키지 설치사용법
NL2SQLTool을 사용하려면 데이터베이스 URI를 도구에 전달해야 합니다. URI는dialect+driver://username:password@host:port/database 형식이어야 합니다.
Code
