First of all, you have the option to use any LLM like Gemini, Claude, OpenAI.
Secondly, when a person types a question, we send that question as well as some other information which is defined at the agentic layer like synonmys, custom calculations, joining information etc. The LLM will help in creating the base query, we get the base query from LLM. Then we add further required where clause to make sure there is row level data security. And then the user sees the data.
So far, no DATA as such has gone to LLM. Now once our application generates a viz in response to asked question, then on the chart (in the chat window) there is also an option called "Explain this chart". When clicked, then ONLY this aggregated query response data goes to LLM and gets some context about the generated response.
Hence this approach helps with - making sure there is less token usage and keep cost under control - secondly DATA as such never goes to the LLM. It goes ONLY when a person clicks on explain the chart