개요
이 튜토리얼에서는 LangChain 에이전트를 사용하여 SQL 데이터베이스에 대한 질문에 답변할 수 있는 에이전트를 구축하는 방법을 배웁니다. 높은 수준에서 에이전트는 다음 작업을 수행합니다:1
데이터베이스에서 사용 가능한 테이블과 스키마 가져오기
2
질문과 관련된 테이블 결정하기
3
관련 테이블의 스키마 가져오기
4
질문과 스키마 정보를 기반으로 쿼리 생성하기
5
LLM을 사용하여 일반적인 실수가 있는지 쿼리 재확인하기
6
쿼리 실행하고 결과 반환하기
7
쿼리가 성공할 때까지 데이터베이스 엔진에서 발생한 오류 수정하기
8
결과를 기반으로 응답 작성하기
SQL 데이터베이스에 대한 Q&A 시스템을 구축하려면 모델이 생성한 SQL 쿼리를 실행해야 합니다. 이 작업에는 본질적인 위험이 있습니다. 에이전트의 필요에 따라 데이터베이스 연결 권한을 항상 가능한 한 좁게 범위를 지정해야 합니다. 이렇게 하면 모델 기반 시스템 구축의 위험을 완전히 제거할 수는 없지만 완화할 수 있습니다.
개념
다음 개념을 다룹니다:- SQL 데이터베이스에서 읽기 위한 도구
- LangChain 에이전트
- 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 쿼리를 실행하고 결과를 가져오는 간단한 인터페이스를 제공합니다:
5. create_agent 사용하기
create_agent를 사용하여 최소한의 코드로 ReAct 에이전트를 구축합니다. 에이전트는 요청을 해석하고 SQL 명령을 생성하며, 도구가 이를 실행합니다. 명령에 오류가 있으면 오류 메시지가 모델로 반환됩니다. 그러면 모델은 원래 요청과 새 오류 메시지를 검토하고 새 명령을 생성할 수 있습니다. 이는 LLM이 명령을 성공적으로 생성하거나 종료 횟수에 도달할 때까지 계속될 수 있습니다. 이 경우 오류 메시지와 같은 피드백을 모델에 제공하는 패턴은 매우 강력합니다.
에이전트의 동작을 사용자 정의하기 위해 설명적인 시스템 프롬프트로 에이전트를 초기화합니다:
6. 에이전트 실행하기
샘플 쿼리에서 에이전트를 실행하고 동작을 관찰합니다:위 실행의 모든 측면(수행된 단계, 호출된 도구, LLM이 본 프롬프트 등)을 LangSmith 트레이스에서 검사할 수 있습니다.
(선택 사항) Studio 사용하기
Studio는 “클라이언트 측” 루프와 메모리를 제공하므로 이를 채팅 인터페이스로 실행하고 데이터베이스를 쿼리할 수 있습니다. “데이터베이스 스키마를 알려주세요” 또는 “상위 5명의 고객에 대한 인보이스를 보여주세요”와 같은 질문을 할 수 있습니다. 생성된 SQL 명령과 결과 출력이 표시됩니다. 시작 방법에 대한 자세한 내용은 아래를 참조하세요.Studio에서 에이전트 실행하기
Studio에서 에이전트 실행하기
이전에 언급한 패키지 외에도 다음이 필요합니다:실행할 디렉토리에 다음 내용으로
langgraph.json 파일이 필요합니다:sql_agent.py 파일을 생성하고 다음을 삽입합니다:6. Human-in-the-loop 검토 구현하기
에이전트의 SQL 쿼리가 실행되기 전에 의도하지 않은 작업이나 비효율성이 있는지 확인하는 것이 현명할 수 있습니다. LangChain 에이전트는 에이전트 도구 호출에 대한 감독을 추가하기 위해 내장된 human-in-the-loop 미들웨어를 지원합니다.sql_db_query 도구 호출 시 사람의 검토를 위해 일시 중지하도록 에이전트를 구성해 보겠습니다:
에이전트에 체크포인터를 추가하여 실행을 일시 중지하고 재개할 수 있습니다. 이에 대한 자세한 내용과 사용 가능한 미들웨어 구성은 human-in-the-loop 가이드를 참조하세요.
sql_db_query 도구를 실행하기 전에 검토를 위해 일시 중지됩니다:
다음 단계
더 깊은 사용자 정의를 위해 LangGraph 프리미티브를 사용하여 직접 SQL 에이전트를 구현하는 이 튜토리얼을 확인하세요.Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.