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 dotenv import load_dotenv
|
||||||
from services.embedding_service import Embedding
|
from services.embedding_service import Embedding
|
||||||
import logging
|
import logging
|
||||||
import json
|
import json
|
||||||
|
import uuid_utils as uuid
|
||||||
from qdrant_client.http import models
|
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__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -19,10 +24,55 @@ def hello():
|
|||||||
return jsonify({"message":"Hello, World!"})
|
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")
|
@app.get("/recommend")
|
||||||
def recommend():
|
def recommend():
|
||||||
try:
|
try:
|
||||||
|
|
||||||
from services.recommend_service import Recommend
|
from services.recommend_service import Recommend
|
||||||
clause = request.args.get("clause", '')
|
clause = request.args.get("clause", '')
|
||||||
# filter shall be a json array. each element is a dict with following keys:
|
# filter shall be a json array. each element is a dict with following keys:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user