import os
import logging
from flask import Flask, request, jsonify
from transformers import pipeline
from langdetect import detect
from huggingface_hub import login

# Initialize Flask app
app = Flask(__name__)

# Gets the Token from secrects and Login if exists
hf_hub_token = os.getenv("HUGGINGFACEHUB_API_TOKEN")
if not hf_hub_token:
    raise ValueError("Missing Hugging Face API token. Please set HUGGINGFACEHUB_API_TOKEN in environment variables.")
login(token=hf_hub_token)


# Load Hebrew text generation model
hebrew_generator = pipeline("text-generation", model="Norod78/hebrew-gpt_neo-small")

# Load English text generation model
english_generator = pipeline("text-generation", model="distilgpt2")

# Function to detect language
def detect_language(user_input):
    try:
        lang = detect(user_input)
        if lang == "he":
            return "hebrew"
        elif lang == "en":
            return "english"
        else:
            return "unsupported"
    except:
        return "unsupported"



# Function to generate response based on language
def generate_response(text):
    language = detect_language(text)

    if language == "hebrew":
        response = hebrew_generator(text, max_length=100)[0]["generated_text"]
    elif language == "english":
        response = english_generator(text, max_length=100)[0]["generated_text"]
    else:
        response = "Sorry, I only support Hebrew and English."

    return response


# Flask endpoint for processing text input
@app.route("/ask", methods=["POST"])
def ask():
    data = request.json
    user_input = data.get("text", "")

    if not user_input:
        return jsonify({"error": "No text provided"}), 400

    response = generate_response(user_input)
    return jsonify({"response": response})

    
# Root endpoint
@app.route("/")
def home():
    return "Decision Making Helper Bot API is running!"

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    app.run(host="0.0.0.0", port=7860)