import os
import gradio as gr
from huggingface_hub import InferenceClient

model_id = 'dicta-il/dictalm-7b-instruct'

# יצירת API של Hugging Face
api_key = os.getenv('HUGGINGFACE_API_KEY', '')
generator = InferenceClient(model=model_id, token=api_key)

# פונקציית יצירת הטקסט
def chat_with_model(history):
    prompt = history[-1]["content"]
    try:
        response = generator.text_generation(prompt, do_sample=True, min_length=20, max_length=64, top_k=40, top_p=0.92, temperature=0.9)
        result = response.get("generated_text", "Error: No generated text found")
    except Exception as e:
        result = f"Error: {str(e)}"
    return history + [{"role": "bot", "content": result}]

# יצירת ממשק מתקדם עם Gradio בצורת צ'ט-בוט בסגנון אקדמי
with gr.Blocks(theme="default") as demo:
    gr.HTML("""
    <div style="background-color: #f5f5f5; padding: 20px; text-align: center;">
        <h1 style="color: #003366; font-family: Arial, sans-serif;">צ'אט עם מודל DictaLM</h1>
        <p style="font-family: Arial, sans-serif; color: #333;">ברוכים הבאים לצ'אט האינטראקטיבי שלנו, המאפשר לכם להתנסות בשיחה עם מודל AI מתקדם.</p>
    </div>
    """)
    chatbot = gr.Chatbot(label="צ'אט עם מודל DictaLM", type="messages")
    with gr.Row():
        user_input = gr.Textbox(placeholder="הכנס את ההודעה שלך כאן...", label="", lines=1)
        send_button = gr.Button("שלח")
    
    def user_chat(history, message):
        return history + [{"role": "user", "content": message}], ""

    # שליחת ההודעה גם בלחיצה על Enter וגם על ידי לחיצה על כפתור "שלח"
    user_input.submit(fn=user_chat, inputs=[chatbot, user_input], outputs=[chatbot, user_input], queue=False).then(
        fn=chat_with_model, inputs=chatbot, outputs=chatbot
    )
    send_button.click(fn=user_chat, inputs=[chatbot, user_input], outputs=[chatbot, user_input], queue=False).then(
        fn=chat_with_model, inputs=chatbot, outputs=chatbot
    )

demo.launch()