Spaces:
Runtime error
Runtime error
Upload boot.py
Browse files
boot.py
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# -*- coding: utf-8 -*-
|
| 2 |
+
"""custom_chatbot.ipynb
|
| 3 |
+
|
| 4 |
+
Automatically generated by Colaboratory.
|
| 5 |
+
|
| 6 |
+
Original file is located at
|
| 7 |
+
https://colab.research.google.com/drive/1xT4n5rN6yNyzf-CO8Pifz0yWCEI4VmjV
|
| 8 |
+
|
| 9 |
+
# Install the dependicies
|
| 10 |
+
Run the code below to install the depencies we need for our functions
|
| 11 |
+
"""
|
| 12 |
+
|
| 13 |
+
# Commented out IPython magic to ensure Python compatibility.
|
| 14 |
+
# %pip install llama-index
|
| 15 |
+
# %pip install langchain
|
| 16 |
+
# %pip install gradio
|
| 17 |
+
# %pip install openai
|
| 18 |
+
|
| 19 |
+
"""### **How to Train with your data. **
|
| 20 |
+
You can use your github repository link. Make sure repository name should be same as given repo.
|
| 21 |
+
"""
|
| 22 |
+
|
| 23 |
+
!git clone https://github.com/talib-raath/context_data.git
|
| 24 |
+
|
| 25 |
+
"""# Define the functions
|
| 26 |
+
The following code defines the functions we need to construct the index and query it
|
| 27 |
+
"""
|
| 28 |
+
|
| 29 |
+
from llama_index import SimpleDirectoryReader, GPTListIndex, readers, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
|
| 30 |
+
from langchain import OpenAI
|
| 31 |
+
import sys
|
| 32 |
+
import os
|
| 33 |
+
from IPython.display import Markdown, display
|
| 34 |
+
|
| 35 |
+
def construct_index(directory_path):
|
| 36 |
+
# set maximum input size
|
| 37 |
+
max_input_size = 4096
|
| 38 |
+
# set number of output tokens
|
| 39 |
+
num_outputs = 2000
|
| 40 |
+
# set maximum chunk overlap
|
| 41 |
+
max_chunk_overlap = 20
|
| 42 |
+
# set chunk size limit
|
| 43 |
+
chunk_size_limit = 600
|
| 44 |
+
|
| 45 |
+
# define LLM
|
| 46 |
+
llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.5, model_name="gpt-3.5-turbo", max_tokens=num_outputs))
|
| 47 |
+
prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)
|
| 48 |
+
|
| 49 |
+
documents = SimpleDirectoryReader(directory_path).load_data()
|
| 50 |
+
|
| 51 |
+
index = GPTSimpleVectorIndex.from_documents(documents)
|
| 52 |
+
|
| 53 |
+
index.save_to_disk('index.json')
|
| 54 |
+
|
| 55 |
+
return index
|
| 56 |
+
|
| 57 |
+
def ask_ai():
|
| 58 |
+
index = GPTSimpleVectorIndex.load_from_disk('index.json')
|
| 59 |
+
while True:
|
| 60 |
+
query = input("What do you want to ask? ")
|
| 61 |
+
response = index.query(query, response_mode="compact")
|
| 62 |
+
display(Markdown(f"Response: <b>{response.response}</b>"))
|
| 63 |
+
|
| 64 |
+
"""# Set OpenAI API Key
|
| 65 |
+
You can use this key also but it may expire if it does not work you can get his own api key
|
| 66 |
+
|
| 67 |
+
**Use this Key**
|
| 68 |
+
|
| 69 |
+
|
| 70 |
+
"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"
|
| 71 |
+
|
| 72 |
+
You need an OPENAI API key to be able to run this code.
|
| 73 |
+
|
| 74 |
+
If you don't have one yet, get it by [signing up](https://platform.openai.com/overview). Then click your account icon on the top right of the screen and select "View API Keys". Create an API key.
|
| 75 |
+
|
| 76 |
+
Then run the code below and paste your API key into the text input.
|
| 77 |
+
"""
|
| 78 |
+
|
| 79 |
+
os.environ["OPENAI_API_KEY"] = input("Paste your OpenAI key here and hit enter:")
|
| 80 |
+
|
| 81 |
+
"""#Construct an index
|
| 82 |
+
Now we are ready to construct the index. This will take every file in the folder 'data', split it into chunks, and embed it with OpenAI's embeddings API.
|
| 83 |
+
|
| 84 |
+
**Notice:** running this code will cost you credits on your OpenAPI account ($0.02 for every 1,000 tokens). If you've just set up your account, the free credits that you have should be more than enough for this experiment.
|
| 85 |
+
"""
|
| 86 |
+
|
| 87 |
+
construct_index("context_data")
|
| 88 |
+
|
| 89 |
+
import tkinter as tk
|
| 90 |
+
from llama_index import GPTSimpleVectorIndex, LLMPredictor, PromptHelper
|
| 91 |
+
from langchain import OpenAI
|
| 92 |
+
from IPython.display import Markdown, display
|
| 93 |
+
|
| 94 |
+
# Define the ask_ai() function
|
| 95 |
+
def ask_ai(question):
|
| 96 |
+
index = GPTSimpleVectorIndex.load_from_disk('index.json')
|
| 97 |
+
response = index.query(question, response_mode="compact")
|
| 98 |
+
return response.response
|
| 99 |
+
|
| 100 |
+
# Define the GUI
|
| 101 |
+
class ChatBotGUI:
|
| 102 |
+
def __init__(self, master):
|
| 103 |
+
self.master = master
|
| 104 |
+
master.title("Chat Bot")
|
| 105 |
+
|
| 106 |
+
# Create a label and an entry for the question
|
| 107 |
+
self.label = tk.Label(master, text="Ask me anything:")
|
| 108 |
+
self.label.pack()
|
| 109 |
+
|
| 110 |
+
self.entry = tk.Entry(master)
|
| 111 |
+
self.entry.pack()
|
| 112 |
+
|
| 113 |
+
# Create a button to submit the question
|
| 114 |
+
self.button = tk.Button(master, text="Submit", command=self.submit_question)
|
| 115 |
+
self.button.pack()
|
| 116 |
+
|
| 117 |
+
# Create a text box to display the response
|
| 118 |
+
self.textbox = tk.Text(master)
|
| 119 |
+
self.textbox.pack()
|
| 120 |
+
|
| 121 |
+
def submit_question(self):
|
| 122 |
+
question = self.entry.get()
|
| 123 |
+
response = ask_ai(question)
|
| 124 |
+
self.textbox.insert(tk.END, "You: " + question + "\n")
|
| 125 |
+
self.textbox.insert(tk.END, "Bot: " + response + "\n\n")
|
| 126 |
+
self.entry.delete(0, tk.END)
|
| 127 |
+
|
| 128 |
+
# Create an instance of the GUI and start the main loop
|
| 129 |
+
|
| 130 |
+
'''
|
| 131 |
+
root = tk.Tk()
|
| 132 |
+
chatbot_gui = ChatBotGUI(root)
|
| 133 |
+
root.mainloop()
|
| 134 |
+
'''
|
| 135 |
+
|
| 136 |
+
import gradio as gr
|
| 137 |
+
|
| 138 |
+
iface = gr.Interface(fn=ask_ai, inputs="text", outputs="text" ,title="Chatbot")
|
| 139 |
+
|
| 140 |
+
iface.launch(share = True)
|