Spaces:
Build error
Build error
| #Manual Q&A bot powered by chatGPT plus langchain.ipynb | |
| # | |
| #reference: | |
| #https://blog.devgenius.io/chat-with-document-s-using-openai-chatgpt-api-and-text-embedding-6a0ce3dc8bc8 | |
| #Sung Kim Mar/09/2023 | |
| # | |
| #Chat with Document(s) using OpenAI ChatGPT API and Text Embedding | |
| #How to chat with any documents, PDFs, and books using OpenAI ChatGPT API and Text Embedding | |
| # Import Python Packages | |
| import os | |
| import platform | |
| import openai | |
| import chromadb | |
| import langchain | |
| import magic | |
| import os | |
| import nltk | |
| from langchain.embeddings.openai import OpenAIEmbeddings | |
| from langchain.vectorstores import Chroma | |
| from langchain.text_splitter import TokenTextSplitter | |
| from langchain.llms import OpenAI | |
| from langchain.chains import ChatVectorDBChain, VectorDBQA | |
| from langchain.document_loaders import GutenbergLoader | |
| from langchain.document_loaders import UnstructuredPDFLoader | |
| from langchain.document_loaders import UnstructuredURLLoader | |
| from langchain.document_loaders import OnlinePDFLoader | |
| from langchain.document_loaders import PDFMinerLoader | |
| from langchain.document_loaders import UnstructuredFileLoader | |
| disclaimer = (""" | |
| #### Disclaimer and Precautions | |
| ###### Use of this tool is at your own risk. The creator cannot be held responsible for any harm caused by this tool. | |
| ###### The creator is not responsible for any damages caused to users or third parties as a result of such content. | |
| """) | |
| # Configure Chroma | |
| persist_directory="/data/" | |
| #Convert local file to Embedding (txt file is better) | |
| loader = UnstructuredFileLoader('ChatGPT_S_ND.txt') | |
| paldoc = loader.load() | |
| openai.api_key = os.environ.get("OPENAI_API_KEY") | |
| #OPENAI_API_KEY = os.getenv('openai_api_key') | |
| #OPENAI_API_KEY = "openai_api_key" | |
| #local file | |
| text_splitter = TokenTextSplitter(chunk_size=100, chunk_overlap=30) | |
| paldocs = text_splitter.split_documents(paldoc) | |
| embeddings = OpenAIEmbeddings() | |
| vStore = Chroma.from_documents(paldocs, embeddings) | |
| from langchain.chains import RetrievalQA | |
| from langchain.chat_models import ChatOpenAI | |
| # RetrievalQA | |
| model = RetrievalQA.from_chain_type( | |
| llm=ChatOpenAI(temperature=0.5, model_name="gpt-3.5-turbo-16k", max_tokens = 256), | |
| chain_type="stuff", | |
| retriever=vStore.as_retriever() | |
| ) | |
| #open as a demo Web app using Gradio | |
| import gradio as gr | |
| # 関数を定義 | |
| def askandanswer(question, Language): return model.run("Please create a simple answer to the question from in " + Language + ". [Question] " + question) | |
| # Webアプリを作成 | |
| app = gr.Interface(fn=askandanswer, | |
| inputs= [gr.Textbox(placeholder="Please input query "), | |
| gr.Dropdown(["中文 Chinese", "英語 English"], label="言語 Language")], | |
| outputs="text", | |
| title="Chat with Document(s) using OpenAI ChatGPT API and Text Embedding", | |
| description= "How to chat with any documents, PDFs, and books using OpenAI ChatGPT API and Text Embedding", | |
| article= (disclaimer), | |
| ) | |
| # Webアプリを起動 | |
| app.launch() |