import pandas as pd import gradio as gr import matplotlib.pyplot as plt import seaborn as sns def get_weighted_accuracy(row, global_requests: int): """Function to compute the weighted accuracy of a tool""" return (row["tool_accuracy"] / 100.0) * (row["total_requests"] / global_requests) def compute_weighted_accuracy(tools_accuracy: pd.DataFrame): global_requests = tools_accuracy.total_requests.sum() tools_accuracy["weighted_accuracy"] = tools_accuracy.apply( lambda x: get_weighted_accuracy(x, global_requests), axis=1 ) return tools_accuracy def plot_tools_accuracy_graph(tools_accuracy_info: pd.DataFrame): tools_accuracy_info = tools_accuracy_info.sort_values( by="tool_accuracy", ascending=False ) plt.figure(figsize=(25, 10)) plot = sns.barplot( tools_accuracy_info, x="tool_accuracy", y="tool", hue="tool", dodge=False, palette="viridis", ) return gr.Plot(value=plot.get_figure()) def plot_tools_weighted_accuracy_graph(tools_accuracy_info: pd.DataFrame): tools_accuracy_info = tools_accuracy_info.sort_values( by="weighted_accuracy", ascending=False ) # Create the Seaborn bar plot sns.set_theme(palette="viridis") plt.figure(figsize=(25, 10)) plot = sns.barplot( tools_accuracy_info, x="weighted_accuracy", y="tool", hue="tool", dodge=False, ) # Display the plot using gr.Plot return gr.Plot(value=plot.get_figure())