Info_Assistant / app.py
ArturG9's picture
Update app.py
fe6ba28 verified
raw
history blame
No virus
2.74 kB
import os
import streamlit as st
def main():
st.set_page_config(page_title="Info Assistant: ",
page_icon=":books:")
st.header("Info Assistant :" ":books:")
st.markdown("###### Get support of "Info Assistant" , who has in memory a lot of Data Science related articles, if it can't answer based on it's knowledge base, information will be found on the internet:" ":books:")
if "messages" not in st.session_state:
st.session_state["messages"] = [
{"role": "assistant", "content": "Hi, I'm a chatbot who is based on respublic of Lithuania law documents. How can I help you?"}
]
search_type = st.selectbox(
"Choose search type. Options are [Max marginal relevance search (similarity) , Similarity search (similarity). Default value (similarity)]",
options=["mmr", "similarity"],
index=1
)
k = st.select_slider(
"Select amount of documents to be retrieved. Default value (5): ",
options=list(range(2, 16)),
value=4
)
retriever = create_retriever_from_chroma(vectorstore_path="docs/chroma/", search_type=search_type, k=k, chunk_size=350, chunk_overlap=30)
# Graph
workflow = StateGraph(GraphState)
# Define the nodes
workflow.add_node("ask_question", ask_question)
workflow.add_node("retrieve", retrieve) # retrieve
workflow.add_node("grade_documents", grade_documents) # grade documents
workflow.add_node("generate", generate) # generatae
workflow.add_node("web_search", web_search) # web search
workflow.add_node("transform_query", transform_query)
# Build graph
workflow.set_entry_point("ask_question")
workflow.add_conditional_edges(
"ask_question",
grade_question_toxicity,
{
"good": "retrieve",
'bad': END,
},
)
workflow.add_edge("retrieve", "grade_documents")
workflow.add_conditional_edges(
"grade_documents",
decide_to_generate,
{
"search": "web_search",
"generate": "generate",
},
)
workflow.add_edge("web_search", "generate")
workflow.add_conditional_edges(
"generate",
grade_generation_v_documents_and_question,
{
"not supported": "generate",
"useful": END,
"not useful": "transform_query",
},
)
workflow.add_edge("transform_query", "retrieve")
custom_graph = workflow.compile()
if user_question := st.text_input("Ask a question about your documents:"):
handle_userinput(user_question,retriever,rag_chain)
if __name__ == "__main__":
main()