bugfix(ChatData): ChatData Use AntV Table

1.Merge ChatData and ChatDB
This commit is contained in:
yhjun1026 2023-11-10 16:28:07 +08:00
parent 440a3e955f
commit 940edcdab1
19 changed files with 34 additions and 227 deletions

View File

@ -269,36 +269,18 @@ class ApiCall:
api_status = self.plugin_status_map.get(api_context)
if api_status is not None:
if display_mode:
if api_status.api_result:
all_context = self.__deal_error_md_tags(
all_context, api_context
all_context = self.__deal_error_md_tags(
all_context, api_context
)
if Status.FAILED.value == api_status.status:
all_context = all_context.replace(
api_context, "\n" + api_status.err_msg + self.to_view_antv_vis(api_status)
)
# all_context = all_context.replace(
# api_context, api_status.api_result
# )
else:
all_context = all_context.replace(
api_context, self.to_view_antv_vis(api_status)
)
else:
if api_status.status == Status.FAILED.value:
all_context = self.__deal_error_md_tags(
all_context, api_context
)
all_context = all_context.replace(
api_context,
f"""\n<span style=\"color:red\">ERROR!</span>{api_status.err_msg}\n """,
)
else:
cost = (api_status.end_time - self.start_time) / 1000
cost_str = "{:.2f}".format(cost)
all_context = self.__deal_error_md_tags(
all_context, api_context
)
all_context = all_context.replace(
api_context,
f'\n<span style="color:green">Waiting...{cost_str}S</span>\n',
)
else:
all_context = self.__deal_error_md_tags(
all_context, api_context, False
@ -359,7 +341,7 @@ class ApiCall:
if api_status.api_result:
param["result"] = api_status.api_result
return json.dumps(param, default=serialize)
return json.dumps(param, default=serialize, ensure_ascii=False)
def to_view_text(self, api_status: PluginStatus):
api_call_element = ET.Element("dbgpt-view")
@ -385,15 +367,14 @@ class ApiCall:
if api_status.name:
param["type"] = api_status.name
if api_status.args:
param["sql"] = api_status.args["sql"]
param["sql"] = api_status.args["sql"].replace(',', '\\,')
if api_status.err_msg:
param["err_msg"] = api_status.err_msg
if api_status.api_result:
param["data"] = api_status.api_result
return json.dumps(param, default=serialize)
return json.dumps(param, default=serialize, ensure_ascii=False)
def run(self, llm_text):
if self.__is_need_wait_plugin_call(llm_text):

View File

@ -10,7 +10,7 @@ class PluginAction(NamedTuple):
class PluginChatOutputParser(BaseOutputParser):
def parse_view_response(self, speak, data) -> str:
def parse_view_response(self, speak, data, prompt_response) -> str:
### tool out data to table view
print(f"parse_view_response:{speak},{str(data)}")
view_text = f"##### {speak}" + "\n" + str(data)

View File

@ -38,7 +38,7 @@ class ChatDashboardOutputParser(BaseOutputParser):
)
return chart_items
def parse_view_response(self, speak, data) -> str:
def parse_view_response(self, speak, data, prompt_response) -> str:
return json.dumps(data.prepare_dict())
@property

View File

@ -50,15 +50,15 @@ class ChatExcel(BaseChat):
super().__init__(chat_param=chat_param)
def _generate_numbered_list(self) -> str:
antv_charts = [{"line_chart":"used to display comparative trend analysis data"},
{"pie_chart":"suitable for scenarios such as proportion and distribution statistics"},
antv_charts = [{"response_line_chart":"used to display comparative trend analysis data"},
{"response_pie_chart":"suitable for scenarios such as proportion and distribution statistics"},
{"response_table":"suitable for display with many display columns or non-numeric columns"},
{"data_text":" the default display method, suitable for single-line or simple content display"},
{"scatter_plot":"Suitable for exploring relationships between variables, detecting outliers, etc."},
{"bubble_chart":"Suitable for relationships between multiple variables, highlighting outliers or special situations, etc."},
{"donut_chart":"Suitable for hierarchical structure representation, category proportion display and highlighting key categories, etc."},
{"area_chart":"Suitable for visualization of time series data, comparison of multiple groups of data, analysis of data change trends, etc."},
{"heatmap":"Suitable for visual analysis of time series data, large-scale data sets, distribution of classified data, etc."}
# {"response_data_text":" the default display method, suitable for single-line or simple content display"},
{"response_scatter_plot":"Suitable for exploring relationships between variables, detecting outliers, etc."},
{"response_bubble_chart":"Suitable for relationships between multiple variables, highlighting outliers or special situations, etc."},
{"response_donut_chart":"Suitable for hierarchical structure representation, category proportion display and highlighting key categories, etc."},
{"response_area_chart":"Suitable for visualization of time series data, comparison of multiple groups of data, analysis of data change trends, etc."},
{"response_heatmap":"Suitable for visual analysis of time series data, large-scale data sets, distribution of classified data, etc."}
]
# command_strings = []

View File

@ -36,6 +36,6 @@ class ChatExcelOutputParser(BaseOutputParser):
except Exception as e:
raise ValueError(f"LLM Response Can't Parser! \n")
def parse_view_response(self, speak, data) -> str:
def parse_view_response(self, speak, data, prompt_response) -> str:
### tool out data to table view
return data

View File

@ -41,7 +41,7 @@ class LearningExcelOutputParser(BaseOutputParser):
return ExcelResponse(desciption=model_out_text, clounms=self.data_schema, plans=None)
def parse_view_response(self, speak, data) -> str:
def parse_view_response(self, speak, data, prompt_response) -> str:
if data and not isinstance(data, str):
### tool out data to table view
html_title = f"### **Data Summary**\n{data.desciption} "

View File

@ -35,7 +35,7 @@ class PluginChatOutputParser(BaseOutputParser):
speak = response[key]
return PluginAction(command, speak, thoughts)
def parse_view_response(self, speak, data) -> str:
def parse_view_response(self, speak, data, prompt_response) -> str:
### tool out data to table view
print(f"parse_view_response:{speak},{str(data)}")
view_text = f"##### {speak}" + "\n" + str(data)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long