ALM_LLM / tools /report_tool.py
AshenH's picture
Uploaded support files
0f166dc verified
raw
history blame
1.2 kB
import os
from jinja2 import Environment, FileSystemLoader
import pandas as pd
from ..utils.tracing import Tracer
class ReportTool:
def __init__(self, cfg, tracer: Tracer):
self.cfg = cfg
self.tracer = tracer
self.env = Environment(loader=FileSystemLoader("templates"))
def render_and_save(self, user_query: str, sql_preview: pd.DataFrame | None, predict_preview: pd.DataFrame | None, explain_images: dict, plan: dict):
tmpl = self.env.get_template("report_template.md")
html = tmpl.render(
user_query=user_query,
plan=plan,
sql_preview=sql_preview.to_markdown(index=False) if sql_preview is not None else "",
predict_preview=predict_preview.to_markdown(index=False) if predict_preview is not None else "",
explain_images=explain_images,
)
out_path = f"report_{pd.Timestamp.utcnow().strftime('%Y%m%d_%H%M%S')}.html"
with open(out_path, "w", encoding="utf-8") as f:
f.write("<link rel=\"stylesheet\" href=\"templates/report_styles.css\">\n" + html)
self.tracer.trace_event("report", {"path": out_path})
return out_path