HCMUE RAG Deploy
Deploy V26 FastAPI RAG backend
fb1e53a
Raw
History Blame Contribute Delete
2.5 kB
import argparse
from pathlib import Path
from typing import Any
from src.common.env_loader import load_project_env
from .io_utils import save_json
from .answer_pipeline import DEFAULT_CONFIG_PATH, AnswerPipeline
SAMPLE_QUERIES = [
"Điểm rèn luyện 85 là loại gì?",
"Muốn tạm nghỉ học cần mẫu đơn nào?",
"Email phòng CTCT-HSSV là gì?",
]
def main() -> None:
load_project_env()
parser = argparse.ArgumentParser(description="Run answer generation.")
parser.add_argument("query", nargs="*", help="Optional query to answer.")
parser.add_argument(
"--config", default=str(DEFAULT_CONFIG_PATH), help="Config YAML path."
)
args = parser.parse_args()
pipeline = AnswerPipeline(config_path=args.config)
queries = [" ".join(args.query)] if args.query else SAMPLE_QUERIES
results: list[dict[str, Any]] = []
for query in queries:
try:
result = pipeline.answer(query)
except Exception as exc:
result = _build_unhandled_error_result(query, exc)
results.append(result)
print("=" * 80)
print("Query:", query)
print("Status:", result.get("status"))
print("LLM called:", result.get("llm_called"))
print("Used cache:", result.get("used_cache"))
if result.get("error_type"):
print("Error:", result.get("error_type"), "-", result.get("error_message"))
print("\nAnswer:")
print(result.get("answer", ""))
print()
report = {
"pipeline_stage": "answer_generation",
"total_queries": len(results),
"results": results,
"status": "completed",
}
output_path = Path(pipeline.config["output"]["test_report"])
save_json(report, output_path)
print(f"Answer generation completed. Report saved: {output_path}")
def _build_unhandled_error_result(query: str, exc: Exception) -> dict[str, Any]:
return {
"query": query,
"answer": "Mình gặp lỗi ngoài dự kiến khi xử lý câu hỏi này.",
"status": "fallback",
"error_type": "unknown",
"error_message": str(exc),
"intent": None,
"strategy": None,
"retrieval_query": None,
"citations": [],
"citations_used": [],
"structured_result": None,
"tool_result": None,
"llm_called": False,
"used_cache": False,
"context_used": "",
}
if __name__ == "__main__":
main()