| | from flask import Flask, request, jsonify |
| | from sentence_transformers import SentenceTransformer |
| | import logging |
| | import os |
| | from functools import wraps |
| |
|
| | logging.basicConfig(level=logging.DEBUG) |
| |
|
| | API_TOKEN = os.getenv("API_TOKEN", "your-default-token") |
| |
|
| |
|
| | app = Flask(__name__) |
| |
|
| | def require_token(f): |
| | @wraps(f) |
| | def decorated(*args, **kwargs): |
| | auth_header = request.headers.get("Authorization") |
| | if not auth_header: |
| | return jsonify({"error": "Authorization header missing"}), 401 |
| | try: |
| | token = auth_header.split("Bearer ")[1] |
| | if token != API_TOKEN: |
| | return jsonify({"error": "Invalid token"}), 403 |
| | except IndexError: |
| | return jsonify({"error": "Invalid Authorization header format"}), 401 |
| | return f(*args, **kwargs) |
| | return decorated |
| | |
| |
|
| | |
| | model = SentenceTransformer(model_name_or_path="Qwen/Qwen3-Embedding-0.6B") |
| |
|
| | @app.route('/') |
| | def home(): |
| | return 'Hello from Flask on Hugging Face!' |
| | |
| | @app.route('/embed', methods=['POST']) |
| | @require_token |
| | def get_embedding(): |
| | try: |
| | text = request.json.get('text', '') |
| | if not text: |
| | return jsonify({"error": "No text provided"}), 400 |
| | |
| | |
| | document_embeddings = model.encode(text) |
| | arr_list = document_embeddings.tolist() |
| | return jsonify({"embedding": arr_list}) |
| | except Exception as e: |
| | return jsonify({"error": str(e)}), 500 |
| |
|
| |
|
| | if __name__ == '__main__': |
| | app.run(host='0.0.0.0', port=7860) |