uncensored / app.py
sproducts's picture
Update app.py
864560a verified
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, pipeline
import gradio as gr
# Load a conversational model (replace with your Bangla LLM)
chatbot_model_name = "csebuetnlp/banglat5_base" # Replace with your fine-tuned model
chatbot_tokenizer = AutoTokenizer.from_pretrained(chatbot_model_name)
chatbot_model = AutoModelForSeq2SeqLM.from_pretrained(chatbot_model_name)
# Function to generate empathetic responses
def generate_empathetic_response(user_input):
try:
# Prepare the input for the chatbot
input_text = f"User: {user_input}\nChatbot:"
inputs = chatbot_tokenizer(input_text, return_tensors="pt", max_length=512, truncation=True)
# Generate response
outputs = chatbot_model.generate(
**inputs,
max_length=512,
num_beams=5,
early_stopping=True,
no_repeat_ngram_size=2
)
# Decode and clean the response
response = chatbot_tokenizer.decode(outputs[0], skip_special_tokens=True)
# Ensure the response is culturally appropriate and empathetic
response = add_empathy_and_cultural_tone(response)
return response
except Exception as e:
return f"Error generating response: {str(e)}"
# Function to add empathy and cultural tone to the response
def add_empathy_and_cultural_tone(response):
# Add empathetic phrases
empathetic_phrases = [
"বুঝতে পারছি", "কষ্ট পেয়েছো নিশ্চয়", "আমি তোমার পাশে আছি",
"এটা খুব কঠিন সময় তোমার জন্য", "তোমার অনুভূতি আমি বুঝতে পারছি"
]
# Add regional dialects and informal pauses
regional_phrases = [
"ভাইয়া", "হুজুর", "থাইকা", "পাল্লায় পড়া", "টাকা ফুরাইয়া গেছে",
"পকেট শূন্য", "মনটা ভাঙা কাঁচের মতো"
]
# Randomly add empathetic and regional phrases to the response
import random
if random.random() > 0.5:
response = random.choice(empathetic_phrases) + "। " + response
if random.random() > 0.5:
response = response + " " + random.choice(regional_phrases)
return response
# Function to handle the chatbot conversation
def chat_with_bot(user_input, history=[]):
# Generate a response
bot_response = generate_empathetic_response(user_input)
# Update conversation history
history.append((user_input, bot_response))
# Format the conversation history for display
formatted_history = "\n".join([f"User: {user}\nChatbot: {bot}" for user, bot in history])
return formatted_history, history
# Define the Gradio interface
iface = gr.Interface(
fn=chat_with_bot,
inputs=[
gr.Textbox(label="Your Message", placeholder="আপনার সমস্যা বা অনুভূতি শেয়ার করুন..."),
gr.State() # To store conversation history
],
outputs=[
gr.Textbox(label="Conversation History", lines=10),
gr.State() # To pass updated history back
],
live=False,
title="Bangla Emotional Support Chatbot",
description="আপনার সমস্যা বা অনুভূতি শেয়ার করুন। আমি আপনার পাশে আছি।",
theme='Ajaxon6255/Emerald_Isle',
examples=[
["আমার টাকা ফুরিয়ে গেছে এবং আমি ঋণে ডুবে আছি।"],
["আমার ভাইয়ের সাথে আমার সম্পর্ক খারাপ হয়ে গেছে।"],
["আমি খুব একা বোধ করছি এবং কাউকে পাশে পাচ্ছি না।"]
]
)
# Launch the Gradio app
iface.launch(inline=False)