Spaces:
Running
Running
| title: ChartSage-4B Demo | |
| emoji: ๐ | |
| colorFrom: indigo | |
| colorTo: green | |
| sdk: static | |
| pinned: false | |
| license: apache-2.0 | |
| # ChartSage-4B live demo | |
| Give it a data table and ask for a chart. The page runs the request through the base model | |
| (`google/gemma-3-4b-it`) and through **ChartSage-4B** side by side, then **executes both | |
| pieces of generated code** and shows you the actual rendered charts. | |
| That last part is the point. This entry is not about producing plausible-looking code, it is | |
| about producing code that runs. On the public benchmark the base model writes code that | |
| crashes on 34 of 50 tasks, mostly because it tries to re-parse the table JSON, and it fails | |
| to terminate on 9 more. You can watch that happen here rather than take our word for it. | |
| - Model: https://huggingface.co/Jainamshahhh/chartsage-4b | |
| - Dataset (ChartForge, 117,600 verified rows): https://huggingface.co/datasets/Jainamshahhh/chartforge | |
| **The first two examples are real rows from the public TableBench evaluation set**, reproduced | |
| verbatim, and both are cases the base model actually fails: a 20-row league table where the request | |
| asks only for the top 5, and a 10-row table whose numbers carry thousands separators next to a | |
| filler column full of nulls. Use those. Tidy little synthetic tables are not where the difference | |
| lives, and an earlier version of this page defaulted to one, which showed parity and proved nothing. | |
| The last two examples are easy synthetic tables where both models succeed. They stay on the page on | |
| purpose, because a demo that only ever shows the base losing invites the reader to assume it was | |
| arranged that way. | |
| The container has **pandas and numpy installed**, matching the environment our reported numbers | |
| were measured in. This is deliberate: the base model reaches for pandas in most of its answers, so | |
| running it without pandas would make it fail for a reason that has nothing to do with the model, | |
| and the comparison would be worthless. | |
| The GPU backend scales to zero when idle, so the first request after a quiet period may take | |
| up to a minute to warm up. Generated code is executed in an isolated container with a hard | |
| timeout, matplotlib only. | |