SearchDemo / app.py
demoPOC's picture
Update app.py
f7a2e50
raw
history blame
3.15 kB
import openai
import numpy as np
import pandas as pd
import os
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.embeddings.huggingface import HuggingFaceEmbeddings
from langchain import HuggingFaceHub
from langchain.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.llms import OpenAI
from langchain.chains import RetrievalQA
from langchain.chains import VectorDBQA
from langchain.document_loaders import TextLoader
from langchain.document_loaders import UnstructuredFileLoader
from flask import Flask, jsonify, render_template, request
from werkzeug.utils import secure_filename
from werkzeug.datastructures import FileStorage
import nltk
nltk.download("punkt")
import warnings
warnings.filterwarnings("ignore")
openai.api_key=os.getenv("OPENAI_API_KEY")
import flask
import os
from dotenv import load_dotenv
load_dotenv()
loader = UnstructuredFileLoader('Jio.txt', mode='elements')
documents= loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()
doc_search = Chroma.from_documents(texts,embeddings)
chain = VectorDBQA.from_chain_type(llm=OpenAI(temperature=0.0), chain_type="stuff", vectorstore=doc_search)
app = flask.Flask(__name__, template_folder="./")
# Create a directory in a known location to save files to.
uploads_dir = os.path.join(app.root_path,'static', 'uploads')
os.makedirs(uploads_dir, exist_ok=True)
@app.route('/Home')
def index():
return flask.render_template('index.html')
@app.route('/post_json', methods=['POST'])
def process_json():
content_type = request.headers.get('Content-Type')
if (content_type == 'application/json'):
requestQuery = request.get_json()
response= chain.run(requestQuery['query'])
print("Ques:>>>>"+requestQuery['query']+"\n Ans:>>>"+response)
return jsonify(botMessage=response);
else:
return 'Content-Type not supported!'
@app.route('/file_upload',methods=['POST'])
def file_Upload():
#print(request.headers.get('Content-Type'))
file=request.files['file']
print(uploads_dir)
global chain;
file.save(os.path.join(uploads_dir, secure_filename(file.filename)))
loader = UnstructuredFileLoader(os.path.join(uploads_dir, secure_filename(file.filename)), mode='elements')
documents= loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
texts = text_splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()
doc_search = Chroma.from_documents(texts,embeddings)
chain = VectorDBQA.from_chain_type(llm=OpenAI(), chain_type="stuff", vectorstore=doc_search)
return render_template("index.html")
@app.route('/')
def KBUpload():
return render_template("KBTrain.html")
@app.route('/aiassist')
def aiassist():
return render_template("index.html")
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))