ChatBot-BANAO / app.py
sudip1310's picture
Update app.py
ed69f4c
#!git clone https://github.com/sudipmondal1310/Internship.git
#!pip install llama-index==0.5.6
#!pip install langchain==0.0.148
from llama_index import SimpleDirectoryReader, GPTListIndex, readers, GPTSimpleVectorIndex, LLMPredictor, PromptHelper, ServiceContext
from langchain import OpenAI
import sys
import os
from IPython.display import Markdown, display
import time
import random
import gradio as gr
def construct_index(directory_path):
# set maximum input size
max_input_size = 4096
# set number of output tokens
num_outputs = 2000
# set maximum chunk overlap
max_chunk_overlap = 20
# set chunk size limit
chunk_size_limit = 600
# define prompt helper
prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
# define LLM
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.5, model_name="text-davinci-003", max_tokens=num_outputs))
documents = SimpleDirectoryReader(directory_path).load_data()
service_context = ServiceContext.from_defaults(llm_predictor=llm_predictor, prompt_helper=prompt_helper)
index = GPTSimpleVectorIndex.from_documents(documents, service_context=service_context)
index.save_to_disk('index.json')
return index
def ask_ai_new(query):
index = GPTSimpleVectorIndex.load_from_disk('index.json')
while True:
#query = input("What do you want to ask? ")
response = index.query(query)
response = Markdown(f"<b>{response.response}</b>")
print(response)
return response.data
os.environ["OPENAI_API_KEY"]="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"
construct_index("Data")
#pip install gradio
with gr.Blocks() as demo:
chatbot = gr.Chatbot()
query = gr.inputs.Textbox(label="Enter your message here")
clear = gr.Button("Clear")
def user(user_message, history):
return "", history + [[user_message, None]]
def bot(history):
bot_message = ask_ai_new(history[-1][0])
print(bot_message)
history[-1][1] = ""
for character in bot_message:
history[-1][1] += character
time.sleep(0.05)
yield history
query.submit(user, [query, chatbot], [query, chatbot], queue=False).then(
bot, chatbot, chatbot
)
clear.click(lambda: None, None, chatbot, queue=False)
demo.queue()
demo.launch()