자동으로 쿼리 작성을 해주는 langchain

SH·2023년 9월 13일
0

langchain

목록 보기
4/4

데이터베이스와 상호작용할 때 가장 중요한 부분은 쿼리 작성이다. 올바른 쿼리를 작성하는 것은 데이터 검색의 정확성과 효율성에 큰 영향을 미치기때문인데 자동으로 쿼리를 작성하는 도구는 이 과정을 단순화하고, 비개발자에게도 데이터베이스에 쉽게 접근할 수 있는 기능을 제공한다.

자동 쿼리 작성의 핵심은 사용자의 요구를 정확하게 해석하고, 이를 SQL 쿼리로 변환하는 것인데, 이를 위해 자연어 처리(NLP) 알고리즘, 규칙 기반 시스템, 등을 사용해야한다. 1년전만 하더라도 이것을 하려면 엄청난 작업이 들어간다. 그러나 현재는 langchain으로 아주 간단하게 작업이 가능하다.

먼저 SQL DB에 데이터가 있다. 나의 경우 GCP 의 cloud sql을 사용하였다.

Cloud SQL은 Google Cloud Platform에서 제공하는 완전 관리형 관계형 데이터베이스 서비스로 PostgreSQL, MySQL, SQL Server 등 다양한 데이터베이스 엔진을 지원하며, 클라우드에서 데이터베이스를 쉽게 설정, 관리, 확장할 수 있다.

db에 meals 데이터베이스를 생성하고 크롤링을 통해 전남대학교 학식메뉴들의 정보를 저장하는 코드를 작성했다. 매주 월요일 아침 6시에 크롤링을 시행하는 자동화 코드를 작성했다.

from langchain.llms import OpenAI
from langchain.utilities import SQLDatabase
from langchain_experimental.sql import SQLDatabaseChain

먼저 langchain을 import 해준뒤
MySQL에 연결하려면 PyMySQL과 같은 적절한 커넥터가 필요합기때문에 MySQL 연결의 URI는 다음format 과 같다.

pg_uri = f"mysql+pymysql://user:pass@some_mysql_db_address/db_name."
db = SQLDatabase.from_uri(pg_uri)

Uri 로 부터 Sqldatabase 와 연결후 langchain 을 사용하기위해 api_key, llm model, db_chain을 설정한다.

OPENAI_API_KEY = "api key"
llm = OpenAI(temperature=0, openai_api_key=OPENAI_API_KEY, model_name='gpt-3.5-turbo')

이후 prompt 작성을 하여 db_chain을 실행한다.

db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)
db_chain.run("수요일 아침밥 알려줘")

이후 실행되어 결과를 출력한다.

0개의 댓글