← Back to all sparks
Q

querychat

ANALYTICS
Velocity0.0

Filter and Query Data Frames in 'shiny' Using an LLM Chat Interface

Natural-language data querying that outgrew both single tables and Shiny.

natural-language-queryllm-toolingdashboardssqlpositdata-analysis
Current state
querychat puts a natural-language chat interface over a data source, translating questions into SQL and filtering a dashboard from the result. It ships as parallel Python and R packages from one repository, with the Python side consistently ahead and the R side receiving ported features in batches — so the feed interleaves two version series that should not be read as one. Recent releases have expanded both what it can be embedded in and what it can be asked.
Where it's heading
Two expansions define this window. The package broke out of Shiny to support Gradio, Dash and Streamlit, and broke out of the single-table model to reason across related tables with joins and cross-table aggregation. Alongside those, the answer format widened from tables to inline charts through ggsql. The remaining work visible here is polish on the chat experience itself — cancellation, suggestion cards, deferred initialisation for per-user credentials — which suggests production deployment rather than demo use is now driving the roadmap.
Prediction
Expect the R package to continue absorbing Python-side features on a lag, with multi-table support the most likely next port given it is the largest capability the two now differ on.

Recent moves

  1. 1mo ago

    querychat reasons across multiple related tables

    ⚡ SPARK

    The release that lifts querychat off a single table: additional tables are registered explicitly or pulled wholesale from a SQLAlchemy engine or Ibis backend, and the model can then join and aggregate across them. Per-table reactive state is exposed so a dashboard can react to each independently. It is the largest capability change in this window and the one the R package has yet to receive.

    View source ↗
  2. 2mo ago

    Stream cancellation and a clearer name for the filtering tool

    Adds a stop button during LLM streaming, cancellable by click or Escape and enabled by default, plus a rename of the dashboard-filtering tool group from update to filter with the old name still accepted. Suggestion prompts also render as interactive cards more reliably across providers. Small items, but cancellation is the kind of control users notice immediately when a model starts producing the wrong answer at length.

    View source ↗
  3. 2mo ago

    ggsql visualization tool and deferred chat client initialization

    Introduces the ggsql-based visualization tool on the Python side and allows the chat client to be initialised lazily, alongside fixes for Snowflake semantic view discovery and several dependency constraints. Charts as an answer format is the substantive item; the rest is the packaging work of depending on a fast-moving sibling project. Published within seconds of the R 0.3.0 release carrying the same feature.

    View source ↗
  4. 2mo ago

    R package gains inline charts and stream cancellation

    Brings the visualize tool to the R package, letting the model answer with interactive charts by writing ggsql rather than returning only tables, with fullscreen expansion and query inspection. Stream cancellation arrives in the same release. This is the R side catching up with the Python releases published the same minute, the standard rhythm of this dual-language project.

    View source ↗
  5. 6mo ago

    Deferred data source initialization for per-user connections

    Allows the data source to be supplied at server time rather than construction time, so it can depend on session-specific authentication or a per-user database connection. Narrow in surface but it unblocks multi-tenant deployment, where every user must see only their own data. One of several changes in this window aimed at real deployments rather than demos.

    View source ↗
  6. 7mo ago

    Gradio, Dash and Streamlit join Shiny as supported frameworks

    ⚡ SPARK

    The release that made querychat framework-agnostic, adding first-class Gradio, Dash and Streamlit support with per-framework quick-start and custom-layout entry points, plus new lazy data sources. For a package developed at Posit, shipping support for three competing frameworks is a deliberate choice about what querychat is for. It marks the point where it stopped being a Shiny feature and became a component.

    View source ↗