added the add/ endpoint
This commit is contained in:
parent
510ace8bcb
commit
6d03742076
9
src/.env
9
src/.env
@ -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
|
||||
54
src/app.py
54
src/app.py
@ -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:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user