added the add/ endpoint

This commit is contained in:
charlene tau express 2025-03-28 17:39:02 +08:00
parent 510ace8bcb
commit 6d03742076
2 changed files with 52 additions and 11 deletions

View File

@ -1,9 +0,0 @@
QDRANT_HOST = "192.168.99.122"
QDRANT_PORT = 6333
QDRANT_HTTPS='true'
QDRANT_SSL_VERIFY= 'false'
QDRANT_API_KEY=NS00TXlKUUIweUhWaGFuUUpUVTk6bWNVWXI1VXRSN2VWcFRtaEZ6NmdCUQ==
QDRANT_CLUSTER=''
QDRANT_COLLECTION_NAME='titan-2502110203'
TOKENIZER_FOLDER=/home/charlenewsl/model-files/tokenizer
MODEL_FOLDER=/home/charlenewsl/model-files

View File

@ -1,9 +1,14 @@
from flask import Flask, jsonify, request
from flask import Flask, jsonify, request, Response
# from dotenv import load_dotenv
from services.embedding_service import Embedding
import logging
import json
import uuid_utils as uuid
from qdrant_client.http import models
from qdrant_client.models import PointStruct
from werkzeug.exceptions import BadRequest
from qdrant_services.qdrant import Qdrant
logger = logging.getLogger(__name__)
@ -19,10 +24,55 @@ def hello():
return jsonify({"message":"Hello, World!"})
@app.post("/add")
def add():
if request.content_type == 'application/json':
try:
data = request.get_json(force=True)
if data is None:
raise BadRequest
except BadRequest:
return jsonify({"error": "Invalid JSON"}), 400
else:
data = request.form.to_dict()
clause_text = data.get("clause", '')
user_payload = data.get("payload", None)
user_meta = data.get("meta", None)
if clause_text=='':
return jsonify({"error":"clause is required"}), 400
payload = {"clause": clause_text}
if user_payload is not None:
payload["user_payload"] = user_payload
if user_meta is not None:
# decode for form-data only
payload["user_meta"] = user_meta if isinstance(user_meta, dict) else json.loads(user_meta)
clause_vectors = Embedding.call(clause_text)
result = Qdrant.get_client().upsert(
points=[
PointStruct(
id=str(uuid.uuid7()),
vector=vector.tolist(),
payload=payload
)
for vector in clause_vectors
]
)
logger.info("add clause [%s], result: %s" % (clause_text, result))
return Response(status=202)
@app.get("/recommend")
def recommend():
try:
from services.recommend_service import Recommend
clause = request.args.get("clause", '')
# filter shall be a json array. each element is a dict with following keys: