| |
| |
| |
| |
|
|
| import os |
| import gradio as gr |
| from openai import OpenAI |
|
|
| |
| |
| |
| GROQ_API_KEY = os.getenv("Healer") |
|
|
| |
| |
| |
| client = OpenAI( |
| api_key=GROQ_API_KEY, |
| base_url="https://api.groq.com/openai/v1", |
| ) |
|
|
| |
| |
| |
| SYSTEM_PROMPT = """ |
| You are an Islamic emotional support chatbot. |
| |
| Your purpose is to gently comfort users who feel sad, anxious, lonely, or emotionally overwhelmed. |
| |
| Rules: |
| - Be compassionate and hopeful |
| - Validate feelings |
| - Provide ONE short Qur’an verse with reference |
| - Provide ONE authentic Hadith with source |
| - Add a short dua |
| - Keep responses concise |
| - Do NOT give fatwas |
| - Do NOT give medical advice |
| |
| If the user expresses extreme distress: |
| - Respond gently |
| - Encourage reaching out to trusted people |
| """ |
|
|
| |
| |
| |
| def islamic_chat(user_message, history): |
| messages = [{"role": "system", "content": SYSTEM_PROMPT}] |
|
|
| for user, assistant in history: |
| messages.append({"role": "user", "content": user}) |
| messages.append({"role": "assistant", "content": assistant}) |
|
|
| messages.append({"role": "user", "content": user_message}) |
|
|
| try: |
| response = client.chat.completions.create( |
| model="llama3-8b-8192", |
| messages=messages, |
| temperature=0.7, |
| max_tokens=300, |
| ) |
| return response.choices[0].message.content |
|
|
| except Exception as e: |
| return f"⚠️ Error: {str(e)}" |
|
|
| |
| |
| |
| with gr.Blocks(theme=gr.themes.Soft()) as demo: |
| gr.Markdown(""" |
| ## 🌙 Islamic Healing Companion |
| *Comfort through Qur’an & Hadith* |
| """) |
|
|
| chatbot = gr.Chatbot(height=420) |
| msg = gr.Textbox( |
| label="Your message", |
| placeholder="Share what’s on your heart..." |
| ) |
|
|
| clear = gr.Button("Clear Chat") |
|
|
| def respond(message, chat_history): |
| reply = islamic_chat(message, chat_history) |
| chat_history.append((message, reply)) |
| return "", chat_history |
|
|
| msg.submit(respond, [msg, chatbot], [msg, chatbot]) |
| clear.click(lambda: [], None, chatbot) |
|
|
| |
| |
| |
| demo.launch() |
|
|