Spaces:
Sleeping
Sleeping
File size: 1,931 Bytes
af98dc3 acfe4e6 af98dc3 f092570 af98dc3 f092570 af98dc3 acfe4e6 f092570 acfe4e6 af98dc3 7821cec f092570 af98dc3 7821cec f092570 af98dc3 7821cec af98dc3 acfe4e6 af98dc3 7821cec |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
import os
import pinecone
import openai
from langchain.embeddings.openai import OpenAIEmbeddings
# from langchain.text_splitter import CharacterTextSplitter
# from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import Pinecone
from langchain.chains import ConversationalRetrievalChain
from langchain.chat_models import ChatOpenAI
import streamlit as st
def _initialize_env():
pinecone.init(
api_key=st.secrets["pinecone_api_key"],
environment=st.secrets["pinecone_env"]
)
openai.api_key = st.secrets["openai_api_key"]
os.environ['OPENAI_API_KEY'] = st.secrets["openai_api_key"]
def _initialize_indexes():
embeddings = OpenAIEmbeddings()
# loader = PyPDFLoader("./etf-book.pdf")
# documents = loader.load()
# text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
# docs = text_splitter.split_documents(documents)
# db = Pinecone.from_documents(
# docs,
# embeddings,
# index_name=st.secrets["pinecone_table_name"]
# )
db_object = Pinecone.from_existing_index(
st.secrets["pinecone_table_name"],
embeddings
)
return db_object
def _initialize_retriever(db_object):
retriever = db_object.as_retriever(search_type="similarity", search_kwargs={"k": 2})
qa = ConversationalRetrievalChain.from_llm(
ChatOpenAI(temperature=0),
retriever
)
return qa
chat_history = []
def answer(user_input):
if user_input == '':
return
global chat_history
result = qa({
"question": user_input,
"chat_history": chat_history
})
chat_history.append((user_input, result["answer"]))
chat_history = chat_history[-10:]
st.write(
"Bot: ",
result["answer"]
)
_initialize_env()
db = _initialize_indexes()
qa = _initialize_retriever(db)
question = st.text_input('Question')
answer(question)
|