import os from langchain.chains import RetrievalQA from langchain.llms import AzureOpenAI from langchain.document_loaders import TextLoader from langchain.document_loaders import PyPDFLoader from langchain.indexes import VectorstoreIndexCreator from langchain.text_splitter import CharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.chains.question_answering import load_qa_chain from langchain.llms import AzureOpenAI from langchain.chains.question_answering import load_qa_chain import streamlit as st from PIL import Image import time image = Image.open('Wipro logo.png') st.image(image) st.title("Wipro impact | The inquisitive sustainability leader") st.header("Learn some of the best practices in sustainability from success stories of leading companies.. ") st.subheader("Welcome!. Today, What company's sustainability story is inspiring you ?.. ") os.environ['OPENAI_API_TYPE'] = 'azure' os.environ['OPENAI_API_VERSION'] = '2023-03-15-preview' llmgpt3 = AzureOpenAI( deployment_name="testdavanci", model_name="text-davinci-003" ) #llmchatgpt = AzureOpenAI( deployment_name="esujnand", model_name="gpt-35-turbo" ) with st.form("my_form"): myurl = st.text_input("Give the URL to find a sustainability or annual report", "https://www.wipro.com/content/dam/nexus/en/sustainability/sustainability_reports/wipro-sustainability-report-fy-2021-22.pdf") yourquestion = st.text_input('Ask your question on best practices', 'What is Wipro plans for Biodiversity in 2024?') st.write('Your input is ', yourquestion) # Every form must have a submit button. submitted = st.form_submit_button("Ask question") if submitted: st.write("AI is looking for the answer...It will take atleast 2 mintutes... Answers will appear below....") if myurl: index = None loader1 = PyPDFLoader(myurl) langchainembeddings = OpenAIEmbeddings(deployment="textembedding", chunk_size=1) index = VectorstoreIndexCreator( # split the documents into chunks text_splitter=CharacterTextSplitter(chunk_size=1000, chunk_overlap=0), # select which embeddings we want to use embedding=langchainembeddings, # use Chroma as the vectorestore to index and search embeddings vectorstore_cls=Chroma ).from_loaders([loader1]) st.write("indexed PDF...AI finding answer....please wait") if yourquestion: answer = index.query(llm=llmgpt3, question=yourquestion, chain_type="map_reduce") st.subheader(answer)