Spaces:
Runtime error
Runtime error
File size: 2,915 Bytes
22a9440 eb9bbc9 cf13932 22a9440 29ff848 eb9bbc9 22a9440 f43048b 29ff848 f7a821d 29ff848 96e634c fbce1e2 9496038 96e634c 29ff848 9f81ae1 eb9bbc9 29ff848 fbce1e2 96e634c 29ff848 8a40cf4 9f81ae1 ba37f7c 9f81ae1 96e634c 7a0a525 fbce1e2 9f81ae1 8a40cf4 9c95eb8 e06bba2 9f81ae1 0754fb2 29ff848 22a9440 eb9bbc9 29ff848 22a9440 d19a684 22a9440 96e634c 8a40cf4 22a9440 75c051b 22a9440 cf13932 7bd40e9 4623b74 22a9440 |
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 |
from gpt_index import GPTSimpleVectorIndex
from langchain import OpenAI
import gradio as gr
from gradio import Interface, Textbox
import sys
import os
import datetime
import huggingface_hub
from huggingface_hub import Repository
from datetime import datetime
import csv
os.environ["OPENAI_API_KEY"] = os.environ['SECRET_CODE']
# Need to write to persistent dataset because cannot store temp data on spaces
DATASET_REPO_URL = "https://huggingface.co/datasets/peterpull/MediatorBot"
DATA_FILENAME = "data.txt"
DATA_FILE = os.path.join("data", DATA_FILENAME)
# I am guessing we need a write access token.
HF_TOKEN = os.environ.get("HF_TOKEN")
print("HF TOKEN is none?", HF_TOKEN is None)
print("HF hub ver", huggingface_hub.__version__)
repo = Repository(
local_dir='data',
clone_from=DATASET_REPO_URL,
use_auth_token=HF_TOKEN)
print(f"Repo local_dir: {repo.local_dir}")
print(f"Repo files: {os.listdir(repo.local_dir)}")
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")
repo.push_to_hub() # Push changes to the remote repository
return generate_text()
#gets the index file which is the context data
def get_index(index_file_path):
if os.path.exists(index_file_path):
return GPTSimpleVectorIndex.load_from_disk(index_file_path)
else:
print(f"Error: '{index_file_path}' does not exist.")
sys.exit()
# passes the prompt to the chatbot
def chatbot(input_text, mentioned_person='Mediator John Haynes'):
index = get_index('./index/indexsmall.json')
prompt = f"You are {mentioned_person}: {input_text}\n\n At the end of your answer ask a provocative question."
response = index.query(prompt, response_mode="compact")
store_message(input_text,response)
print(f"Chat input: {input_text}\nChatbot response: {response.response}")
# return the response
return response.response
iface = Interface(
fn=chatbot,
inputs=Textbox("Enter your question"),
outputs="text",
title="AI Chatbot trained on J. Haynes mediation material, v0.5",
description="Please enter a question for the chatbot as though you were addressing Dr John Haynes eg How do you use intuition in a mediation?")
iface.launch()
|