Skip to content

Chart Generation

The chart generation agent creates custom data visualizations based on user requests.

The agent uses this workflow:

  1. Receives a natural language request from the user
  2. Executes queries to obtain relevant data for the visualization
  3. Generates the requested chart(s)

Required:

  • message (string): The natural language question or request to send to the agent
  • data_product_id (string): The data product to query

Optional:

  • data_product_version (string): The data product version to query. Defaults to the active version when omitted.

The agent produces a series of thinking, tool call, tool return, and text blocks as it works through the user request. The final message, assuming no errors, is a string. The chart(s) generated are available as html and json vega configs with successful charting tool return blocks.

The agent is configured with 3 tools:

Retrieves the schema for tables in the data product. Optionally supports semantic search of sample values.

Key parameters:

  • data_product_id: The data product to get schema for
  • query: Optional semantic search query for sample values

Executes SQL queries against the data product’s database. The tool automatically handles result serialization and may limit rows/columns for very large results.

Key parameters:

  • data_product_id: The data product to query
  • sql: The SQL query to execute
  • result_table_name: A semantic name for the result table

Generates visualizations from an asset (a CSV produced by a prior SQL execution). The agent uses ChartGrammar — a structured chart configuration — by default; if the requested chart can’t be expressed in ChartGrammar, the agent falls back to providing custom Altair Python code via chart_code_snippet.

Key parameters:

  • asset_id (required): ID of the CSV asset containing the data
  • chart_grammar: Structured chart configuration (preferred path)
  • chart_code_snippet: Python function using Altair (fallback when ChartGrammar can’t express the chart; required with image_title)
  • image_title: Title for the chart (required with chart_code_snippet)
  • The agent always uses result tables from executed queries to answer questions (never synthesizes data)
  • For complex questions, the agent may execute multiple queries to explore the dataset or obtain intermediate results
  • When generating charts, it returns the first reasonable visualization without excessive iteration
  • Charts are generated using Altair and returned as JSON representations