SQL_Mentor / app.py
Imarticuslearning's picture
Upload 3 files
8323028 verified
Raw
History Blame Contribute Delete
2.21 kB
import os
import streamlit as st
from dotenv import load_dotenv
from langchain_groq import ChatGroq
from langchain_classic.chains import ConversationalRetrievalChain
from langchain_classic.memory import ConversationBufferMemory
from langchain_community.vectorstores import FAISS
from langchain_huggingface import HuggingFaceEmbeddings
# Load environment variables
load_dotenv()
# Read Groq API Key
GROQ_API_KEY = os.getenv("GROQ_API_KEY")
st.set_page_config(
page_title="SQL Mentor AI",
page_icon="🤖"
)
st.title("🤖 SQL Mentor AI")
@st.cache_resource
def load_vectorstore():
embeddings = HuggingFaceEmbeddings(
model_name="sentence-transformers/all-MiniLM-L6-v2"
)
db = FAISS.load_local(
"vectorstore",
embeddings,
allow_dangerous_deserialization=True
)
return db
db = load_vectorstore()
retriever = db.as_retriever(
search_kwargs={"k": 4}
)
llm = ChatGroq(
groq_api_key=GROQ_API_KEY,
model_name="llama-3.3-70b-versatile",
temperature=0.2
)
if "messages" not in st.session_state:
st.session_state.messages = []
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
question = st.chat_input(
"Ask SQL Questions..."
)
if question:
st.session_state.messages.append(
{
"role": "user",
"content": question
}
)
with st.chat_message("user"):
st.markdown(question)
docs = retriever.invoke(question)
context = "\n\n".join(
[doc.page_content for doc in docs]
)
prompt = f"""
You are an SQL Tutor.
Answer the question using the context.
Context:
{context}
Question:
{question}
If the questions is out of context just say I can't answer this question instead of generating
answers
"""
response = llm.invoke(prompt)
answer = response.content
st.session_state.messages.append(
{
"role": "assistant",
"content": answer
}
)
with st.chat_message("assistant"):
st.markdown(answer)