NL2SQL Tool
NL2SQLTool은 자연어를 SQL 쿼리로 변환하도록 설계되었다.
NL2SQLTool
설명
이 도구는 자연어를 SQL 쿼리로 변환하는 데 사용한다. 에이전트에 전달하면 쿼리를 생성하고 이를 데이터베이스와 상호작용하는 데 활용한다.
이를 통해 다양한 워크플로우를 구현할 수 있다. 예를 들어, 에이전트가 데이터베이스에 접근해 목표에 맞는 정보를 가져오고, 그 정보를 바탕으로 응답이나 리포트, 기타 출력물을 생성하는 방식이다. 또한 에이전트가 목표에 따라 데이터베이스를 업데이트할 수도 있다.
주의: 에이전트가 Read-Replica에 접근할 수 있도록 하거나, 에이전트가 데이터베이스에 insert/update 쿼리를 실행해도 문제가 없는지 반드시 확인해야 한다.
필수 요구사항
- SqlAlchemy
- DB 호환 라이브러리 (예: psycopg2, mysql-connector-python)
설치
crewai_tools 패키지를 설치한다.
사용 방법
NL2SQLTool을 사용하려면 데이터베이스 URI를 도구에 전달해야 한다. URI는 dialect+driver://username:password@host:port/database
형식으로 작성한다.
예제
기본 작업 목표는 다음과 같았다:
“각 도시의 월별 평균, 최대, 최소 수익을 조회하되, 사용자가 한 명 이상인 도시만 포함한다. 또한 각 도시의 사용자 수를 세고, 결과를 평균 월별 수익 기준으로 내림차순 정렬한다.”
에이전트는 DB에서 정보를 가져오려고 시도했고, 첫 번째 시도는 잘못된 결과를 가져왔다. 에이전트는 다시 시도해 올바른 정보를 얻고 다음 에이전트로 전달했다.
두 번째 작업 목표는 다음과 같았다:
“데이터를 검토하고 상세 보고서를 작성한 후, 제공된 데이터를 기반으로 필드를 포함한 테이블을 데이터베이스에 생성한다. 각 도시의 월별 평균, 최대, 최소 수익을 포함하되, 사용자가 한 명 이상인 도시만 포함한다. 또한 각 도시의 사용자 수를 세고, 결과를 평균 월별 수익 기준으로 내림차순 정렬한다.”
이제 상황이 흥미로워진다. 에이전트는 테이블을 생성할 뿐만 아니라 데이터를 테이블에 삽입하는 SQL 쿼리를 생성한다. 그리고 마지막에 에이전트는 데이터베이스에 있는 내용과 정확히 일치하는 최종 보고서를 반환한다.
이 예제는 NL2SQLTool을 사용해 데이터베이스와 상호작용하고, 데이터베이스의 데이터를 기반으로 보고서를 생성하는 간단한 사례를 보여준다.
이 도구는 에이전트의 로직과 데이터베이스와의 상호작용 방식에 대해 무한한 가능성을 제공한다.