File size: 4,098 Bytes
89a81e4 fdd972b 89a81e4 cf92df6 89a81e4 cf92df6 89a81e4 cf92df6 89a81e4 cf92df6 fdd972b cf92df6 89a81e4 cf92df6 89a81e4 fdd972b 89a81e4 cf92df6 fdd972b 89a81e4 |
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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
import os
from dotenv import load_dotenv
from PyPDF2 import PdfReader
import openai
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Chroma
from langchain.vectorstores.pinecone import Pinecone
#from langchain import LLMChain
from langchain.chains import ConversationalRetrievalChain
from langchain.llms import OpenAI
from langchain.memory import ConversationBufferMemory
import streamlit as st
import os
from elevenlabs import generate
def db(texts,text_splitter,api):
chunks = text_splitter.split_text(texts)
embeddings = OpenAIEmbeddings()
db = Chroma.from_texts(chunks, embeddings)
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k":2})
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
qa = ConversationalRetrievalChain.from_llm(llm=OpenAI(temperature=0), retriever=retriever, chain_type="refine",memory=memory)
return qa
def ai(prompt):
file = open("save.txt","r")
system_prompt = str(file.read())
print(system_prompt)
file.close()
#prompt=system_prompt+str(": question is :")+prompt
result = qa({"question": prompt, "chat_history": chat_history})
return result["answer"]
def set_environment_variable(api_key):
# Set the environment variable for the OpenAI API key
os.environ["OPENAI_API_KEY"] = api_key
def main():
global qa, chat_history
placeholder=st.empty()
placeholder.empty()
placeholder.title("your openai api key")
global api
api=st.text_input("enter here")
if st.button("Load API Key"):
# Set the environment variable with the provided API key
set_environment_variable(api)
st.success("API key loaded successfully!")
placeholder.title("Upload or Chat PDF")
#st.header("PDF/URL QA")
#global system_prompt
names = ['Upload', 'Random talk']
page = st.radio('Format', names)
if page == 'Upload':
pdf = st.file_uploader("Upload your PDF", type="pdf")
if pdf is not None:
#print(pdf)
pdf_reader = PdfReader(pdf)
texts = ""
for page in pdf_reader.pages:
texts += page.extract_text()
text_splitter = CharacterTextSplitter(
separator="\n",
chunk_size = 1000,
chunk_overlap = 0
)
qa=db(texts,text_splitter,api)
chat_history = []
st.header("PDF/URL QA")
query = st.text_input("Ask a question in PDF")
if query:
output = ai(query)
chat_history=chat_history.append(query)
st.write(output)
# set_api_key("<YOUR_API_KEY>") # Check the guide on how to get a free API key: https://docs.elevenlabs.io/authentication/01-xi-api-key
XI_API_KEY = "<xi-api-key>"
audio = generate(
text=output,
voice="Bella"
)
st.audio(audio)
elif page == 'Random talk':
chat_history=[]
st.header("Start Chatting")
message=st.text_input("Your message")
if st.button('reply'):
prompt = "\"Act like a personal assistant. You can respond to questions, translate sentences, summarize news, and give recommendations. " + message + "\""
# Call the OpenAI Api to process our prompt
openai_response = openai.Completion.create(model="text-davinci-003", prompt=prompt,max_tokens=4000)
print("openai response:", openai_response)
# Parse the response to get the response text for our prompt
response_text = openai_response.choices[0].text
st.write( response_text)
XI_API_KEY = "<xi-api-key>"
audio = generate(
text=response_text,
voice="Bella"
)
st.audio(audio)
if __name__ == "__main__":
main() |