EstherV1 / app.py
WICKED4950's picture
Update app.py
995cb38 verified
raw
history blame
2.5 kB
import gradio as gr
from transformers import AutoTokenizer, TFBlenderbotForConditionalGeneration
import tensorflow as tf
import json
import os
from datetime import datetime
from huggingface_hub import login, create_repo, upload_file
login(os.environ.get("hf_token"))
data = {"Interactions":[]}
with open("question_answer.json", "w") as file:
json.dump(data, file, indent=4)
print("Loading the model......")
model_name = "WICKED4950/Esther_V1"
strategy = tf.distribute.MirroredStrategy()
tf.config.optimizer.set_jit(True) # Enable XLA
tokenizer = AutoTokenizer.from_pretrained(model_name)
with strategy.scope():
model = TFBlenderbotForConditionalGeneration.from_pretrained(model_name)
def save_question(question,answer,path = "question_answer.json"):
with open(path, "r") as file:
data = json.load(file)
data["Interactions"].append({"Question:":question,"Answer:":answer,"Time:":datetime.now().strftime("%Y-%m-%d %H:%M:%S")})
with open(path, "w") as file:
json.dump(data, file, indent=4)
print("Interface getting done....")
# Define the chatbot function
def predict(user_input):
if user_input == "Print_data_hmm":
with open("question_answer.json", "r") as file:
print(json.load(file))
print()
return "Done"
else:
inputs = tokenizer(user_input, return_tensors="tf", padding=True, truncation=True,max_length=128)
# Generate the response using the model
response_id = model.generate(
inputs['input_ids'],
max_length=128, # Set max length of response
do_sample=True, # Sampling for variability
top_k=20, # Consider top 50 tokens
top_p=0.90, # Nucleus sampling
temperature=0.8 # Adjusts creativity of response
)
# Decode the response
response = tokenizer.decode(response_id[0], skip_special_tokens=True)
save_question(question = user_input,answer=response)
return response
# Gradio interface
gr.Interface(
fn=predict,
inputs=gr.Textbox(label="Ask anything!"),
outputs=gr.Textbox(label="Response"),
examples=[
["Hey! What is your name?"],
["Who created you? And why?"],
],
description="A chatbot trained to provide friendly and comforting responses. Type your question below and let Esther help!",
title="Esther - Your Friendly Mental Health Chatbot",
).launch()