File size: 1,824 Bytes
32f6a89
70b2a71
32f6a89
 
70b2a71
 
32f6a89
70b2a71
 
 
32f6a89
70b2a71
 
 
32f6a89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""HTTP API using the original runtime ENGINE. No sample or fake results."""
from flask import Flask, jsonify, request
from dataclasses import asdict, is_dataclass
from runtime import engine as nll

flask_app = Flask(__name__)
flask_app.config["MAX_CONTENT_LENGTH"] = 1024 * 1024

@flask_app.get("/health")
def health():
    return jsonify(status="ok", rule_count=len(nll.RULES), parser_ready="parser" in nll.nlp().pipe_names)

@flask_app.post("/rewrite")
def rewrite():
    data = request.get_json(silent=True) or {}
    text = data.get("text", "")
    if not isinstance(text, str) or not text.strip():
        return jsonify(error="text must be a nonempty string"), 400
    if len(text) > 50000:
        return jsonify(error="text exceeds 50,000 characters"), 413
    workflow = data.get("workflow", "Edit / Paraphrase Only")
    mode = data.get("mode", "Balanced")
    discipline = data.get("discipline", "Auto Detect")
    terms = data.get("protected_terms", "")
    if workflow not in ("Scan Only", "Scan & Neutralize", "Edit / Paraphrase Only"):
        return jsonify(error="unsupported workflow"), 400
    if mode not in ("Minimal", "Balanced", "Structural"):
        return jsonify(error="unsupported mode"), 400
    if not isinstance(terms, str):
        return jsonify(error="protected_terms must be string"), 400
    try:
        try:
            r = nll.ENGINE.process(text, workflow, mode, discipline, terms, None)
        except TypeError:
            r = nll.ENGINE.process(text=text, workflow=workflow, mode=mode, discipline=discipline, terms_text=terms, progress=None)
        value = asdict(r) if is_dataclass(r) else r
        return jsonify(value)
    except Exception:
        flask_app.logger.exception("NLL request failed")
        return jsonify(error="processing failed; inspect server logs"), 500