from flask import Flask, request, jsonify
from sentence_transformers import SentenceTransformer
import logging
import sys

# Konfiguriere Logging
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.StreamHandler(sys.stdout),
        logging.FileHandler('vectorize.log')
    ]
)

app = Flask(__name__)

# Lade das Modell beim Start
logging.info("Lade Sentence Transformer Modell...")
try:
    model = SentenceTransformer('BAAI/bge-base-en-v1.5')
    logging.info("Modell geladen!")
except Exception as e:
    logging.error(f"Fehler beim Laden des Modells: {str(e)}")
    raise

@app.route('/vectorize', methods=['POST'])
def vectorize():
    try:
        # Logge die Anfrage
        logging.debug(f"Erhaltene Anfrage: {request.get_data()}")
        
        # Hole den Text aus der Anfrage
        data = request.get_json()
        if not data or 'text' not in data:
            logging.error("Kein Text in der Anfrage gefunden")
            return jsonify({'error': 'Kein Text in der Anfrage gefunden'}), 400
            
        text = data['text']
        logging.info(f"Verarbeite Text: {text}")
        
        # Generiere Embedding
        try:
            embedding = model.encode(text, normalize_embeddings=True)
            vector = embedding.tolist()
            logging.info(f"Vektor generiert, Länge: {len(vector)}")
            return jsonify({'vector': vector})
        except Exception as e:
            logging.error(f"Fehler bei der Vektorisierung: {str(e)}")
            return jsonify({'error': f'Fehler bei der Vektorisierung: {str(e)}'}), 500
            
    except Exception as e:
        logging.error(f"Unerwarteter Fehler: {str(e)}")
        return jsonify({'error': f'Unerwarteter Fehler: {str(e)}'}), 500

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000) 