vbhat4 commited on
Commit
6594739
·
verified ·
1 Parent(s): 39ed450

Add draft application file and resources

Browse files
Files changed (7) hide show
  1. app.py +195 -0
  2. category_scores.png +0 -0
  3. eval_about.jpg +0 -0
  4. feature_comp.png +0 -0
  5. lb_stats.png +0 -0
  6. leaderboard.csv +14 -0
  7. theme.json +1 -0
app.py ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import numpy as np
3
+ import pandas as pd
4
+ import scipy.stats as st
5
+
6
+ LEADERBOARD_FILE = "leaderboard.csv"
7
+
8
+ def get_leaderboard_df():
9
+ df = pd.read_csv(LEADERBOARD_FILE)
10
+ df = df.sort_values(by = ["Score"], ascending = False)
11
+ df = df.reset_index(drop = True)
12
+ return df
13
+
14
+ def get_model_stats(uploaded_df):
15
+ overall_score = uploaded_df["avg_score"].mean()
16
+ data = np.array(list(uploaded_df["avg_score"]))
17
+ bootstrap_res = st.bootstrap((data,),
18
+ np.mean,
19
+ confidence_level = 0.95,
20
+ n_resamples = 10000,
21
+ method = "percentile")
22
+ ci_high = bootstrap_res.confidence_interval.high
23
+ ci_low = bootstrap_res.confidence_interval.low
24
+
25
+ formatted_upper_diff = str(round(ci_high - overall_score, 2))
26
+ formatted_lower_diff = str(round(overall_score - ci_low, 2))
27
+
28
+ formatted_score = round(overall_score, 2)
29
+ formatted_ci = f"+{formatted_upper_diff}/-{formatted_lower_diff}"
30
+
31
+ return (formatted_score, formatted_ci)
32
+
33
+ def process_upload(file):
34
+ uploaded_df = pd.read_csv(file.name).dropna()
35
+ if "avg_score" not in list(uploaded_df.columns):
36
+ return "Upload failed: file must have column 'avg_score'."
37
+ overall_score, confidence_interval = get_model_stats(uploaded_df)
38
+ leaderboard_df = get_leaderboard_df()
39
+ model_name = file.name.split("gradio/")[1].split("/")[1].split(".csv")[0]
40
+ new_entry = {"Model": model_name, "Score": overall_score, "95% CI": confidence_interval}
41
+ leaderboard_df = leaderboard_df.append(new_entry, ignore_index = True)
42
+ leaderboard_df.to_csv(LEADERBOARD_FILE, index = False)
43
+ return "Upload complete! The leaderboard has been updated."
44
+
45
+ #theme = gr.themes.Default(radius_size = "none")
46
+ def create_ui():
47
+ text_size = gr.themes.sizes.text_lg
48
+ # load theme from theme.json
49
+ theme = gr.themes.Default.load("theme.json")
50
+ # set text size to large
51
+ theme.text_size = text_size
52
+ with gr.Blocks(theme = theme) as demo:
53
+ with gr.Row():
54
+ gr.Image("https://ai.stanford.edu/wp-content/themes/sail/img/logo.png",
55
+ show_label=False,
56
+ show_download_button=False,
57
+ container=False,
58
+ min_width=200,
59
+ scale=0)
60
+ gr.Image("https://crfm.stanford.edu/static/img/header/crfm-rgb.png",
61
+ show_label = False,
62
+ show_download_button = False,
63
+ container = False,
64
+ min_width = 200,
65
+ scale = 0)
66
+ gr.Markdown(
67
+ """
68
+ # **RubricEval: A Scalable Human-LLM Evaluation Framework for Open-Ended Tasks**
69
+ ######
70
+ """)
71
+ with gr.TabItem("Leaderboard"):
72
+ overall_leaderboard_table = gr.Dataframe(get_leaderboard_df,
73
+ gr.Timer(5),
74
+ column_widths = ["33.3%", "33.3%", "33.3%"],
75
+ height = 600)
76
+ gr.Markdown(
77
+ """
78
+ ######
79
+
80
+ ## RubricEval leaderboard statistics (Overall)
81
+ """
82
+ )
83
+ gr.Image("lb_stats.png",
84
+ show_label = False,
85
+ show_download_button = False,
86
+ width = 800)
87
+ gr.Markdown(
88
+ """
89
+ ######
90
+
91
+ ## RubricEval scores by category
92
+ """
93
+ )
94
+ gr.Image("category_scores.png",
95
+ show_label = False,
96
+ show_download_button = False)
97
+ with gr.TabItem("About"):
98
+ gr.Image("eval_about.jpg",
99
+ show_label = False,
100
+ show_download_button = False)
101
+ with gr.Accordion("What is RubricEval?"):
102
+ gr.Markdown(
103
+ """
104
+ ######
105
+ #### Overview
106
+ RubricEval is a framework for evaluating instruction-following models.
107
+ The core idea is to create example-specific rubrics designed by human experts, which are then applied by an GPT-4o to evaluate model outputs at scale. This process results in more scalable, trustworthy, and interpretable evaluations of language models.
108
+
109
+ #### Features
110
+ **Open-Ended:** The responses of chat models are open-ended in nature, and a small set of reference
111
+ answers often can’t capture all acceptable responses. This is a key limitation of reference-based
112
+ evaluators like BLEU and BERTScore.
113
+
114
+ **Multidimensional:** Responses can be good and bad in different ways, which isn’t captured by "head
115
+ to head" evaluators like Chatbot Arena and AlpacaEval that simply decide if one response is better
116
+ than another generally.
117
+
118
+ **Absolute:** Evaluators like Chatbot Arena and AlpacaEval use win rates based on pairwise comparisons.
119
+ This means that we don’t know how good a model is in absolute terms. For example, a model may
120
+ have a low win rate against GPT-4o but still be formidable, and the highest win rate model may not
121
+ be perfect despite topping the leaderboard.
122
+
123
+ **Varying Criteria:** The criteria for what makes a good response is different for each instruction. While
124
+ HELM Instruct is open-ended, multidimensional, and absolute, it uses the same set of scoring criteria
125
+ for each instruction, missing nuances at the instruction level. Most pairwise comparison evaluators
126
+ may implicitly consider varying criteria for each instruction, but these criteria are not explicitly laid
127
+ out (WildBench is a notable exception).
128
+
129
+ **Feedback:** To the best of our knowledge, no current language model evaluation system provides
130
+ textual feedback on a model’s overall strengths and weaknesses with respect to some set of
131
+ instructions. However, we believe that such feedback would be highly valuable for model developers.
132
+ Evaluation is a key piece of iterative model development, and textual feedback could provide insight
133
+ on what exactly needs to be improved rather than solely a score which is hard to interpret.
134
+ ######
135
+ """)
136
+ gr.Image("feature_comp.png",
137
+ show_label = False,
138
+ show_download_button = False)
139
+ with gr.Accordion("Where do evaluation instructions come from?"):
140
+ gr.Markdown(
141
+ """
142
+ ######
143
+ We utilize a set of approximately 1,000 instructions from WildBench ([https://huggingface.co/spaces/allenai/WildBench](https://huggingface.co/spaces/allenai/WildBench)) which was made publicly available. From this, 392 of the hardest instructions were chosen via a GPT-4 based pairwise comparison method.
144
+
145
+ Using the WildBench dataset has three primary benefits:
146
+
147
+ 1) It contains a manually curated selection of instructions from real users.
148
+
149
+ 2) The instructions are well spread out across 11 categories, which is useful for benchmarking.
150
+
151
+ 3) Each instruction comes with user-defined criteria of what they’re looking for, which we can make use of directly in our framework
152
+ ######
153
+ """)
154
+ with gr.Accordion("How does RubricEval correlate with human preferences?"):
155
+ gr.Markdown(
156
+ """
157
+ ######
158
+ We used RubricEval to score 13 leading large language models across 11 categories and 392 instructions from WildBench.
159
+
160
+ Notably, the ranking of these models based on RubricEval scores correlates highly with the ranking of the same models using Chatbot Arena ELO ratings (spearman ρ = 0.98).
161
+ The main discordance is in the ranking of Claude 3 Opus (which is ranked relatively lower by RubricEval compared to Chatbot Arena).
162
+ RubricEval’s correlation of ρ = 0.98 with human preferences ties length-corrected AlpacaEval’s record 0.98 correlation, while being higher than regular AlpacaEval (ρ = 0.94), MT-Bench (ρ = 0.94), and MMLU (ρ = 0.87).
163
+ ######
164
+ """)
165
+ with gr.Accordion("Additional details"):
166
+ gr.Markdown(
167
+ """
168
+ ######
169
+ See our detailed report at [insert blog link].
170
+ ######
171
+ """)
172
+ with gr.Accordion("Citation"):
173
+ gr.Markdown(
174
+ """
175
+ ######
176
+ [insert citation]
177
+ ######
178
+ """)
179
+ with gr.TabItem("Submit Model"):
180
+ gr.Markdown(
181
+ """
182
+ ######
183
+ #### Want to add a model to this leaderboard?
184
+ #### 1. Run RubricEval locally for <$x (see [insert github link])
185
+ #### 2. Upload the evaluation file generated by RubricEval below. Note: the file name will be used as the model name.
186
+ #### 3. Wait ~5 seconds and refresh the leaderboard page to see that your model has been added!
187
+ ######
188
+ """)
189
+ model_submission = gr.File(file_types = [".csv"], file_count = "single")
190
+ model_submission.upload(fn = process_upload, inputs = [model_submission], outputs = [])
191
+
192
+ demo.launch()
193
+
194
+ if __name__ == "__main__":
195
+ create_ui()
category_scores.png ADDED
eval_about.jpg ADDED
feature_comp.png ADDED
lb_stats.png ADDED
leaderboard.csv ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Model,Score,95% CI
2
+ GPT-4 Omni,3.18,+0.06/-0.06
3
+ GPT-4 Turbo,3.1,+0.06/-0.06
4
+ Gemini 1.5 Pro,3.06,+0.07/-0.07
5
+ Gemini 1.5 Flash,2.98,+0.07/-0.07
6
+ Llama 3 70B,2.9,+0.07/-0.07
7
+ Claude 3 Opus,2.86,+0.08/-0.08
8
+ Claude 3 Sonnet,2.79,+0.08/-0.08
9
+ Claude 3 Haiku,2.73,+0.08/-0.08
10
+ Gemini 1.0 Pro,2.56,+0.07/-0.07
11
+ Llama 3 8B,2.56,+0.07/-0.07
12
+ GPT-3.5 Turbo,2.52,+0.08/-0.08
13
+ Gemma 7B,2.14,+0.07/-0.07
14
+ Gemma 2B,1.83,+0.16/-0.16
theme.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"theme": {"text_size": "20px", "background_fill_primary": "white", "background_fill_primary_dark": "*neutral_950", "background_fill_secondary": "*neutral_50", "background_fill_secondary_dark": "*neutral_900", "block_background_fill": "*background_fill_primary", "block_background_fill_dark": "*neutral_800", "block_border_color": "*border_color_primary", "block_border_color_dark": "*border_color_primary", "block_border_width": "1px", "block_border_width_dark": "1px", "block_info_text_color": "*body_text_color_subdued", "block_info_text_color_dark": "*body_text_color_subdued", "block_info_text_size": "*text_sm", "block_info_text_weight": "400", "block_label_background_fill": "*background_fill_primary", "block_label_background_fill_dark": "*background_fill_secondary", "block_label_border_color": "*border_color_primary", "block_label_border_color_dark": "*border_color_primary", "block_label_border_width": "1px", "block_label_border_width_dark": "1px", "block_label_margin": "0", "block_label_padding": "*spacing_sm *spacing_lg", "block_label_radius": "calc(*radius_lg - 1px) 0 calc(*radius_lg - 1px) 0", "block_label_right_radius": "0 calc(*radius_lg - 1px) 0 calc(*radius_lg - 1px)", "block_label_shadow": "*block_shadow", "block_label_text_color": "*neutral_500", "block_label_text_color_dark": "*neutral_200", "block_label_text_size": "*text_sm", "block_label_text_weight": "400", "block_padding": "*spacing_xl calc(*spacing_xl + 2px)", "block_radius": "*radius_lg", "block_shadow": "none", "block_shadow_dark": "none", "block_title_background_fill": "none", "block_title_background_fill_dark": "none", "block_title_border_color": "none", "block_title_border_color_dark": "none", "block_title_border_width": "0px", "block_title_border_width_dark": "0px", "block_title_padding": "0", "block_title_radius": "none", "block_title_text_color": "*neutral_500", "block_title_text_color_dark": "*neutral_200", "block_title_text_size": "*text_md", "block_title_text_weight": "400", "body_background_fill": "*background_fill_primary", "body_background_fill_dark": "*background_fill_primary", "body_text_color": "*neutral_700", "body_text_color_dark": "*neutral_200", "body_text_color_subdued": "*neutral_400", "body_text_color_subdued_dark": "*neutral_500", "body_text_size": "*text_md", "body_text_weight": "400", "border_color_accent": "*primary_300", "border_color_accent_dark": "*neutral_600", "border_color_primary": "*neutral_200", "border_color_primary_dark": "*neutral_700", "button_border_width": "*input_border_width", "button_border_width_dark": "*input_border_width", "button_cancel_background_fill": "*button_secondary_background_fill", "button_cancel_background_fill_dark": "*button_secondary_background_fill", "button_cancel_background_fill_hover": "*button_cancel_background_fill", "button_cancel_background_fill_hover_dark": "*button_cancel_background_fill", "button_cancel_border_color": "*button_secondary_border_color", "button_cancel_border_color_dark": "*button_secondary_border_color", "button_cancel_border_color_hover": "*button_cancel_border_color", "button_cancel_border_color_hover_dark": "*button_cancel_border_color", "button_cancel_text_color": "*button_secondary_text_color", "button_cancel_text_color_dark": "*button_secondary_text_color", "button_cancel_text_color_hover": "*button_cancel_text_color", "button_cancel_text_color_hover_dark": "*button_cancel_text_color", "button_large_padding": "*spacing_lg calc(2 * *spacing_lg)", "button_large_radius": "*radius_lg", "button_large_text_size": "*text_lg", "button_large_text_weight": "500", "button_primary_background_fill": "*primary_200", "button_primary_background_fill_dark": "*primary_700", "button_primary_background_fill_hover": "*button_primary_background_fill", "button_primary_background_fill_hover_dark": "*button_primary_background_fill", "button_primary_border_color": "*primary_200", "button_primary_border_color_dark": "*primary_600", "button_primary_border_color_hover": "*button_primary_border_color", "button_primary_border_color_hover_dark": "*button_primary_border_color", "button_primary_text_color": "*primary_600", "button_primary_text_color_dark": "white", "button_primary_text_color_hover": "*button_primary_text_color", "button_primary_text_color_hover_dark": "*button_primary_text_color", "button_secondary_background_fill": "*neutral_200", "button_secondary_background_fill_dark": "*neutral_600", "button_secondary_background_fill_hover": "*neutral_300", "button_secondary_background_fill_hover_dark": "*neutral_500", "button_secondary_border_color": "*neutral_200", "button_secondary_border_color_dark": "*neutral_600", "button_secondary_border_color_hover": "*button_secondary_border_color", "button_secondary_border_color_hover_dark": "*button_secondary_border_color", "button_secondary_text_color": "*neutral_700", "button_secondary_text_color_dark": "white", "button_secondary_text_color_hover": "*button_secondary_text_color", "button_secondary_text_color_hover_dark": "*button_secondary_text_color", "button_shadow": "none", "button_shadow_active": "none", "button_shadow_hover": "none", "button_small_padding": "*spacing_sm calc(2 * *spacing_sm)", "button_small_radius": "*radius_lg", "button_small_text_size": "*text_md", "button_small_text_weight": "400", "button_transition": "background-color 0.2s ease", "checkbox_background_color": "*background_fill_primary", "checkbox_background_color_dark": "*neutral_800", "checkbox_background_color_focus": "*checkbox_background_color", "checkbox_background_color_focus_dark": "*checkbox_background_color", "checkbox_background_color_hover": "*checkbox_background_color", "checkbox_background_color_hover_dark": "*checkbox_background_color", "checkbox_background_color_selected": "*secondary_600", "checkbox_background_color_selected_dark": "*secondary_600", "checkbox_border_color": "*neutral_300", "checkbox_border_color_dark": "*neutral_700", "checkbox_border_color_focus": "*secondary_500", "checkbox_border_color_focus_dark": "*secondary_500", "checkbox_border_color_hover": "*neutral_300", "checkbox_border_color_hover_dark": "*neutral_600", "checkbox_border_color_selected": "*secondary_600", "checkbox_border_color_selected_dark": "*secondary_600", "checkbox_border_radius": "*radius_sm", "checkbox_border_width": "*input_border_width", "checkbox_border_width_dark": "*input_border_width", "checkbox_check": "url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\")", "checkbox_label_background_fill": "*button_secondary_background_fill", "checkbox_label_background_fill_dark": "*button_secondary_background_fill", "checkbox_label_background_fill_hover": "*button_secondary_background_fill_hover", "checkbox_label_background_fill_hover_dark": "*button_secondary_background_fill_hover", "checkbox_label_background_fill_selected": "*checkbox_label_background_fill", "checkbox_label_background_fill_selected_dark": "*checkbox_label_background_fill", "checkbox_label_border_color": "*border_color_primary", "checkbox_label_border_color_dark": "*border_color_primary", "checkbox_label_border_color_hover": "*checkbox_label_border_color", "checkbox_label_border_color_hover_dark": "*checkbox_label_border_color", "checkbox_label_border_width": "*input_border_width", "checkbox_label_border_width_dark": "*input_border_width", "checkbox_label_gap": "*spacing_lg", "checkbox_label_padding": "*spacing_md calc(2 * *spacing_md)", "checkbox_label_shadow": "none", "checkbox_label_text_color": "*body_text_color", "checkbox_label_text_color_dark": "*body_text_color", "checkbox_label_text_color_selected": "*checkbox_label_text_color", "checkbox_label_text_color_selected_dark": "*checkbox_label_text_color", "checkbox_label_text_size": "*text_md", "checkbox_label_text_weight": "400", "checkbox_shadow": "*input_shadow", "color_accent": "*primary_500", "color_accent_soft": "*primary_50", "color_accent_soft_dark": "*neutral_700", "container_radius": "*radius_lg", "embed_radius": "*radius_md", "error_background_fill": "#fee2e2", "error_background_fill_dark": "*background_fill_primary", "error_border_color": "#fecaca", "error_border_color_dark": "*border_color_primary", "error_border_width": "1px", "error_border_width_dark": "1px", "error_text_color": "#ef4444", "error_text_color_dark": "#ef4444", "form_gap_width": "0px", "input_background_fill": "*neutral_100", "input_background_fill_dark": "*neutral_700", "input_background_fill_focus": "*secondary_500", "input_background_fill_focus_dark": "*secondary_600", "input_background_fill_hover": "*input_background_fill", "input_background_fill_hover_dark": "*input_background_fill", "input_border_color": "*border_color_primary", "input_border_color_dark": "*border_color_primary", "input_border_color_focus": "*secondary_300", "input_border_color_focus_dark": "*neutral_700", "input_border_color_hover": "*input_border_color", "input_border_color_hover_dark": "*input_border_color", "input_border_width": "0px", "input_border_width_dark": "0px", "input_padding": "*spacing_xl", "input_placeholder_color": "*neutral_400", "input_placeholder_color_dark": "*neutral_500", "input_radius": "*radius_lg", "input_shadow": "none", "input_shadow_dark": "none", "input_shadow_focus": "*input_shadow", "input_shadow_focus_dark": "*input_shadow", "input_text_size": "*text_md", "input_text_weight": "400", "layout_gap": "*spacing_xxl", "link_text_color": "*secondary_600", "link_text_color_active": "*secondary_600", "link_text_color_active_dark": "*secondary_500", "link_text_color_dark": "*secondary_500", "link_text_color_hover": "*secondary_700", "link_text_color_hover_dark": "*secondary_400", "link_text_color_visited": "*secondary_500", "link_text_color_visited_dark": "*secondary_600", "loader_color": "*color_accent", "loader_color_dark": "*color_accent", "name": "base", "neutral_100": "#f5f5f4", "neutral_200": "#e7e5e4", "neutral_300": "#d6d3d1", "neutral_400": "#a8a29e", "neutral_50": "#fafaf9", "neutral_500": "#78716c", "neutral_600": "#57534e", "neutral_700": "#44403c", "neutral_800": "#292524", "neutral_900": "#1c1917", "neutral_950": "#0f0e0d", "panel_background_fill": "*background_fill_secondary", "panel_background_fill_dark": "*background_fill_secondary", "panel_border_color": "*border_color_primary", "panel_border_color_dark": "*border_color_primary", "panel_border_width": "0", "panel_border_width_dark": "0", "primary_100": "#e0f2fe", "primary_200": "#bae6fd", "primary_300": "#7dd3fc", "primary_400": "#38bdf8", "primary_50": "#f0f9ff", "primary_500": "#0ea5e9", "primary_600": "#0284c7", "primary_700": "#0369a1", "primary_800": "#075985", "primary_900": "#0c4a6e", "primary_950": "#0b4165", "prose_header_text_weight": "500", "prose_text_size": "*text_md", "prose_text_weight": "400", "radio_circle": "url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\")", "radius_lg": "3px", "radius_md": "3px", "radius_sm": "3px", "radius_xl": "3px", "radius_xs": "3px", "radius_xxl": "3px", "radius_xxs": "3px", "secondary_100": "#e0f2fe", "secondary_200": "#bae6fd", "secondary_300": "#7dd3fc", "secondary_400": "#38bdf8", "secondary_50": "#f0f9ff", "secondary_500": "#0ea5e9", "secondary_600": "#0284c7", "secondary_700": "#0369a1", "secondary_800": "#075985", "secondary_900": "#0c4a6e", "secondary_950": "#0b4165", "section_header_text_size": "*text_md", "section_header_text_weight": "400", "shadow_drop": "rgba(0,0,0,0.05) 0px 1px 2px 0px", "shadow_drop_lg": "0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)", "shadow_inset": "rgba(0,0,0,0.05) 0px 2px 4px 0px inset", "shadow_spread": "3px", "shadow_spread_dark": "1px", "slider_color": "*primary_600", "slider_color_dark": "*primary_600", "spacing_lg": "8px", "spacing_md": "6px", "spacing_sm": "4px", "spacing_xl": "10px", "spacing_xs": "2px", "spacing_xxl": "16px", "spacing_xxs": "1px", "stat_background_fill": "*primary_300", "stat_background_fill_dark": "*primary_500", "table_border_color": "*neutral_300", "table_border_color_dark": "*neutral_700", "table_even_background_fill": "white", "table_even_background_fill_dark": "*neutral_950", "table_odd_background_fill": "*neutral_50", "table_odd_background_fill_dark": "*neutral_900", "table_radius": "*radius_lg", "table_row_focus": "*color_accent_soft", "table_row_focus_dark": "*color_accent_soft", "text_lg": "20px", "text_md": "16px", "text_sm": "14px", "text_xl": "24px", "text_xs": "12px", "text_xxl": "28px", "text_xxs": "10px"}, "version": "0.0.1"}