SQL Database se Chat Karein, Bina SQL Likhe!
Dosto, kya aapne socha hai ki aap apne SQL database se English ya Hindi me सवाल पूछ sakte hain, aur AI aapke liye SQL query likh kar jawab de? Aaj hum LangChain ka use karke ek aisa hi powerful SQL Agent banayenge.
🔧 Prerequisites
Humein kuch libraries install karni hongi:
pip install langchain langchain-openai openai sqlalchemy
SQLAlchemy ek popular library hai jo Python ko SQL databases se connect karne me madad karti hai.
Step 1: Database Setup (SQLite) 🗃️
Hum ek simple in-memory SQLite database banayenge aur usme kuch data daalenge.
from langchain_community.utilities import SQLDatabase
# In-memory SQLite database banayein
db = SQLDatabase.from_uri("sqlite:///Chinook.db")
# Check karein ki connection hua ya nahi
print(db.dialect)
print(db.get_usable_table_names())
Explanation:
- Humne ek sample 'Chinook' database use kiya hai, jise aap online download kar sakte hain. Yeh music store ka data rakhta hai.
SQLDatabase.from_uri()database se connection banata hai.get_usable_table_names()humein batata hai ki database me kaun-kaun si tables hain.
Step 2: LLM aur Agent Banayein 🤖
Ab hum ek Language Model (LLM) initialize karenge aur use database ke saath jodkar ek agent banayenge.
from langchain_openai import ChatOpenAI
from langchain_community.agent_toolkits import create_sql_agent
# OpenAI ka LLM initialize karein
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
# SQL Agent banayein
agent_executor = create_sql_agent(
llm=llm,
db=db,
agent_type="openai-tools",
verbose=True
)
Explanation:
ChatOpenAIse hum GPT model ko access kar rahe hain.create_sql_agentek magic function hai jo LLM aur Database ko ek saath kaam karne ke liye taiyar karta hai.verbose=Truese hum dekh sakte hain ki agent background me kya soch raha hai aur kaun si SQL query bana raha hai.
Step 3: Database se Sawal Puche! 💬
Ab hamara agent taiyar hai. Chaliye isse kuch natural language me sawal puchte hain.
# Agent se sawal puchein
response = agent_executor.invoke({
"input": "List the total sales per country. Which country has the highest sales?"
})
print(response["output"])
Yeh agent aapke sawal ko samjhega, uske liye SQL query generate karega, database par chalayega, aur result ko aasan bhasha me aapko dega. 🎯
# Ek aur sawal
agent_executor.invoke({"input": "Show me all artists from the 'Rock' genre."})
💡 Pro Tips
- Complex databases ke liye, agent ko table aur column ke baare me thoda context (descriptions) dena behtar rehta hai.
temperature=0set karne se agent zyada factual aur kam creative jawab dega, jo data queries ke liye accha hai.- Production me, database access ke liye read-only permissions wale user credentials ka istemal karein taaki data galti se modify na ho.