File size: 2,433 Bytes
fbf2cff
eace261
eb9bbc9
2dc0026
22a9440
 
2dc0026
 
 
 
eb9bbc9
22a9440
f43048b
eace261
29ff848
f7a821d
eace261
65a1999
eace261
29ff848
 
2dc0026
eb9bbc9
2dc0026
eace261
2dc0026
 
 
9f81ae1
 
2dc0026
9f81ae1
 
eace261
9f81ae1
 
 
 
 
2dab601
96e634c
7a0a525
2dc0026
 
b8cfeb2
eace261
 
 
22a9440
 
92448df
22a9440
870e32c
22a9440
eb9bbc9
b8cfeb2
eace261
 
 
92448df
f807850
 
22a9440
75c051b
f807850
e9db06b
9139588
22a9440
eace261
 
 
 
 
 
 
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
from llama_index import GPTSimpleVectorIndex
from langchain import OpenAI
import gradio as gr
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)


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")

    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)
    
    # return the response
    return response.response



iface = gr.Interface(fn=chatbot, 
                     inputs=gr.inputs.Textbox("Enter your question"), 
                     outputs="text",
                     title="AI Chatbot trained on J. Haynes mediation material, v0.1",
                     description="test")
iface.launch()