EagleLoveAI commited on
Commit
1445abd
·
1 Parent(s): 3492791

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +82 -0
  2. requirements.txt +8 -0
app.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #Manual Q&A bot powered by chatGPT plus langchain.ipynb
2
+ #
3
+ #reference:
4
+ #https://blog.devgenius.io/chat-with-document-s-using-openai-chatgpt-api-and-text-embedding-6a0ce3dc8bc8
5
+ #Sung Kim Mar/09/2023
6
+ #
7
+ #Chat with Document(s) using OpenAI ChatGPT API and Text Embedding
8
+ #How to chat with any documents, PDFs, and books using OpenAI ChatGPT API and Text Embedding
9
+
10
+ # Import Python Packages
11
+ import os
12
+ import platform
13
+ import openai
14
+ import chromadb
15
+ import langchain
16
+ import magic
17
+ import os
18
+ import nltk
19
+
20
+ from langchain.embeddings.openai import OpenAIEmbeddings
21
+ from langchain.vectorstores import Chroma
22
+ from langchain.text_splitter import TokenTextSplitter
23
+ from langchain.llms import OpenAI
24
+ from langchain.chains import ChatVectorDBChain, VectorDBQA
25
+ from langchain.document_loaders import GutenbergLoader
26
+ from langchain.document_loaders import UnstructuredPDFLoader
27
+ from langchain.document_loaders import UnstructuredURLLoader
28
+ from langchain.document_loaders import OnlinePDFLoader
29
+ from langchain.document_loaders import PDFMinerLoader
30
+ from langchain.document_loaders import UnstructuredFileLoader
31
+
32
+ disclaimer = ("""
33
+ #### Disclaimer and Precautions
34
+ ###### Use of this tool is at your own risk. The creator cannot be held responsible for any harm caused by this tool.
35
+ ###### The creator is not responsible for any damages caused to users or third parties as a result of such content.
36
+ """)
37
+
38
+ # Configure Chroma
39
+ persist_directory="/data/"
40
+
41
+ #Convert local file to Embedding (txt file is better)
42
+ loader = UnstructuredFileLoader('data/ChatGPT_S_ND.txt')
43
+ paldoc = loader.load()
44
+
45
+ openai.api_key = os.environ.get("OPENAI_API_KEY")
46
+
47
+ #OPENAI_API_KEY = os.getenv('openai_api_key')
48
+ #OPENAI_API_KEY = "openai_api_key"
49
+
50
+ #local file
51
+ text_splitter = TokenTextSplitter(chunk_size=100, chunk_overlap=30)
52
+ paldocs = text_splitter.split_documents(paldoc)
53
+
54
+ embeddings = OpenAIEmbeddings()
55
+
56
+ vStore = Chroma.from_documents(paldocs, embeddings)
57
+
58
+ from langchain.chains import RetrievalQA
59
+ from langchain.chat_models import ChatOpenAI
60
+
61
+ # RetrievalQA
62
+ model = RetrievalQA.from_chain_type(
63
+ llm=ChatOpenAI(temperature=0.5, model_name="gpt-3.5-turbo-16k", max_tokens = 256),
64
+ chain_type="stuff",
65
+ retriever=vStore.as_retriever()
66
+ )
67
+
68
+ #open as a demo Web app using Gradio
69
+ import gradio as gr
70
+ # 関数を定義
71
+ def askandanswer(question, Language): return model.run("Please create a simple answer to the question from in " + Language + ". [Question] " + question)
72
+ # Webアプリを作成
73
+ app = gr.Interface(fn=askandanswer,
74
+ inputs= [gr.Textbox(placeholder="Please input query "),
75
+ gr.Dropdown(["中文 Chinese", "英語 English"], label="言語 Language")],
76
+ outputs="text",
77
+ title="Chat with Document(s) using OpenAI ChatGPT API and Text Embedding",
78
+ description= "How to chat with any documents, PDFs, and books using OpenAI ChatGPT API and Text Embedding",
79
+ article= (disclaimer),
80
+ )
81
+ # Webアプリを起動
82
+ app.launch()
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ openai
2
+ chromadb
3
+ langchain
4
+ tiktoken
5
+ unstructured
6
+ pdfminer-six
7
+ pdf2image
8
+ gradio