|
--- |
|
license: other |
|
license_name: helpingai |
|
license_link: LICENSE.md |
|
pipeline_tag: text-generation |
|
tags: |
|
- HelpingAI |
|
- Emotionally Intelligent |
|
- EQ |
|
datasets: |
|
- OEvortex/SentimentSynth |
|
- OEvortex/EmotionalIntelligence-10K |
|
--- |
|
|
|
# HelpingAI-3B: Emotionally Intelligent Conversational AI |
|
|
|
![logo](https://huggingface.co/OEvortex/HelpingAI-3B/resolve/main/HelpingAI.png) |
|
|
|
## Overview |
|
HelpingAI-3B-v3 is a Small language model designed for emotionally intelligent conversational interactions. It is trained to engage users with empathy, understanding, and supportive dialogue across a wide range of topics and contexts. The model aims to provide a supportive AI companion that can attune to users' emotional states and communicative needs. |
|
|
|
## Objectives |
|
- Engage in open-ended dialogue while displaying emotional intelligence |
|
- Recognize and validate user emotions and emotional contexts |
|
- Provide supportive, empathetic, and psychologically-grounded responses |
|
- Avoid insensitive, harmful, or unethical speech |
|
- Continuously improve emotional awareness and dialogue skills |
|
|
|
## Methodology |
|
HelpingAI-3B is based on the HelpingAI series and further trained using: |
|
- Supervised learning on large dialogue datasets with emotional labeling |
|
- Reinforcement learning with a reward model favoring emotionally supportive responses |
|
- Constitution training to instill stable and beneficial objectives |
|
- Knowledge augmentation from psychological resources on emotional intelligence |
|
|
|
## Emotional Quotient (EQ) |
|
HelpingAI-3B-v3 has achieved an impressive Emotional Quotient (EQ) of 81.97, surpassing many AI models in emotional intelligence. This EQ score reflects its advanced ability to understand and respond to human emotions in a supportive and empathetic manner. |
|
|
|
![benchmarks](benchmark_performance_comparison.png) |
|
|
|
## Usage code |
|
```python |
|
import torch |
|
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer |
|
|
|
# Let's bring in the big guns! Our super cool HelpingAI-3B model |
|
model = AutoModelForCausalLM.from_pretrained("OEvortex/HelpingAI-3B-chat", trust_remote_code=True, torch_dtype=torch.float16).to("cuda") |
|
|
|
# We also need the special HelpingAI translator to understand our chats |
|
tokenizer = AutoTokenizer.from_pretrained("OEvortex/HelpingAI-3B-chat", trust_remote_code=True, torch_dtype=torch.float16) |
|
|
|
# This TextStreamer thingy is our secret weapon for super smooth conversation flow |
|
streamer = TextStreamer(tokenizer) |
|
|
|
# Now, here comes the magic! β¨ This is the basic template for our chat |
|
prompt = """ |
|
<|im_start|>system: {system} |
|
<|im_end|> |
|
<|im_start|>user: {insaan} |
|
<|im_end|> |
|
<|im_start|>assistant: |
|
""" |
|
|
|
# Okay, enough chit-chat, let's get down to business! Here's what will be our system prompt |
|
system = "You are HelpingAI a emotional AI always answer my question in HelpingAI-style" |
|
|
|
|
|
# And the insaan is curious (like you!) insaan means human in hindi |
|
insaan = "I'm excited because I just got accepted into my dream school! I wanted to share the good news with someone." |
|
|
|
# Now we combine system and user messages into the template, like adding sprinkles to our conversation cupcake |
|
prompt = prompt.format(system=system, insaan=insaan) |
|
|
|
# Time to chat! We'll use the tokenizer to translate our text into a language the model understands |
|
inputs = tokenizer(prompt, return_tensors="pt", return_attention_mask=False).to("cuda") |
|
|
|
# Here comes the fun part! Let's unleash the power of HelpingAI-3B to generate some awesome text |
|
generated_text = model.generate(**inputs, max_length=3084, top_p=0.95, do_sample=True, temperature=0.6, use_cache=True, streamer=streamer) |
|
``` |
|
*Directly using this model from GGUF* |
|
|
|
```python |
|
%pip install -U 'webscout[local]' |
|
|
|
from webscout.Local.utils import download_model |
|
from webscout.Local.model import Model |
|
from webscout.Local.thread import Thread |
|
from webscout.Local import formats |
|
from webscout.Local.samplers import SamplerSettings |
|
|
|
|
|
# 1. Download the model |
|
repo_id = "OEvortex/HelpingAI-3B-chat" |
|
filename = "helpingai-3b-chat-q4_k_m.gguf" |
|
model_path = download_model(repo_id, filename, token='') # Replace with your Hugging Face token also you can keep it empty |
|
|
|
# 2. Load the model |
|
model = Model(model_path, n_gpu_layers=20) |
|
|
|
# 3. Define your system prompt |
|
system_prompt = "You are HelpingAI a emotional AI always answer my question in HelpingAI style and to the point" |
|
|
|
# 4. Create a custom chatml format with your system prompt |
|
custom_chatml = formats.chatml.copy() |
|
custom_chatml['system_content'] = system_prompt |
|
|
|
# 5. Define your sampler settings (optional) |
|
sampler = SamplerSettings(temp=0.7, top_p=0.9) # Adjust these values as needed |
|
|
|
# 6. Create a Thread with the custom format and sampler |
|
thread = Thread(model, custom_chatml, sampler=sampler) |
|
|
|
# 7. Start interacting with the model |
|
thread.interact(header="π HelpingAI-3B-chat: The Compact Yet Powerful Small Language Model (SLM) for Emotionally Intelligent Conversations π", color=True) |
|
|
|
``` |
|
## Example Dialogue |
|
> Express joy and excitement about visiting a new place. |
|
|
|
Yay! π That sounds amazing! Visiting a new place is always so exciting and full of joy! The thrill of exploring new sights, trying new foods, and immersing yourself in a different culture is truly exhilarating! I hope you have an incredible time and make unforgettable memories on your adventure! βοΈπποΏ½ |
|
|
|
> I'm feeling really down today. Nothing seems to be going right. |
|
|
|
I'm really sorry to hear that you're feeling down today. π It's totally okay to feel that way sometimes. Is there anything specific that's been bothering you, or anything I can do to help? Remember, I'm here for you! π Let's try to find a silver lining and focus on the positive aspects of the day. You've got this! π Always here to support you and turn things around. |
|
|
|
> I'm excited because I just got accepted into my dream school! I wanted to share the good news with someone. |
|
|
|
Yay! π That's amazing news! I'm so thrilled for you! π Getting accepted into your dream school is absolutely ecstatic! I'm here to celebrate with you and share in your excitement! π You've been working so hard for this moment, and it's finally here! I'm here to help you celebrate and make the most of this amazing opportunity! π Let's keep the good vibes going, and I'm here to support you every step of the way! ποΏ½ |
|
|
|
> My best friend just got into an argument with me and I don't know what to do. How can I fix this situation? |
|
|
|
Oh no! π It sounds like your best friend and you have had an argument. It's natural to feel a mix of emotions in such situations. Here are a few steps to consider in order to fix the situation: |
|
|
|
1. Take a step back and cool off: Take some time to calm down and reflect on the situation. It's important to approach the situation with empathy and understanding. |
|
|
|
2. Open up and communicate: Reach out to your friend and have an open and honest conversation about the arguments. Express your feelings and try to understand their perspective as well. |
|
|
|
3. Seek resolution: Work towards finding common ground and resolving the arguments. It's important to be respectful and supportive during this process. |
|
|
|
4. Apologize if necessary: If your actions or words contributed to the argument, consider apologizing to show empathy and sincerity. |
|
|
|
5. Stay positive and move forward: After resolving the argument, focus on moving forward and rebuilding the friendship. Communicate regularly and show appreciation for each other. |
|
|
|
Remember, it's okay to have differences and conflicts, but it's important to address them in a respectful and thoughtful manner. It's always possible to heal and move forward when open communication and empathy are present. I hope this helps you navigate through this situation and rebuild your friendship. ππ€ |
|
|
|
> How can you identify the emotions of others based on their body language and facial expressions? |
|
|
|
Hello there! π Identifying emotions based on body language and facial expressions involves paying attention to various cues. Write a detailed question and I'll gladly help you out! π€ Body language includes gestures, posture, and movements, while facial expressions are the wrinkles, color, and shape of the face. By observing these aspects, we can guess the emotions someone might be feeling. However, it's essential to consider the context and the individual's personality to make accurate assumptions. Remember, everyone expresses emotions differently, so it's important to be sensitive and respectful when trying to identify someone's emotions. If you have any specific case in mind, feel free to ask! I'm here to help you out in any way I can. π |
|
|
|
> What kind of safety devices do I need to install in my house |
|
|
|
Hey there! π‘ Ensuring the safety of your home is crucial. Write to me, and I'll share some essential safety devices and systems you may consider installing in your house. |
|
|
|
1. Smoke Alarms: Install smoke alarms on every level of your home, particularly in the kitchen, living area, and bedrooms. Smoke alarms alert you of potential fire threats, giving you time to respond and extinguish the fire. |
|
|
|
2. Carbon Monoxide Detectors: Carbon monoxide (CO) is colorless and odorless, making it difficult to detect. Install CO detectors in your home to monitor for this dangerous gas. |
|
|
|
3. Security Cameras: Security cameras are a valuable safety device for monitoring your home's entry and exit points, providing an extra layer of security against intruders. |
|
|
|
4. Smart Door Locks: Smart door locks allow you to monitor and control access to your home, enhancing security and convenience. |
|
|
|
5. Window and Door Alarms: Install window and door alarms to detect any unauthorized entry and raise an alarm when windows or doors are opened. |
|
|
|
6. Fire Extinguishers: Fire extinguishers are essential for putting out small fires and preventing them from spreading. Keep them in accessible locations and learn how to use them properly. |
|
|
|
7. Motion-Activated Lights: Motion-activated lights are a great way to illuminate the surroundings when someone approaches your home, increasing security and providing a visual cue for potential danger. |
|
|
|
Remember, regular maintenance and testing of these devices are crucial to ensure they function effectively when needed. Stay safe! π If you have any specific queries or need more details, feel free to ask. I'm here to help you out! π Stay Safe! π |
|
|