SQL 데이터베이스의 Q&A 시스템을 구축하려면 모델이 생성한 SQL 쿼리를 실행해야 합니다. 이를 수행하는 데는 본질적인 위험이 존재합니다. 데이터베이스 연결 권한이 에이전트의 필요에 따라 항상 최대한 좁게 범위가 지정되도록 하십시오. 이는 모델 기반 시스템 구축의 위험을 완화하지만 제거하지는 않습니다.
개념
다음 개념들을 다룹니다:- SQL 데이터베이스에서 읽기 위한 도구
- 상태, 노드, 엣지 및 조건부 엣지를 포함하는 LangGraph Graph API
- Human-in-the-loop 프로세스
설정
설치
LangSmith
체인 또는 에이전트 내부에서 발생하는 일을 검사하려면 LangSmith를 설정하십시오. 그런 다음 다음 환경 변수를 설정합니다:1. LLM 선택
도구 호출을 지원하는 모델을 선택하십시오:- OpenAI
- Anthropic
- Azure
- Google Gemini
- AWS Bedrock
2. 데이터베이스 구성
이 튜토리얼에서는 SQLite 데이터베이스를 생성합니다. SQLite는 설정하고 사용하기 쉬운 경량 데이터베이스입니다. 디지털 미디어 스토어를 나타내는 샘플 데이터베이스인chinook 데이터베이스를 로드합니다.
편의를 위해 공용 GCS 버킷에 데이터베이스(Chinook.db)를 호스팅했습니다.
langchain_community 패키지에서 제공하는 편리한 SQL 데이터베이스 래퍼를 사용합니다. 이 래퍼는 SQL 쿼리를 실행하고 결과를 가져오는 간단한 인터페이스를 제공합니다:
3. 데이터베이스 상호 작용을 위한 도구 추가
데이터베이스와 상호 작용하기 위해langchain_community 패키지에서 제공하는 SQLDatabase 래퍼를 사용합니다. 이 래퍼는 SQL 쿼리를 실행하고 결과를 가져오는 간단한 인터페이스를 제공합니다:
4. 애플리케이션 단계 정의
다음 단계들을 위한 전용 노드를 구성합니다:- DB 테이블 나열
- “get schema” 도구 호출
- 쿼리 생성
- 쿼리 검사
5. 에이전트 구현
이제 Graph API를 사용하여 이러한 단계들을 워크플로우로 조합할 수 있습니다. 쿼리 생성 단계에서 조건부 엣지를 정의하여 쿼리가 생성되면 쿼리 검사기로 라우팅하거나, LLM이 쿼리에 대한 응답을 전달한 경우와 같이 도구 호출이 없으면 종료하도록 합니다.
위 실행에 대한 LangSmith 추적을 참조하십시오.
6. Human-in-the-loop 검토 구현
에이전트의 SQL 쿼리가 실행되기 전에 의도하지 않은 작업이나 비효율성을 확인하는 것이 현명할 수 있습니다. 여기서는 LangGraph의 human-in-the-loop 기능을 활용하여 SQL 쿼리를 실행하기 전에 실행을 일시 중지하고 사람의 검토를 기다립니다. LangGraph의 지속성 레이어를 사용하여 무기한(또는 최소한 지속성 레이어가 살아있는 한) 실행을 일시 중지할 수 있습니다. 사람의 입력을 받는 노드에서sql_db_query 도구를 래핑해 봅시다. interrupt 함수를 사용하여 이를 구현할 수 있습니다. 아래에서는 도구 호출을 승인하거나, 인수를 편집하거나, 사용자 피드백을 제공할 수 있는 입력을 허용합니다.
위 구현은 더 광범위한 human-in-the-loop 가이드의 도구 인터럽트 예제를 따릅니다. 자세한 내용과 대안은 해당 가이드를 참조하십시오.
다음 단계
이와 같은 SQL 에이전트를 포함한 LangGraph 애플리케이션을 LangSmith를 사용하여 평가하는 방법은 그래프 평가하기 가이드를 확인하십시오.Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.