import gradio as gr import os from transformers import pipeline title = "❤️🧠MindfulStory📖💾MemoryMaker" examples = [ ["Music and art make me feel"], ["Feel better each day when you awake by"], ["Feel better physically by"], ["Practicing mindfulness each day"], ["Be happier by"], ["Meditation can improve health"], ["Spending time outdoors"], ["Stress is relieved by quieting your mind, getting exercise and time with nature"], ["Break the cycle of stress and anxiety"], ["Feel calm in stressful situations"], ["Deal with work pressure"], ["Learn to reduce feelings of overwhelmed"] ] from gradio import inputs from gradio.inputs import Textbox from gradio import outputs # PersistDataset ----- import os import csv import gradio as gr from gradio import inputs, outputs import huggingface_hub from huggingface_hub import Repository, hf_hub_download, upload_file from datetime import datetime # created new dataset as awacke1/MindfulStory.csv DATASET_REPO_URL = "https://huggingface.co/datasets/awacke1/MindfulStory.csv" DATASET_REPO_ID = "awacke1/MindfulStory.csv" DATA_FILENAME = "MindfulStory.csv" DATA_FILE = os.path.join("data", DATA_FILENAME) HF_TOKEN = os.environ.get("HF_TOKEN") SCRIPT = """ """ # Download dataset repo using hub download try: hf_hub_download( repo_id=DATASET_REPO_ID, filename=DATA_FILENAME, cache_dir=DATA_DIRNAME, force_filename=DATA_FILENAME ) except: print("file not found") # Set up cloned dataset from repo for operations repo = Repository( local_dir="data", clone_from=DATASET_REPO_URL, use_auth_token=HF_TOKEN ) def generate_html() -> str: with open(DATA_FILE) as csvfile: reader = csv.DictReader(csvfile) rows = [] for row in reader: rows.append(row) rows.reverse() if len(rows) == 0: return "no messages yet" else: html = "
" for row in rows: html += "
" html += f"{row['inputs']}" html += f"{row['outputs']}" html += "
" html += "
" return html def persist_memory(name: str, message: str): if name and message: with open(DATA_FILE, "a") as csvfile: writer = csv.DictWriter(csvfile, fieldnames=["name", "message", "time"]) writer.writerow( {"name": name, "message": message, "time": str(datetime.now())} ) commit_url = repo.push_to_hub() return {"name": name, "message": message, "time": str(datetime.now())} iface = gr.Interface( persist_memory, [ inputs.Textbox(placeholder="Your name"), inputs.Textbox(placeholder="Your message", lines=2), ], "html", css=""" .message {background-color:cornflowerblue;color:white; padding:4px;margin:4px;border-radius:4px; } """, ) #store_message(message, response) # Save to dataset #generator2 = gr.Interface.load("huggingface/EleutherAI/gpt-neo-2.7B", api_key=HF_TOKEN) #generator3 = gr.Interface.load("huggingface/EleutherAI/gpt-j-6B", api_key=HF_TOKEN) #generator1 = gr.Interface.load("huggingface/gpt2-large", api_key=HF_TOKEN) #greeter_1 = gr.Interface(lambda name: f"Hello {name}!", inputs="textbox", outputs=gr.Textbox(label="Greeter 1")) #greeter_2 = gr.Interface(lambda name: f"Greetings {name}!", inputs="textbox", outputs=gr.Textbox(label="Greeter 2")) #demo = gr.Parallel(greeter_1, greeter_2) #generator1 = gr.Interface(lambda name: f"Hello {name}!", inputs="textbox", outputs=gr.Textbox(label="GPT2-Large")).load("huggingface/gpt2-large", api_key=HF_TOKEN) tbOutput = gr.Textbox(label="GPT Output") #generator1 = gr.Interface(lambda name: f"Hello {name}!", inputs="textbox", outputs=[tbOutput]).load("huggingface/gpt2-large", api_key=HF_TOKEN) #generator1 = generator1 = gr.Interface.load("huggingface/gpt2-large", api_key=HF_TOKEN) #generator2 = gr.Interface.load("huggingface/EleutherAI/gpt-neo-2.7B", api_key=HF_TOKEN) #generator3 = gr.Interface.load("huggingface/EleutherAI/gpt-j-6B", api_key=HF_TOKEN) #model_1_iface = gr.Interface( fn=your_function_1, inputs=gr.inputs.Textbox(), outputs=gr.outputs.Label(num_top_classes=10)) #model_2_iface = gr.Interface( fn= your_function_2, inputs=gr.inputs.Textbox(), outputs=gr.outputs.Label(num_top_classes=10),) generator1 = gr.Interface(fn=persist_memory,inputs=gr.inputs.Textbox(),outputs=gr.outputs.Label(num_top_classes=10) ).load("huggingface/gpt2-large",api_key=HF_TOKEN) #OutputsGen=gr.outputs.Label(num_top_classes=10) #generator1 = gr.Interface(fn=persist_memory,inputs=[OutputsGen, OutputsGen],outputs=OutputsGen).load("huggingface/gpt2-large",api_key=HF_TOKEN) generator2 = gr.Interface.load("huggingface/EleutherAI/gpt-neo-2.7B", api_key=HF_TOKEN) generator3 = gr.Interface.load("huggingface/EleutherAI/gpt-j-6B", api_key=HF_TOKEN) #MemoryChange=tbOutput.change(persist_memory,inputs=[tbOutput],outputs=gr.Textbox(label="PersistMemoryOutput")) SplitterInputBox = gr.inputs.Textbox(lines=5, label="Enter a sentence to get another sentence.") parallelModel = gr.Parallel(generator1, generator2, generator3, inputs = SplitterInputBox, examples=examples, title="Mindfulness Story Generation with Persistent Dataset Memory", description=f"Mindfulness Story Generation with Persistent Dataset Memory", article=f"Memory Dataset URL: [{DATASET_REPO_URL}]({DATASET_REPO_URL})" ) tbMemoryOutput = gr.Textbox(label="Memory Output") btnSave = gr.Button("Save") #btnSave.click(fn=persist_memory, inputs=[SplitterInputBox, tbOutput], outputs=tbMemoryOutput) parallelModel.launch(share=False)