Alexander Ripperton
Update app.py
a7f15c1
import os
import sys
import gradio as gr
import torch
from langchain import OpenAI
from langchain.embeddings.huggingface import HuggingFaceEmbeddings
from langchain.llms.base import LLM
from llama_index import (
Document,
GPTListIndex,
GPTSimpleVectorIndex,
LangchainEmbedding,
LLMPredictor,
PromptHelper,
SimpleDirectoryReader,
)
from transformers import pipeline
hfemb = HuggingFaceEmbeddings()
embed_model = LangchainEmbedding(hfemb)
#OpenAI.api_key = "YOUR_API_KEY"
def build_the_bot(input_text):
# set maximum input
max_input_size = 4096
# set number of output tokens
num_outputs = 256
# set maximum chunk overlap
max_chunk_overlap = 20
# set chunk size limit
chunk_size_limit = 600
#OpenAI.api_key = api_key
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=1, model_name="gpt-3.5-turbo", max_tokens=num_outputs )
)
text_list = [input_text]
documents = [Document(t) for t in text_list]
global index
index = GPTSimpleVectorIndex(
documents,
embed_model=embed_model,
llm_predictor=llm_predictor,
prompt_helper=prompt_helper,
)
return "Index saved successfully!!!"
def set_api_key(api_key):
#OpenAI.api_key = api_key
os.environ["OPENAI_API_KEY"] = api_key
return 'key has been set'
def chat(chat_history, user_input):
bot_response = index.query(user_input)
# print(bot_response)
response = ""
for letter in "".join(
bot_response.response
): # [bot_response[i:i+1] for i in range(0, len(bot_response), 1)]:
response += letter + ""
yield chat_history + [(user_input, response)]
with gr.Blocks() as demo:
gr.Markdown("This application allows you to give GPT-3.5 (ChatGPT) as much context as you want. Just insert the text you want GPT to use in the context box and a llama index will be created wich allows the model to query your contextual information.")
with gr.Tab("Input Context Information"):
openai_api_key = gr.Textbox(label= 'OpenAIAPIKey: ', type= 'password' )
api_out = gr.Textbox(label='API key stauts ')
api_button = gr.Button('set api key')
api_button.click(set_api_key, openai_api_key, api_out)
text_input = gr.Textbox(label = 'Some fun ideas for conext information: Academic research papers, Books, Articles, or even your message history so you can ask GPT interesting questions about you and the people you message.')
text_output = gr.Textbox(label = 'Depending on the length of your context information it may take a few minutes for the bot to build')
text_button = gr.Button("Build the Bot!")
text_button.click(build_the_bot, text_input, text_output)
with gr.Tab("Bot With Context"):
# inputbox = gr.Textbox("Input your text to build a Q&A Bot here.....")
chatbot = gr.Chatbot()
message = gr.Textbox("What is the context document about?")
message.submit(chat, [chatbot, message], chatbot)
demo.queue().launch(debug=True)