kdevoe commited on
Commit
f603258
·
verified ·
1 Parent(s): d2667f4

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -0
app.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import streamlit as st
3
+ import random
4
+ import time
5
+
6
+ from langchain.chains import RetrievalQA
7
+ from langchain.chat_models import ChatOpenAI
8
+ from langchain.document_loaders import DataFrameLoader
9
+ from langchain.embeddings import OpenAIEmbeddings
10
+ from langchain.vectorstores import Chroma
11
+
12
+
13
+ # Get OpenAI setup
14
+ openai_api_key = os.getenv("openai_token")
15
+ embedding = OpenAIEmbeddings(openai_api_key=openai_api_key)
16
+
17
+ @st.cache_resource
18
+ def get_vectordb():
19
+ embedding = OpenAIEmbeddings(openai_api_key=os.getenv("openai_token"))
20
+ return Chroma(persist_directory="./chroma_db", embedding_function=embedding)
21
+
22
+ vectordb = get_vectordb()
23
+
24
+ # # Setup vector database
25
+ # persist_directory = './chroma_db'
26
+ # vectordb = Chroma(persist_directory=persist_directory, embedding_function=embedding)
27
+
28
+ llm_name = "gpt-3.5-turbo"
29
+
30
+ llm = ChatOpenAI(model_name=llm_name, temperature=0.7,
31
+ openai_api_key=openai_api_key)
32
+
33
+ qa_chain = RetrievalQA.from_chain_type(
34
+ llm,
35
+ retriever=vectordb.as_retriever(search_kwargs={"k": 5})
36
+ )
37
+
38
+
39
+ # Streamed response emulator
40
+ def response_generator(prompt):
41
+ response = qa_chain({"query": prompt})['result']
42
+
43
+ for word in response.split():
44
+ yield word + " "
45
+ time.sleep(0.05)
46
+
47
+
48
+ st.title("Technical Support Chatbot")
49
+
50
+ # Initialize chat history
51
+ if "messages" not in st.session_state:
52
+ st.session_state.messages = []
53
+
54
+ # Display chat messages from history on app rerun
55
+ for message in st.session_state.messages:
56
+ with st.chat_message(message["role"]):
57
+ st.markdown(message["content"])
58
+
59
+ # Accept user input
60
+ if prompt := st.chat_input("Enter your question here"):
61
+ # Add user message to chat history
62
+ st.session_state.messages.append({"role": "user", "content": prompt})
63
+ # Display user message in chat message container
64
+ with st.chat_message("user"):
65
+ st.markdown(prompt)
66
+
67
+ # Display assistant response in chat message container
68
+ with st.chat_message("assistant"):
69
+ response = st.write_stream(response_generator(prompt))
70
+ # Add assistant response to chat history
71
+ st.session_state.messages.append({"role": "assistant", "content": response})