Spaces:
Running
Running
| from flask import Flask, request, jsonify, Response | |
| from flask_cors import CORS | |
| from sentence_transformers import SentenceTransformer | |
| # 1. สร้าง Flask app | |
| app = Flask(__name__) | |
| # 2. ตั้งค่า CORS (Cross-Origin Resource Sharing) | |
| # นี่คือส่วนสำคัญมาก! ที่จะอนุญาตให้ JavaScript (ที่อยู่คนละที่) เรียก API นี้ได้ | |
| CORS(app) | |
| model = SentenceTransformer("google/embeddinggemma-300m") | |
| # 3. สร้าง "Endpoint" หรือ "Route" ของ API | |
| # นี่คือ URL ที่ JavaScript จะเรียกมา | |
| # เช่น http://127.0.0.1:5000/api/v1/chat/completions | |
| def get_start(): | |
| return jsonify({"message": "Server is running"}) | |
| def return_query_embedding(): | |
| # 1. รับ JSON Payload | |
| try: | |
| data = request.json | |
| if not data: | |
| return jsonify({"error": "No JSON data provided"}), 400 | |
| except Exception: | |
| # ดักจับกรณีที่ JSON ที่ส่งมาผิดรูปแบบ | |
| return jsonify({"error": "Invalid JSON format"}), 400 | |
| # 2. ดึงข้อความสนทนา (Messages) | |
| query = data.get("text") | |
| if not query: | |
| # ตรวจสอบว่ามี key 'messages' อยู่ใน JSON ที่ส่งมาหรือไม่ | |
| return jsonify({"error": "Missing 'text' key in request body (JSON)"}), 400 | |
| # 3. เรียกใช้ Logic | |
| try: | |
| query_embeddings = model.encode_query(query) | |
| # convert to json | |
| query_embeddings = query_embeddings.tolist() | |
| query_embeddings_json = { | |
| "query_embeddings": query_embeddings | |
| } | |
| # 4. ส่งคำตอบกลับไป | |
| # ใช้ Response Object เพื่อให้แน่ใจว่า Header (mimetype) และ Encoding (UTF-8) ถูกต้อง | |
| # เพื่อรองรับภาษาไทยตามที่คุณใช้ ensure_ascii=False | |
| return jsonify(query_embeddings_json), 200 | |
| except Exception as e: | |
| # ดักจับ Error ที่อาจเกิดขึ้นภายในฟังก์ชัน LLM | |
| print(f"Error: {e}") | |
| return jsonify({"error": str(e)}), 500 | |