mirror of
https://github.com/hoshikawa2/rfp_response_automation.git
synced 2026-03-03 16:09:35 +00:00
67 lines
1.6 KiB
Python
67 lines
1.6 KiB
Python
from flask import Flask, render_template, request, jsonify
|
|
import traceback
|
|
import json
|
|
|
|
# 🔥 IMPORTA SEU PIPELINE
|
|
from oci_genai_llm_graphrag_financial import answer_question
|
|
|
|
app = Flask(__name__)
|
|
|
|
def parse_llm_json(raw: str) -> dict:
|
|
try:
|
|
raw = raw.replace("```json", "")
|
|
raw = raw.replace("```", "")
|
|
return json.loads(raw)
|
|
except Exception:
|
|
return {
|
|
"answer": "ERROR",
|
|
"justification": "LLM returned invalid JSON",
|
|
"raw_output": raw
|
|
}
|
|
|
|
# =========================
|
|
# Health check (Load Balancer)
|
|
# =========================
|
|
@app.route("/health", methods=["GET"])
|
|
def health():
|
|
return jsonify({"status": "UP"}), 200
|
|
|
|
|
|
# =========================
|
|
# Página Web
|
|
# =========================
|
|
@app.route("/", methods=["GET"])
|
|
def index():
|
|
return render_template("index.html")
|
|
|
|
|
|
# =========================
|
|
# Endpoint de Chat
|
|
# =========================
|
|
@app.route("/chat", methods=["POST"])
|
|
def chat():
|
|
try:
|
|
data = request.get_json()
|
|
question = data.get("question", "").strip()
|
|
|
|
if not question:
|
|
return jsonify({"error": "Empty question"}), 400
|
|
|
|
raw_answer = answer_question(question)
|
|
parsed_answer = parse_llm_json(raw_answer)
|
|
|
|
return jsonify({
|
|
"question": question,
|
|
"result": parsed_answer
|
|
})
|
|
|
|
except Exception as e:
|
|
traceback.print_exc()
|
|
return jsonify({"error": str(e)}), 500
|
|
|
|
if __name__ == "__main__":
|
|
app.run(
|
|
host="0.0.0.0",
|
|
port=8100,
|
|
debug=False
|
|
) |