Spaces:
Build error
Build error
from my_functions.save_response import save_response | |
from llama_index import ( | |
SimpleDirectoryReader, | |
GPTListIndex, | |
GPTSimpleVectorIndex, | |
LLMPredictor, | |
PromptHelper, | |
ServiceContext, | |
) | |
from llama_index.node_parser import SimpleNodeParser | |
from langchain import OpenAI | |
import gradio as gr | |
import sys | |
import os | |
import os.path | |
import shutil | |
from dotenv import load_dotenv | |
# Load environment variables from .env file | |
load_dotenv() | |
# Get the value of OPENAI_API_KEY from the environment | |
api_key = os.getenv("OPENAI_API_KEY") | |
# Use the API key in your code | |
os.environ["OPENAI_API_KEY"] = api_key | |
sys.path.append("/my_functions") | |
# Defining the parameters for the index | |
max_input_size = 4096 | |
num_outputs = 1024 | |
max_chunk_overlap = 20 | |
prompt_helper = PromptHelper( | |
max_input_size, | |
num_outputs, | |
max_chunk_overlap, | |
) | |
llm_predictor = LLMPredictor( | |
llm=OpenAI(temperature=0.7, model_name="gpt-3.5-turbo", max_tokens=num_outputs) | |
) | |
service_context = ServiceContext.from_defaults( | |
llm_predictor=llm_predictor, prompt_helper=prompt_helper | |
) | |
def construct_index(directory_path): | |
if os.path.isfile("index.json"): | |
# Index file exists, so we'll load it and add new documents to it | |
index = GPTSimpleVectorIndex.load_from_disk( | |
"index.json", service_context=service_context | |
) | |
documents = SimpleDirectoryReader(directory_path).load_data() | |
for doc in documents: | |
index.insert(doc, service_context=service_context) | |
index.save_to_disk("index.json") | |
else: | |
# Index file doesn't exist, so we'll create a new index from scratch | |
documents = SimpleDirectoryReader(directory_path).load_data() | |
index = GPTSimpleVectorIndex.from_documents( | |
documents, service_context=service_context | |
) | |
index.save_to_disk("index.json") | |
# Define the paths to the source and destination folders | |
absolute_path = os.path.dirname(__file__) | |
src_folder = os.path.join(absolute_path, "docs/") | |
dest_folder = os.path.join(absolute_path, "indexed_documents/") | |
# Get a list of all the files in the source folder | |
files = os.listdir(src_folder) | |
# Move each file from the source folder to the destination folder, | |
# except for the "do_not_delete.txt" file | |
for file in files: | |
if file != "do_not_delete.txt": | |
src_path = os.path.join(src_folder, file) | |
dest_path = os.path.join(dest_folder, file) | |
shutil.move(src_path, dest_path) | |
return index | |
def chatbot(input_text): | |
index = GPTSimpleVectorIndex.load_from_disk( | |
"index.json", service_context=service_context | |
) | |
response = index.query(input_text, response_mode="default") | |
try: | |
save_response(input_text, response) | |
except Exception as e: | |
print("Error saving response:", e) | |
return response.response, response.get_formatted_sources() | |
iface = gr.Interface( | |
fn=chatbot, | |
inputs=gr.inputs.Textbox(lines=2, label="Enter your text"), | |
outputs=[gr.Textbox(lines=30, label="Output"), gr.Textbox(lines=4, label="Source")], | |
title="Custom-trained AI Chatbot", | |
) | |
index = construct_index("docs") | |
iface.launch() | |