Skip to main content

How to connect LLM to SQL database with LangChain SQLChain

1. Getting started

pip install langchain 
pip install openai
pip install psycopg2

SQLDatabaseSequentialChain is a chain for querying SQL database that is a sequential chain. And according to the LangChain documentation, the chain is as follows:

from langchain import OpenAI, SQLDatabase
from langchain.chains import SQLDatabaseSequentialChain


1. Based on the query, determine which tables to use.
2. Based on those tables, call the normal SQL database chain.

This is useful in our case since the number of tables in our database is large.

For smaller databases, you can just use SQLDatabaseChain from LangChain.


Proof of Concept

from langchain.agents import create_sql_agent 
from langchain.agents.agent_toolkits import SQLDatabaseToolkit 
from langchain.sql_database import SQLDatabase 
from langchain.llms.openai import OpenAI 
from langchain.agents import AgentExecutor 
from langchain.agents.agent_types import AgentType
from langchain.chat_models import ChatOpenAI
import os

os.environ['OPENAI_API_KEY'] = "GET YOUR OWN KEY"
password = "Password123"
mydatabase="ghost"
host="175.143.79.225"
port="8001"
username="BeedAI"
pg_uri = f"mysql+pymysql://{username}:{password}@{host}:{port}/{mydatabase}"
print(pg_uri)
db = SQLDatabase.from_uri(pg_uri)
gpt = OpenAI(temperature=0, model_name='gpt-3.5-turbo')
toolkit = SQLDatabaseToolkit(db=db, llm=gpt)
agent_executor = create_sql_agent(
    llm=gpt,
    toolkit=toolkit,
    verbose=True,
    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
)

We can select different