gemini-pro / app2.py
TobiRobi03's picture
Upload app2.py
047ebfc verified
Raw
History Blame Contribute Delete
2.59 kB
import streamlit as st
from langchain_core.messages import AIMessage, HumanMessage
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import FAISS
from dotenv import load_dotenv
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
load_dotenv()
#laoding embeddings
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
vectordb = FAISS.load_local("faiss_index_pymupdf", embeddings)
# app config
st.set_page_config(page_title="MANOchatBot", page_icon="🤖")
st.title("MANO ChatBot")
llm = ChatGoogleGenerativeAI(model="gemini-pro",temperature=0.7,convert_system_message_to_human=True)
def augment_prompt(user_query):
# get top results from knowledge base
results = vectordb.similarity_search(user_query, k=10)
# get the text from the results
source_knowledge = "\n".join([x.page_content for x in results])
# feed into an augmented prompt
augmented_prompt = f"""Based on the context provided, provide an answer to the best of your knowledge.If answer is not found in the context then web search.
Use your skills to determine what kind of context is provided and tailor your response accordingly.
Also, use html bullet list format when needed.
Contexts:
{source_knowledge}
Query: {user_query}"""
return augmented_prompt
def get_response(user_query):
messages=[]
#messages.append(res)
prompt = HumanMessage(content=augment_prompt(user_query))
# add to messages
messages.append(prompt)
res = llm(messages)
return res.content
# session state
if "chat_history" not in st.session_state:
st.session_state.chat_history = [
AIMessage(content="Hello, I am a ChatBot. How can I help you?"),
]
# conversation
for message in st.session_state.chat_history:
if isinstance(message, AIMessage):
with st.chat_message("AI"):
st.write(message.content)
elif isinstance(message, HumanMessage):
with st.chat_message("Human"):
st.write(message.content)
# user input
user_query = st.chat_input("Type your query here...")
if user_query is not None and user_query != "":
st.session_state.chat_history.append(HumanMessage(content=user_query))
with st.chat_message("Human"):
st.markdown(user_query)
with st.chat_message("AI"):
response = st.write(get_response(user_query))
#st.session_state.chat_history.append(AIMessage(content=response))