from typing import List from typing import Dict import plotly.io as pio import pandas as pd from utils import TEMP_DIR import os import ast from dotenv import load_dotenv load_dotenv() root_url = os.getenv("ROOT_URL") def chart_generation_func(data: List[dict], session_hash: str, layout: Dict[str,str]={}): print("CHART GENERATION") print(data) print(layout) try: dir_path = TEMP_DIR / str(session_hash) chart_path = f'{dir_path}/chart.html' #Processing data to account for variation from LLM data_list = [] layout_dict = {} if isinstance(data, list): data_list = data else: data_list.append(data) if isinstance(data[0], str): data_list[0] = ast.literal_eval(data_list[0]) if isinstance(layout, list): layout_obj = layout[0] else: layout_obj = layout if isinstance(layout_obj, str): layout_dict = ast.literal_eval(layout_obj) else: layout_dict = layout_obj fig = dict({"data": data_list, "layout": layout_dict}) pio.write_html(fig, chart_path, full_html=False) chart_url = f'{root_url}/gradio_api/file/temp/{session_hash}/chart.html' iframe = '
Download as a CSV file
' print(html_table) return {"reply": html_table} except Exception as e: print("TABLE ERROR") reply = f"""There was an error generating the Pandas DataFrame table from {data} The error is {e}, You should probably try again. """ return {"reply": reply}