I am trying to use langchain to query a structured SQL database and I have followed the documentation exactly on the langchain website but I keep getting an error on how I am trying to submit my SQL command. There error I get says:
The SQL query provided has a syntax error due to the malformed
beginning of the query with the word “SQLQuery:”. This part should be
removed in order to execute the intended SQL command correctly.
this is my code, and rememeber I have followed the langchain documentation exactly but it still is not working
import pandas as pd
from sqlalchemy import create_engine
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain.chains import create_sql_query_chain
from langchain_openai import ChatOpenAI
from langchain_community.utilities import SQLDatabase
from langchain_community.tools.sql_database.tool import QuerySQLDataBaseTool
from operator import itemgetter
from langchain_core.output_parsers import StrOutputParser
# Setup
openai_api_key = 'MY_API_KEY'
df = pd.read_csv("./tests/datasets/cintelairqualitymeasurements.csv")
engine = create_engine('sqlite:///cintel.db')
df.to_sql('cintelairqualitymeasurements', con=engine, index=False, if_exists='replace')
db = SQLDatabase.from_uri("sqlite:///cintel.db")
llm = ChatOpenAI(model="gpt-4-turbo", temperature=0.8, api_key=openai_api_key)
execute_query = QuerySQLDataBaseTool(db=db)
write_query = create_sql_query_chain(llm, db)
chain = write_query | execute_query
# Define the answer prompt template
answer_prompt = PromptTemplate.from_template(
"""Given the following user question, corresponding SQL query, and SQL result, answer the user question.
Question: {question}
SQL Query: {query}
SQL Result: {result}
Answer: """
)
# Function to process query and execute
answer = answer_prompt | llm | StrOutputParser()
chain = (
RunnablePassthrough.assign(query=write_query).assign(
result=itemgetter("query") | execute_query
)
| answer
)
finalanswer = chain.invoke({"question": "How many days have there been with bad air quality?"})
print("Final answer: ", finalanswer)