Spaces:
Runtime error
Runtime error
File size: 1,880 Bytes
30068e0 d4c17e3 ce2e69b 30068e0 308ee31 30068e0 308ee31 24e5b53 d2f5bb7 295c595 308ee31 6a0a052 9cce1c6 37d5637 308ee31 d508f92 308ee31 c5c65c2 9cce1c6 308ee31 9cce1c6 308ee31 9cce1c6 308ee31 |
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 |
from huggingface_hub import login
from transformers import AutoModelForCausalLM, AutoTokenizer
from adapters import AutoAdapterModel
import os
import gradio as gr
import torch
HF_TOKEN = os.getenv("HF_TOKEN")
login(token=HF_TOKEN)
title = "Mental Health Chatbot"
description = "This bot is using a fine-tuned version of meta-llama/Llama-2-7b-chat-hf"
model_id = "meta-llama/Llama-2-7b-chat-hf"
adapter_model_id = "vojay/Llama-2-7b-chat-hf-mental-health"
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16)
model.load_adapter(adapter_model_id)
tokenizer = AutoTokenizer.from_pretrained(model_id)
tokenizer.pad_token = tokenizer.eos_token
tokenizer.padding_side = "right"
def get_base_prompt():
return """
You are a knowledgeable and supportive psychologist. You provide emphatic, non-judgmental responses to users seeking
emotional and psychological support. Provide a safe space for users to share and reflect, focus on empathy, active
listening and understanding.
"""
def format_prompt(base, user_message):
return f"<s>[INST] <<SYS>>{base}<</SYS>>{user_message} [/INST]"
def predict(input, history=[]):
input = format_prompt(get_base_prompt(), input)
new_user_input_ids = tokenizer.encode(f"{input}{tokenizer.eos_token}", return_tensors="pt")
bot_input_ids = torch.cat([torch.LongTensor(history), new_user_input_ids], dim=-1)
history = model.generate(
bot_input_ids,
max_length=2000,
pad_token_id=tokenizer.eos_token_id
).tolist()
response = tokenizer.decode(history[0]).split("<|endoftext|>")
response = [(response[i], response[i + 1]) for i in range(0, len(response) - 1, 2)]
return response, history
gr.Interface(
fn=predict,
title=title,
description=description,
inputs=["text", "state"],
outputs=["chatbot", "state"]
).launch()
|