Aitor commited on
Commit
e80297a
·
1 Parent(s): 50ac8e3

First CVchat app working version

Browse files
Files changed (2) hide show
  1. app.py +63 -0
  2. requirements.txt +6 -0
app.py ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import logging
3
+ from langchain.chains import RetrievalQA
4
+ from langchain.llms import OpenAI
5
+ from langchain.document_loaders import PDFMinerLoader
6
+ from langchain.indexes import VectorstoreIndexCreator
7
+ import os
8
+
9
+ def set_openai_key(raw_key):
10
+ logging.warning(raw_key)
11
+ os.environ["OPENAI_API_KEY"] = raw_key
12
+
13
+
14
+ def create_langchain(pdf_object):
15
+ logging.info(f"Creating langchain for {pdf_object.name}")
16
+ loader = PDFMinerLoader(pdf_object.name)
17
+ index_creator = VectorstoreIndexCreator()
18
+ docsearch = index_creator.from_loaders([loader])
19
+ chain = RetrievalQA.from_chain_type(
20
+ llm=OpenAI(),
21
+ chain_type="stuff",
22
+ retriever=docsearch.vectorstore.as_retriever(),
23
+ input_key="question",
24
+ verbose=True,
25
+ return_source_documents=True,
26
+ )
27
+ return chain, gr.Button.update(interactive=True)
28
+
29
+
30
+ def ask_question(chain, question_text):
31
+ logging.info(type(chain))
32
+ return chain({"question": question_text})["result"]
33
+
34
+ def create_ask(pdf_object, question_text):
35
+ loader = PDFMinerLoader(pdf_object.name)
36
+ index_creator = VectorstoreIndexCreator()
37
+ docsearch = index_creator.from_loaders([loader])
38
+ chain = RetrievalQA.from_chain_type(
39
+ llm=OpenAI(),
40
+ chain_type="stuff",
41
+ retriever=docsearch.vectorstore.as_retriever(),
42
+ input_key="question",
43
+ verbose=True,
44
+ return_source_documents=True,
45
+ )
46
+ return chain({"question": question_text})["result"]
47
+
48
+
49
+ with gr.Blocks() as demo:
50
+ # pdf_button = gr.Button(value="pdf_button")
51
+ oai_token = gr.Textbox(label="OpenAI Token", placeholder="Lm-iIas452gaw3erGtPar26gERGSA5RVkFJQST23WEG524EWEl")
52
+ oai_token.change(set_openai_key, oai_token)
53
+ pdf_object = gr.File(
54
+ label="Upload your CV in PDF format",
55
+ file_count="single",
56
+ type="file")
57
+ chain_state = gr.State()
58
+ # pdf_button.click(create_langchain, inputs=pdf_object, outputs=chain_state)
59
+ question_box = gr.Textbox(label="Question", value="Which are the candidate top hard skills? Enumerate in few bullet points.")
60
+ qa_button = gr.Button(value="Submit question", interactive=False)
61
+
62
+ lchain = pdf_object.change(create_langchain, inputs=pdf_object, outputs=[chain_state, qa_button])
63
+ qa_button.click(ask_question, inputs=[chain_state, question_box], outputs=gr.Textbox(label="Answer"))
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ openai
2
+ gradio
3
+ langchain
4
+ pdfminer.six
5
+ chromadb
6
+ tiktoken