standardteam commited on
Commit
0562abf
1 Parent(s): d33f21a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -4
app.py CHANGED
@@ -1,8 +1,51 @@
 
 
 
 
 
 
 
 
1
  import gradio as gr
 
2
 
3
- def square_number(input_number):
4
- return input_number ** 2
5
 
6
- custom_slider = gr.inputs.Slider(minimum=0, maximum=10, step=0.1, default=5, label="Select a number:")
7
- iface = gr.Interface(fn=square_number, inputs=custom_slider, outputs="text", description="Enter a number and get its square.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  iface.launch()
 
1
+ import os
2
+ from langchain.chains import RetrievalQA
3
+ from langchain.llms import OpenAI
4
+ from langchain.document_loaders import PyPDFLoader
5
+ from langchain.indexes import VectorstoreIndexCreator
6
+ from langchain.text_splitter import CharacterTextSplitter
7
+ from langchain.embeddings import OpenAIEmbeddings
8
+ from langchain.vectorstores import Chroma
9
  import gradio as gr
10
+ import tempfile
11
 
 
 
12
 
13
+ def qa(file, openaikey, query, chain_type, k):
14
+ os.environ["OPENAI_API_KEY"] = openaikey
15
+
16
+ # load document
17
+ loader = PyPDFLoader(file.name)
18
+ documents = loader.load()
19
+ # split the documents into chunks
20
+ text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
21
+ texts = text_splitter.split_documents(documents)
22
+ # select which embeddings we want to use
23
+ embeddings = OpenAIEmbeddings()
24
+ # create the vectorestore to use as the index
25
+ db = Chroma.from_documents(texts, embeddings)
26
+ # expose this index in a retriever interface
27
+ retriever = db.as_retriever(
28
+ search_type="similarity", search_kwargs={"k": k})
29
+ # create a chain to answer questions
30
+ qa = RetrievalQA.from_chain_type(
31
+ llm=OpenAI(), chain_type=chain_type, retriever=retriever, return_source_documents=True)
32
+ result = qa({"query": query})
33
+ print(result['result'])
34
+ return result["result"]
35
+
36
+
37
+ iface = gr.Interface(
38
+ fn=qa,
39
+ inputs=[
40
+ gr.inputs.File(label="Upload PDF"),
41
+ gr.inputs.Textbox(label="OpenAI API Key"),
42
+ gr.inputs.Textbox(label="Your question"),
43
+ gr.inputs.Dropdown(choices=['stuff', 'map_reduce', "refine", "map_rerank"], label="Chain type"),
44
+ gr.inputs.Slider(minimum=1, maximum=5, default=2, label="Number of relevant chunks"),
45
+ ],
46
+ outputs="text",
47
+ title="Question Answering with your PDF file",
48
+ description="Upload a PDF file, enter OpenAI API key, type a question and get your answer."
49
+ )
50
+
51
  iface.launch()