Spaces:
Runtime error
Runtime error
File size: 3,773 Bytes
b5ba5bf eb9bbc9 66bddd0 2dc0026 22a9440 2dc0026 86fd671 2dc0026 eb9bbc9 22a9440 f43048b 66bddd0 29ff848 f7a821d 66bddd0 792f0d9 65a1999 877669b 86fd671 877669b 66bddd0 29ff848 2dc0026 eb9bbc9 66bddd0 2dc0026 66bddd0 2dc0026 792f0d9 66bddd0 9f81ae1 b3f8239 9f81ae1 2dc0026 9f81ae1 66bddd0 9f81ae1 2dab601 96e634c 7a0a525 2dc0026 66bddd0 877669b 8fca2e6 877669b eace261 66bddd0 22a9440 66bddd0 103238e 6f17570 22a9440 870e32c 22a9440 eb9bbc9 66bddd0 b8cfeb2 66bddd0 103238e f807850 22a9440 75c051b f807850 e9db06b 9139588 66bddd0 22a9440 66bddd0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | from gpt_index import GPTSimpleVectorIndex
import gradio as gr
from gradio import Interface, Textbox
import sys
import os
import datetime
import huggingface_hub
from huggingface_hub import Repository, HfApi
from datetime import datetime
import csv
os.environ["OPENAI_API_KEY"] = os.environ['SECRET_CODE']
# Best practice is to use a persistent dataset
DATASET_REPO_URL = "https://huggingface.co/datasets/peterpull/MediatorBot"
DATA_FILENAME = "data.txt"
INDEX_FILENAME = "index2.json"
DATA_FILE = os.path.join("data", DATA_FILENAME)
INDEX_FILE = os.path.join("data", INDEX_FILENAME)
#this will be called later to upload the chat history back to the dataset
api=HfApi()
# we need a HF access token - read I think suffices becuase we are cloning the distant repo to local space repo.
HF_TOKEN = os.environ.get("HF_TOKEN")
print("HF TOKEN is none?", HF_TOKEN is None)
print("HF hub ver", huggingface_hub.__version__)
#Clones the distant repo to the local repo
repo = Repository(
local_dir='data',
clone_from=DATASET_REPO_URL,
use_auth_token=HF_TOKEN)
#PRINT file locations
print(f"Repo local_dir: {repo.local_dir}")
print(f"Repo files: {os.listdir(repo.local_dir)}")
print (f"Index file:{INDEX_FILENAME}")
def generate_text() -> str:
with open(DATA_FILE) as file:
text = ""
for line in file:
row_parts = line.strip().split(",")
if len(row_parts) != 3:
continue
user, chatbot, time = row_parts
text += f"Time: {time}\nUser: {user}\nChatbot: {chatbot}\n\n"
return text if text else "No messages yet"
def store_message(chatinput: str, chatresponse: str):
if chatinput and chatresponse:
with open(DATA_FILE, "a") as file:
file.write(f"{datetime.now()},{chatinput},{chatresponse}\n")
print(f"Wrote to datafile: {datetime.now()},{chatinput},{chatresponse}\n")
#need to find a way to push back to dataset repo
api.upload_file(
path_or_fileobj='/data/data.txt',
path_in_repo='logs/data.txt',
repo_id="peterpull/MediatorBot",
repo_type="dataset")
return generate_text()
def get_index(index_file_path):
if os.path.exists(index_file_path):
#print 500 characters of json header
print_header_json_file(index_file_path)
index_size = os.path.getsize(index_file_path)
print(f"Size of {index_file_path}: {index_size} bytes") #let me know how big json file is.
loaded_index = GPTSimpleVectorIndex.load_from_disk(index_file_path)
return loaded_index
else:
print(f"Error: '{index_file_path}' does not exist.")
sys.exit()
def print_header_json_file(filepath):
with open(filepath, 'r') as f:
file_contents = f.read()
print ("JSON FILE HEADER:")
print(file_contents[:500]) # print only the first 500 characters
index = get_index(INDEX_FILE)
# passes the prompt to the chatbot
def chatbot(input_text, mentioned_person='Mediator John Haynes', confidence_threshold=0.5):
prompt = f"You are {mentioned_person}. Answer this: {input_text}. Reply from the contextual data or say you don't know. To finish, ask an insightful question."
response = index.query(prompt, response_mode="default", verbose=True)
store_message(input_text,response)
# return the response
return response.response
with open('about.txt', 'r') as file:
about = file.read()
iface = Interface(
fn=chatbot,
inputs=Textbox("Enter your question"),
outputs="text",
title="AI Chatbot trained on J. Haynes mediation material, v0.5",
description=about)
iface.launch() |